Introdução a
Bancos de Dados
Mirella M. Moro
◉
cada linha representa uma coleção de dados
relacionados
◉
cada linha de uma tabela representa um “fato”
que tipicamente corresponde a uma entidade ou
Modelo Relacional
Notações Modelo Relacional
NomeT2 (chave, atrib1, …, atribN)
NomeT1 (chave, atrib1, … , nomeRel)
nomeRel referencia NomeT2
OU
Tab1 (ch1, ch2, a, b, c)
Significa que o campo
ch1
sozinho não é suficiente
para identificar cada linha da tabela, e o mesmo se
aplica para
ch2
.
É o par que identifica a tupla
Exemplo real: carteira de identidade é identificada
pelo número e o órgão emissor.
Como faz para uma tabela Tab2
Tab1 (ch1, ch2, a, b, c)
Tab2
(ch, d, e, f)
d referencia Tab1:ch1
e referencia Tab1:ch2
Funciona????
Funciona?
ch d e f 1 A G 1316602 2 A H 3268131 3 B I 9877315 4 C J 2197213 5 D K 9843289 6 E L 3213688 ch1 ch2 a b c A G 21 96 67 A H 41 51 53 B I 41 63 34 C L 51 71 52 D J 64 76 93 E K 52 42 65Tab1
Tab2
Tab1 (ch1, ch2, a, b, c)
Tab2
(ch, d, e, f)
(d,e) referencia Tab1(ch1,ch2)
Funciona????
Funciona?
ch d e f 1 A G 1316602 2 A H 3268131 3 B I 9877315 4 C J 2197213 5 D K 9843289 6 E L 3213688 ch1 ch2 a b c A G 21 96 67 A H 41 51 53 B I 41 63 34 C L 51 71 52 D J 64 76 93 E K 52 42 65Tab1
Tab2
RELACIONAL
Exemplo Elmasri/ Navathe
Exemplo Elmasri/ Navathe
Exemplo Elmasri/ Navathe
Operações sobre Relações
As operações sobre um BD relacional podem ser
classificadas em
Operações de recuperação (consulta = select)
Operações de atualização
Inserção (insert)
Remoção (delete)
Operações sobre Relações
Inserção (insert)
Adiciona uma nova tupla (ou várias)
Remoção (delete)
Remove uma tupla da relação
Modificação (update)
Altera os dados de uma tupla
Em qualquer operação, a integridade do
banco de dados relacional deve ser mantida
Restrições de Integridade
NÃO
podem ser violadas
Inserção (tentativas de violar uma restrição de integridade)
Restrição de Domínio: valor fora do domínio Restrição de Chave: valor já existe
Restrição de integridade de entidade: (parte) chave primária null
Restrição de integridade referencial: chave estrangeira → tupla inexistente
Ação default: rejeitar inserção (com explicação)
Inserir <‘Mirella’, ‘M’, ‘Moro’, 1234567890, ‘1960-04-05’,
‘6347 Whatever’, 28000, nulo, 4> em Empregado
Inserir <‘Cecilia’, ‘F’, ‘Kolonsky’, nulo, ‘1960-04-05’,
‘6347 Whatever’, 28000, 12312312345, 4> em Empregado
Inserir <‘Alicia’, ‘J’, ‘Zelaya’, 1234567890, ‘1960-04-05’,
Restrições de Integridade
NÃO
podem ser violadas
Modificação
Modificar o valor de um atributo que não é chave primária ou estrangeira não causa problemas (se o valor for do domínio; e se for null, que tal valor seja permitido)
Modificar a chave primária é igual a excluir uma tupla e inserir outra
Restrições de Integridade
NÃO
podem ser violadas
Remoção
E se tupla excluída é referenciada por chaves estrangeiras??? Ação default: bloqueia/rejeitar a remoção (com explicação) OUTRAS OPÇÕES????
Propagar remoção de tuplas que violem uma restrição de integridade referencial – Efeito cascata
Opções de Remoção da RIR
A cada RIR R
1[FK] → R
2[PK] é possível associar uma opção
de remoção que especifica como a remoção de uma tupla
de R
2é executada em relação a R
1As opções de remoção possíveis são:
bloqueio
propagação
substituição por nulos
Notação:
Exemplo Elmasri/ Navathe
Exemplo Elmasri/ Navathe