Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

03 - Modelo Relacional

Fazer download em ppt, pdf ou txt
Fazer download em ppt, pdf ou txt
Você está na página 1de 43

Modelo Relacional

Tiago Eduardo da Silva

Tiago Eduardo Banco de Dados


Histórico

Histórico
• Foi introduzido por Codd (1970);
• Tornou-se um padrão de fato para aplicações
comerciais, devido a sua simplicidade e performance.
• É um modelo formal, baseado na teoria matemática
das relações.
• Um dos SGBD's precursores que implementaram este
modelo foi o System R (IBM). Baseado em seus
conceitos surgiram: DB2 (IBM), SQL-DS (IBM), Oracle,
Informix, Ingres, Sybase entre outros.

Tiago Eduardo Banco de Dados


Conceitos

Conceitos do Modelo Relacional

• O modelo relacional representa os dados num


BD como uma coleção de tabelas (relações);
• Cada tabela terá um nome, que será único, e um
conjunto de atributos com seus respectivos
nomes e domínios;
• Todos os valores de uma coluna são do mesmo
tipo de dados.

Tiago Eduardo Banco de Dados


Conceitos

Exemplo

• Exemplo de uma tabela de empregados em uma


empresa:

Ex. Empregado
Matr Nome Endereço Função Salário Depart
100 Ana R. Pedro I, 12, A. Branco Secretária 500,00 D1
250 Pedro R. J. Silva, 24, Liberdade Engenheiro 1500,00 D1
108 André R. Italia, 33, B. Nações Técnico 950,00 D2
210 Paulo R. Pará, 98, B. Estados Engenheiro 1810,00 D2
105 Sônia R. Oliveira, 76, A. Branco Engenheiro 2500,00 D1

Tiago Eduardo Banco de Dados


Conceitos

Conceitos do Modelo Relacional


• Terminologia:
– Na terminologia de BD Relacional, uma linha é chamada
tupla, um nome de coluna é chamado de atributo e cada
tabela é chamada de relação.
• Esquema de Relação
– Um esquema de relação R, denotado por R(A1,A2,...,An), é um
conjunto de atributos.

Ex.:
Empregado(Matrícula, Nome, Endereço, Função, Salário)

Tiago Eduardo Banco de Dados


Conceitos

Conceitos do Modelo Relacional


• Domínio:
– Um domínio D é um conjunto de valores atômicos.
• Fone: conjunto de 10 dígitos
• CPF: conjunto de 7 dígito
• Idade_Empregado: 16 ≤ idade ≤ 70
– A cada domínio está associado um tipo de dados ou formato.
• Fone: (ddd) dddd dddd ; onde d = {0,1,2,3,4,5,6,7,8,9}
– O grau de uma relação é o número de atributos que seu esquema
contém.
• Seja o esquema Estudante(matricula, nome, fone, idade, curso) => grau = 5

Tiago Eduardo Banco de Dados


Conceitos

Conceitos do Modelo Relacional


• Características de Relações:
– A ordem das tuplas e dos atributos não tem
importância;
– Todo atributo possui valor atômico;

– Cada atributo numa relação tem um nome que é único


dentro de uma relação;
– Todas as tuplas devem ser únicas (conjunto).

Tiago Eduardo Banco de Dados


Conceitos

Conceitos do Modelo Relacional


• Características de Relações:
– A ordem das tuplas e dos atributos não tem
importância;
– Todo atributo possui valor atômico;

– Cada atributo numa relação tem um nome que é único


dentro de uma relação;
– Todas as tuplas devem ser únicas (conjunto).

Tiago Eduardo Banco de Dados


Conceitos

Conceitos do Modelo Relacional


• Características de Relações:
– A ordem das tuplas e dos atributos não tem
importância;
– Todo atributo possui valor atômico;

– Cada atributo numa relação tem um nome que é único


dentro de uma relação;
– Todas as tuplas devem ser únicas (conjunto).

Tiago Eduardo Banco de Dados


Conceitos

Conceitos do Modelo Relacional


• Características de Relações:
– A ordem das tuplas e dos atributos não tem
importância;
– Todo atributo possui valor atômico;

– Cada atributo numa relação tem um nome que é único


dentro de uma relação;
– Todas as tuplas devem ser únicas (conjunto).

Tiago Eduardo Banco de Dados


Conceitos

Conceitos do Modelo Relacional


• Chaves de uma relação:
– Valem os mesmos conceitos de atributo chave visto no MER;
– Convenciona-se sublinhar os atributos que compõem a chave primária.
Ex.: Empregado(Matrícula, Nome, Endereço, Função, Salário)
– Um mesmo atributo pode ter nomes diferentes nas diversas relações em
que participa.
Ex.: Empregado(Matrícula, Nome, Endereço, Função, Salário, Dep) e
Departamento(CodDepart, Nome, Endereço)
– Atributos que representam diferentes conceitos podem ter o mesmo nome.
Ex: Ver os atributos Nome do exemplo anterior.

Tiago Eduardo Banco de Dados


Conceitos

Conceitos do Modelo Relacional


• Um conjunto de atributos de uma relação R1 é uma
chave estrangeira se satisfaz às seguintes regras:
– Os atributos da chave estrangeira têm o mesmo domínio dos
atributos da chave primária de outra relação R2;
– Um valor da chave estrangeira em uma tupla t1 de R1 possui o
mesmo valor da chave primária para alguma tupla t2 em R2 ou é
NULO.
• A integridade referencial estabelece que todo valor de chave
estrangeira numa relação deve corresponder a um valor de
chave primária de uma segunda relação ou deve ser nulo.

Tiago Eduardo Banco de Dados


Conceitos

Conceitos do Modelo Relacional


• Uma chave estrangeira pode referenciar-se à sua própria
relação (auto-relacionamento).
Ex.: Empregado(Matr, Nome, Salário, Matr_supervisor)
• As restrições de integridade devem ser implementadas pelo
SGBD. Muitos SGBD’s implementam integridade de chave e de
entidade, mas não implementam integridade referencial.
• Estudaremos as integridades semânticas mais a frente.
Ex.: “Nenhum Empregado pode ganhar mais que seu gerente”

Tiago Eduardo Banco de Dados


Conceitos

Conceitos do Modelo Relacional


• Restrições de Integridade:
– Integridade de Chave: Toda tupla tem um conjunto de atributos
que a identifica de maneira única na relação;
– Integridade de Entidade: Nenhum valor de chave primária
poderá ser NULO.
– Integridade Referencial: Uma relação pode ter um conjunto de
atributos que contêm valores com mesmo domínio de um
conjunto de atributos que forma a chave primária de uma outra
relação. Este conjunto é chamado de chave estrangeira.

Tiago Eduardo Banco de Dados


Conceitos

Conceitos do Modelo Relacional


Exemplo de Integridade Referencial
Departamento
CodDep Nome MatrGerent
D2 Produção 210
D1 Custos 105
D5 Pessoal NULL

Empregado
Matr Nome Endereço Função Salário Depart
100 Ana R. Pedro I, 12, A. Branco Secretária 500,00 D1
250 Pedro R. J. Silva, 24, Liberdade Engenheiro 1500,00 D1
108 André R. Italia, 33, B. Nações Técnico 950,00 D2
210 Paulo R. Pará, 98, B. Estados Engenheiro 1810,00 D2
105 Sônia R. Oliveira, 76, A. Branco Engenheiro 2500,00 D1

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Inserção:
– Inserir <‘102’, ‘André’, NULL, ‘Engenheiro’, ‘1.980’, ‘D2’>

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Inserção:
– Inserir <‘102’, ‘André’, NULL, ‘Engenheiro’, ‘1.980’, ‘D2’>
é aceito sem problemas.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Inserção:
– Inserir <‘102’, ‘André’, NULL, ‘Engenheiro’, ‘1.980’, ‘D2’>
é aceito sem problemas.

– Inserir <‘100’, ‘Maria’, NULL, ‘Técnica’, ‘950’, ‘D1’>

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Inserção:
– Inserir <‘102’, ‘André’, NULL, ‘Engenheiro’, ‘1.980’, ‘D2’>
é aceito sem problemas.

– Inserir <‘100’, ‘Maria’, NULL, ‘Técnica’, ‘950’, ‘D1’>


viola a restrição de chave.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Inserção:
– Inserir <‘102’, ‘André’, NULL, ‘Engenheiro’, ‘1.980’, ‘D2’>
é aceito sem problemas.

– Inserir <‘100’, ‘Maria’, NULL, ‘Técnica’, ‘950’, ‘D1’>


viola a restrição de chave.

– Inserir <NULL, ‘Cecília’, NULL, ‘Engenheiro’, ‘1.950’, ‘D1’>

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Inserção:
– Inserir <‘102’, ‘André’, NULL, ‘Engenheiro’, ‘1.980’, ‘D2’>
é aceito sem problemas.

– Inserir <‘100’, ‘Maria’, NULL, ‘Técnica’, ‘950’, ‘D1’>


viola a restrição de chave.

– Inserir <NULL, ‘Cecília’, NULL, ‘Engenheiro’, ‘1.950’, ‘D1’>


viola a restrição de integridade de entidade

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Inserção:
– Inserir <‘102’, ‘André’, NULL, ‘Engenheiro’, ‘1.980’, ‘D2’>
é aceito sem problemas.

– Inserir <‘100’, ‘Maria’, NULL, ‘Técnica’, ‘950’, ‘D1’>


viola a restrição de chave.

– Inserir <NULL, ‘Cecília’, NULL, ‘Engenheiro’, ‘1.950’, ‘D1’>


viola a restrição de integridade de entidade

– Inserir <‘109’, ‘Mauro’, ‘Rua 4’, ‘Técnico’, ‘980’, ‘B6’>

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Inserção:
– Inserir <‘102’, ‘André’, NULL, ‘Engenheiro’, ‘1.980’, ‘D2’>
é aceito sem problemas.

– Inserir <‘100’, ‘Maria’, NULL, ‘Técnica’, ‘950’, ‘D1’>


viola a restrição de chave.

– Inserir <NULL, ‘Cecília’, NULL, ‘Engenheiro’, ‘1.950’, ‘D1’>


viola a restrição de integridade de entidade

– Inserir <‘109’, ‘Mauro’, ‘Rua 4’, ‘Técnico’, ‘980’, ‘B6’>


viola a restrição de integridade referencial

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Inserção:
– O que fazer quando se detectar uma violação de
integridade?
• Rejeitar a inserção (podendo explicar o porquê);
• Tentar corrigir a anomalia para depois inserir.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Inserção:
– O que fazer quando se detectar uma violação de
integridade?
• Rejeitar a inserção (podendo explicar o porquê);
• Tentar corrigir a anomalia para depois inserir.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Inserção:
– O que fazer quando se detectar uma violação de
integridade?
• Rejeitar a inserção (podendo explicar o porquê);
• Tentar corrigir a anomalia para depois inserir.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Remoção:
– Remover da tabela Empregado a tupla com matrícula
= ‘100’.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Remoção:
– Remover da tabela Empregado a tupla com matrícula
= ‘100’.
remoção aceita sem problemas.

– Remover da tabela Departamento a tupla com


CodDep = ‘D1’.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Remoção:
– Remover da tabela Empregado a tupla com matrícula
= ‘100’.
remoção aceita sem problemas.

– Remover da tabela Departamento a tupla com


CodDep = ‘D1’.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Remoção:
– Remover da tabela Empregado a tupla com matrícula =
‘100’.
remoção aceita sem problemas.

– Remover da tabela Departamento a tupla com CodDep =


‘D1’.
viola a regra de integridade referencial, pois
existem empregados que estão alocados neste departamento.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Remoção:
– O que fazer quando uma violação ocorrer numa remoção?
• Rejeitar a remoção;
• Dar o efeito cascata na remoção, removendo todas as tuplas
referenciadas por aquela tupla que está sendo removida;
• Modificar os atributos referenciados para novos valores ou nulo (caso
não façam parte da chave primária).

– Dos três tipos de restrições de integridade discutidas, uma


operação de remoção poderá violar apenas a integridade
referencial.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Remoção:
– O que fazer quando uma violação ocorrer numa remoção?
• Rejeitar a remoção;
• Dar o efeito cascata na remoção, removendo todas as tuplas
referenciadas por aquela tupla que está sendo removida;
• Modificar os atributos referenciados para novos valores ou nulo (caso
não façam parte da chave primária).

– Dos três tipos de restrições de integridade discutidas, uma


operação de remoção poderá violar apenas a integridade
referencial.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Remoção:
– O que fazer quando uma violação ocorrer numa remoção?
• Rejeitar a remoção;
• Dar o efeito cascata na remoção, removendo todas as tuplas
referenciadas por aquela tupla que está sendo removida;
• Modificar os atributos referenciados para novos valores ou nulo (caso
não façam parte da chave primária).

– Dos três tipos de restrições de integridade discutidas, uma


operação de remoção poderá violar apenas a integridade
referencial.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Remoção:
– O que fazer quando uma violação ocorrer numa remoção?
• Rejeitar a remoção;
• Dar o efeito cascata na remoção, removendo todas as tuplas
referenciadas por aquela tupla que está sendo removida;
• Modificar os atributos referenciados para novos valores ou nulo (caso
não façam parte da chave primária).

– Dos três tipos de restrições de integridade discutidas, uma


operação de remoção poderá violar apenas a integridade
referencial.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Remoção:
– O que fazer quando uma violação ocorrer numa remoção?
• Rejeitar a remoção;
• Dar o efeito cascata na remoção, removendo todas as tuplas
referenciadas por aquela tupla que está sendo removida;
• Modificar os atributos referenciados para novos valores ou nulo (caso
não façam parte da chave primária).

– Dos três tipos de restrições de integridade discutidas, uma


operação de remoção poderá violar apenas a integridade
referencial.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Modificação:
– Modificar o salário do empregado com matrícula = ‘250’

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Modificação:
– Modificar o salário do empregado com matrícula = ‘250’
operação aceita sem problemas.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Modificação:
– Modificar o salário do empregado com matrícula = ‘250’
operação aceita sem problemas.

– Modificar o número do departamento da tupla de empregado


com matrícula ‘210’ para ‘D1’

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Modificação:
– Modificar o salário do empregado com matrícula = ‘250’
operação aceita sem problemas.

– Modificar o número do departamento da tupla de empregado


com matrícula ‘210’ para ‘D1’
operação aceita sem problemas.

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Modificação:
– Modificar o salário do empregado com matrícula = ‘250’
operação aceita sem problemas.

– Modificar o número do departamento da tupla de empregado com


matrícula ‘210’ para ‘D1’
operação aceita sem problemas.

– Modificar o número do departamento de empregado ‘108’ para ‘D9’

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Modificação:
– Modificar o salário do empregado com matrícula = ‘250’
operação aceita sem problemas.

– Modificar o número do departamento da tupla de empregado com


matrícula ‘210’ para ‘D1’
operação aceita sem problemas.

– Modificar o número do departamento de empregado ‘108’ para ‘D9’


viola a integridade referencial

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Modificação:
– Modificar o salário do empregado com matrícula = ‘250’
operação aceita sem problemas.

– Modificar o número do departamento da tupla de empregado com matrícula


‘210’ para ‘D1’
operação aceita sem problemas.

– Modificar o número do departamento de empregado ‘108’ para ‘D9’


viola a integridade referencial

– Modificar a matrícula do empregado ‘100’ para ‘250’

Tiago Eduardo Banco de Dados


Operações

Operações de atualização em Relações


• Modificação:
– Modificar o salário do empregado com matrícula = ‘250’
operação aceita sem problemas.

– Modificar o número do departamento da tupla de empregado com matrícula


‘210’ para ‘D1’
operação aceita sem problemas.

– Modificar o número do departamento de empregado ‘108’ para ‘D9’


viola a integridade referencial

– Modificar a matrícula do empregado ‘100’ para ‘250’


viola regra de integridade de chave

Tiago Eduardo Banco de Dados

Você também pode gostar