Você está na página 1de 35

Banco de Dados

Modelo Relacional
Profa. Flvia Cristina Bernardini
* Slides Baseados no material elaborado pelos professores Eduardo R. Hruschka, Cristina D. A. Ciferri e Elaine Parros Machado

Modelo Relacional
Representa um BD como uma coleo de relaes Embasado na teoria dos conjuntos Relao (tabela):
Possui um nome nico uma tabela bi-dimensional Cada linha (tupla, registro) corresponde a uma entidade ou relacionamento particular descrita por atributos (campos)

Noes intuitivas de esquema e instncia:


Nome N#UFF Curso

Esquema

Paulo Isabella Joo

11111111 22222222 33333333

Computao Psicologia Eng. Produo

Instncia

Modelo Intuitivo
Nome N#UFF Curso

Tupla Paulo Isabella Joo Valor 11111111 22222222 33333333

Atributo Computao Psicologia Eng. Produo Relao

Caractersticas das Tabelas


cada coluna tem um nome distinto e representa um atributo, o qual, por sua vez, possui um domnio cada domnio possui VALOR ATMICO (cada valor no domnio indivisvel) - Ex: n. telefone, CPF, idade o valor null deve ser utilizado quando um atributo no possui valor ou seu valor no conhecido cada linha distinta e representa uma tupla a ordem das colunas/linhas irrelevante* uma n-tupla representa uma tupla que possui n valores (n chamado de grau da relao)
* Na implementao de um SGBDR existe uma ordem fsica de armazenamento das tuplas

Exemplo: Tabela Aluno


relao esquema: Aluno (RA, nome, endereo, sexo)
RA 935639 935632 933219 938904 934789 nome Adriana Zagalo Beatriz da Silva Antnio Nascimento Roberto Antonione endereo Rua Floriano Peixoto, 1234 Rua Itamb, 124 apto 62 bloco B Av. Castro Alves, 57 Av. Sunab Jatab, 3467 apto 32 sexo F F M M M

Carlos Alberto Bozato Rua Sucupira, 3452 apto 125

Outro exemplo:
Esquema de Relao Aluno:
Aluno = {Nome, RG, Idade}

Possvel relao:
R(Aluno) = { <Jos, 12345, 21>, <Pedro, 54321, 18>, <Paulo, 321321, 22> }

Esquema de Relao R (inteno) mudanas pouco freqentes Relao R(extenso) mais dinmica

Um pouco mais sobre valor atmico:


Valor Atmico - indivisvel e monovalorado:
valor atmico no pode ser recuperado por partes Por exemplo, endereo deve ser definido como um nico atributo no modelo relacional

Atributo Monovalorado - pode ter apenas um valor. Ex.:


Idade de aluno monovalorado Irmos de aluno multivalorado

Definies Formais
Esquema de Relao R
utilizado para descrever uma relao denotado por R(A1,A2,...,AN) formado por: nome de relao R
lista de atributos (A1,A2,...,AN)

para cada atributo Ai (1 i n)


dom(Ai) domnio: conjunto de valores atmicos

caracteriza a inteno do BD

Definies Formais ...


Relao R de R(A1,A2,...,AN)
representa a instncia (estado) da relao denotada por R(R):
R: pode ser vista como uma matriz (letras maisculas em negrito) R: esquema de relao r: uma entidade/relacionamento particular (tupla) de R (notao anloga quela usada para vetores, i.e., letras minsculas em negrito)

formada por um conjunto de n-tuplas (registros, instncias), i.e.:


R = {t1, t2, ... , tm} cada n-tupla t uma lista de n valores: t = <v1, v2, ..., vn> vi (1 i n) um elemento de dom(Ai) ou um valor nulo (i.e., null) t[Ai], t.Ai, t[i]: valor vi em t do atributo Ai

caracteriza a extenso do BD R(R) {dom(A1) x dom(A2) x ... x dom(AN) }

Definies Formais ...


R1 R2

Banco (Base) de Dados


R4 R3

...

Definies Formais ...


Esquema de banco de dados S:
conjunto de esquemas de relaes S = {R1, R2, ..., Rk} conjunto de restries de integridade (IC);

Estado do banco (base) de dados (BD):


conjunto de estados da relao, i.e.:
BD = {R1, R2, ..., Rk}, onde cada Ri um estado (extenso, instncia*) de Ri

os estados de Ri devem satisfazer s restries de integridade particulares especificadas em IC


* Note que na literatura o termo instncia tambm usado para se referir a tuplas/registros

Restries sobre uma Relao


Domnio Chave primria Integridade de entidade:
Restries de Integridade da Entidade Restries de Integridade Referencial

Restries sobre uma Relao ...


Domnio:
Para cada tupla, o valor de cada atributo Ai deve ser um valor atmico de dom(Ai) inteiro, caractere, cadeia de caracteres, etc. Nome e Definio lgica. Ex:
Nomes de Alunos: conjunto de todos os nomes possveis para pessoas; Cdigos de Disciplinas: conjunto dos cdigos das disciplinas oferecidas no RCT; Idade: conjunto de idades possveis para alunos

Tipo de dado e/ou formato. Ex:


Nomes de Alunos string de 60 caracteres Cdigos de Disciplinas string com trs letras seguidas de um trao e de 4 dgitos: RCT-0010 Idade inteiro entre 15 e 100

Restries sobre uma Relao ...


Chave primria:
deve ser possvel identificar univocamente cada tupla da relao relao um conjunto de tuplas e, pela teoria de conjuntos, todas as tuplas devem ser distintas para garantir esta propriedade de maneira eficiente, especifica-se uma Restrio de Unicidade definio de chaves

Superchaves e Chaves
Superchave:
subconjunto de atributos de R que identifique univocamente cada tupla combinao de valores no se repete para a superchave

Exemplo:
Aluno = {Nome, Idade, Curso, N#UFF} SCH1(Aluno) = {Nome, Curso, Idade} SCH2(Aluno) = {N#UFF, Nome}

Chave
uma superchave da qual no se pode retirar nenhum atributo e ainda preservar a propriedade de identificao unvoca (i.e., superchave de cardinalidade mnima)

Superchaves e Chaves ...


Chave Candidata:
pode existir mais de uma chave para uma mesma relao cada uma das chaves chamada de Chave Candidata:
CH1(Aluno) = {Nome} CH2(Aluno) = {N#UFF}

Chave Primria:
escolhida entre as chaves candidatas; a chave primria freqentemente a mais utilizada para acessos relao
CH(Aluno) = {N#UFF}

Restries sobre uma Relao ...


Restries de integridade:
Regras sobre os valores que podem ser armazenados nas relaes Tem por objetivo garantir a consistncia Quando definidas, devem ser sempre satisfeitas na base de dados Integridade de entidade e integridade referencial

Integridade de entidade:
a chave primria no pode ser nula em nenhuma tupla de qualquer relao se a chave for composta por mais de um atributo, nenhum deles pode ser nulo

Exemplo:

Esquema do BD Relacional
empregado (CPF_empregado, nome_empregado, cod_supervisor, sigla_depto, data_incio) dependente (CPF_empregado, nome_dependente, sexo_dependente) departamento (sigla_depto, nome_depto, CPF_empregado) projeto (nro_projeto, nome_projeto) controla (sigla_depto, nro_projeto) desenvolve (CPF_empregado, nro_projeto, horas_trabalhadas)

Restries entre duas Relaes


Integridade referencial:
mantm a consistncia entre tuplas de duas relaes; declara que se uma tupla t1 em uma relao R1 faz referncia a uma relao R2, ento t1 deve fazer referncia a uma tupla existente em R2 definida entre a chave estrangeira (FK) de uma relao esquema R1 e a chave primria (PK) de uma relao esquema R2 O que uma chave estrangeira?

Chave estrangeira
Antes de definirmos chave estrangeira, vejamos o que compatibilidade de domnio:
dados dois conjuntos de atributos quaisquer C e D, ambos so compatveis quando o primeiro atributo de C tem o mesmo domnio do primeiro atributo de D, o segundo atributo de C tem o mesmo domnio do segundo atributo de D, e assim por diante

Restries entre duas Relaes ...


FK de R1 chave estrangeira de R1, que faz referncia chave primria (PK) de R2, se:
os atributos de FK tm os mesmos domnios que os atributos de PK um valor de FK em uma tupla t1 do estado corrente de R1(R1) :
ocorre como um valor de PK para alguma tupla t2 no estado corrente R2(R2) (t1[FK]= t2[PK]) ou tem o valor null (t1[FK]= null).

Integridade Referencial
empregado (CPF_empregado, nome_empregado, cod_supervisor, sigla_depto, data_incio) dependente (CPF_empregado, nome_dependente, sexo_dependente) departamento (sigla_depto, nome_depto, CPF_empregado) projeto (nro_projeto, nome_projeto) controla (sigla_depto, nro_projeto) desenvolve (CPF_empregado, nro_projeto, horas_trabalhadas)

Restries versus Operaes


Operaes de modificao:
insert insero delete remoo update (ou modify) atualizao

Quando estas operaes so aplicadas, as restries de integridade especificadas no esquema do banco de dados relacional no devem ser violadas

Operao Insert
Fornece uma lista de valores de atributos para uma nova tupla t, que inserida em R Pode violar as seguintes restries:
Domnio Chave (valor idntico) Integridade de entidade (null) Integridade referencial

Soluo: Rejeitar a insero Enviar mensagem de erro ao usurio

Exemplos:
Inserir tupla em empregado com CPF=null viola restrio de integridade de entidade Inserir tupla em empregado com CPF j existente no BD viola restrio de chave Inserir tupla em empregado com nmero de departamento inexistente em departamento viola integridade referencial

Operao Delete
Remove uma ou mais tuplas Pode violar a integridade referencial quando as tuplas removidas forem referidas por chaves estrangeiras de outras tuplas Solues
rejeitar a remoo remover em cascata modificar valores dos atributos de referncia

Exemplos:
Remover tupla em empregado pode violar restries de integridade referencial:
Pode haver tuplas em outras relaes (dependente, departamento, desenvolve) que se referem a tupla em questo

Possveis solues: rejeitar a remoo, remover em cascata, alterar valores de atributos de referncia que causam a violao:
Remover uma tupla em departamento porque um empregado foi removido?

Operao Update
Altera valores de alguns atributos em tuplas; Pode violar as seguintes restries:
Domnio Chave (se atributo PK) Integridade de entidade (se atributo PK) Integridade referencial (se atributo FK)

Solues:
idem anteriores (para insert e delete)

Exerccio: Considere o seguinte DER para o BD EMPRESA:

Pode-se representar este DER pelo diagrama abaixo, que mostra um esquema do BD relacional EMPRESA={EMPREGADO, DEPARTAMENTO, DEPTO_LOCALIZAES, PROJETO,TRABALHA_EM, DEPENDENTE} no qual os atributos sublinhados representam as chaves primrias:

As restries de integridade referencial para o BD em questo so exibidas abaixo:

Assumamos agora o seguinte estado para esse BD:

Suponha que cada uma das seguintes operaes seja aplicada diretamente a este estado do BD EMPRESA. Discuta as restries violadas em cada operao (se houver) e mecanismos para forar a manuteno de tais restries:

(a) Inserir < 'Robert', 'F', 'Scott', '943775543', '21-JUN-42', '2365 Newcastle Rd, Bellaire, TX', M, 58000, '888665555', 1 > em EMPREGADO. (b) Inserir < 'ProductA', 4, 'Bellaire', 2 > em PROJETO. (c) Inserir < 'Production', 4, '943775543', '01-OCT-88' > em DEPARTAMENTO. (d) Inserir < '677678989', null, '40.0' > em TRABALHA_EM. (e) Inserir < '453453453', 'John', M, '12-DEC-60', 'SPOUSE' > em DEPENDENTES. (f) Remover as tuplas com ESSN= '333445555 de TRABALHA_EM. (g) Remover de EMPREGADO a tupla com SSN= '987654321'. (h) Remover de PROJETO a tupla com PNAME= 'ProductX'. (j) Modificar o valor do atributo SUPERSSN da tupla de EMPREGADO com SSN= '999887777' para '943775543'. (k) Modificar o valor do atributo HORAS da tupla de TRABALHA EM com ESSN= '999887777' e PNO= 10 para '5.0'.

Você também pode gostar