{
798764544 12345678 João Pinto LCC
Registos 345673451 17222303 Carlos Semedo MIERSI
(linhas) 487563546 12021999 Maria Silva LBIO
452212348 18392100 Pedro Costa LMAT
Tabela:
ALUNO(NumMec, NumCC, Nome, Curso)
Superchaves: qualquer conjunto de atributos que inclua
NumMec ou NumCC
{NumMec}, {NumCC}, {NumMec, NumCC}, {NumCC, Nome}, {NumMec,
NumCC, Curso}
Chaves candidatas — apenas duas possibilidades:
{NumMec}
{NumCC}
Chaves primária — NumMec é a escolha mais natural para o
universo em questão (diz respeito intrinsecamente ao
universo).
ALUNO
NumMec
NumCC
Nome
Curso
INSCRIÇÃO(NumMec, CodCadeira)
CADEIRA(CodCadeira, Nome,Docente)
ALUNO
NumMec NumCC Nome Curso
IdDep IdFunc
Nome Nome
Director Departamento
… Supervisor ?
DEPARTAMENTO FUNCIONÁRIO
IdDep Nome Director … IdFunc Nome Departamento Supervisor? …
1 Contabilidade 1 … 1 Carlos Semedo 1 NULL …
2 Produção 4 … 2 Maria Silva 1 1 …
3 Recursos Humanos 6 … 3 Pedro Costa 1 1 …
4 José Neto 2 NULL …
5 António Meireles 2 4 …
6 Fátima Silva 3 NULL …
Integridade de domínio
O valor de um atributo faz parte do domínio do atributo.
Integridade de entidade
O valor da chave primária não pode ser NULL (sob pena de não
conseguirmos identificar registos).
Integridade de chave
Dois registos da mesma tabela não podem ter valores iguais
para uma chave, em particular para a chave primária.
Integridade referencial
Um valor definido (≠ NULL) para um atributo que seja chave
externa deve referir-se a uma chave primária da tabela a que a
chave externa se refere.
Bases de Dados O Modelo Relacional 17
Violação de restrições de integridade
ALUNO
integridade NumMec NumCC Nome Curso
referencial 798764544 12345678 João Pinto LCC
? 17222303 Carlos Semedo MIERSI
INSCRIÇÃO 345673451
487563546 12021999 Maria Silva LBIO
NumMec CodCad
452212348 ABCDEF Pedro Costa LMAT
111111111 12347
345673451 12347 ? integridade de domínio
CADEIRA
798764544 34248
CodCad Nome Docente
452212348 12347
12347 Bases de Dados José Aguiar Mota
integridade 34248 Álgebra Maria das Dores
de chave ?
34248 Cálculo I Carlos Duarte
integridade ? NULL Programação Alberto Manuel
de entidade
N IdProj
T2
E2 PROJECTO IdProj Horas PROJECTO
IdProj
E1 FUNCIONÁRIO NumFunc T1
PARQUE_ESTACI
N FUNCIONÁRIO ONAMENTO
TEM_LUGAR Lugar >>> NumFunc IdParque
1 IdParque ? …
Lugar ?
PARQUE_ESTACIONAMENTO IdParque
E2
E1 FUNCIONÁRIO T FUNCIONÁRIO
NumFunc
TEM_LUGAR NumFunc
N
NumFunc …
TEM_LUGAR Lugar >>>
T2
Parque
1
PARQUE_ESTACI
Lugar ONAMENTO
PARQUE_ESTACIONAMENTO IdParque
… IdParque
E2 …
E2 DEPARTAMENTO IdDept …
E2 TÁXI Matrícula …
T1 = T2
E1 = E2
FUNCIONÁRIO NumFunc
FUNCIONÁRIO
1
NumFunc
>>> Supervisor ?
N
SUPERVISIONA …
Tratados de forma análoga a outros casos (exemplo acima com cardinalidade 1:N).
Parentesco
T1 T2
E1 DEPENDENTE
DEPENDENTE FUNCIONÁRIO
N
NumFunc NumFunc
Nome …
DEPENDE_DE
DataNasc
1 Sexo
E2 FUNCIONÁRIO NumFunc Parentesco
NumCC Localidade
N 1
FUNCIONÁRIO TRABALHA_PARA DEPARTAMENTO
supervisor
1
N 1
1
supervisionado
DIRIGE CONTROLA Nome
N
SUPERVISIONA DataInício
N
M N
TRABALHA_EM PROJECTO DataFim
Horas
TRABALHA_EM DataInício
Funcionário DataFim
Projecto Director
Horas DepControlador