Programação e Bases de Dados - Ficha 8 - Soluções

Entidades

1

2

Atributos:

3

Chamar à atenção para valores de atributos derivados, multi-valor, opcionais, e compostos. Exemplos possíveis:

Nota: nas entidades acima uso "superscript" em vez de "subscript" como aparece nos slides (o editor de "markdown" não suporta "subscript").

4

Seguir a notação exemplificada dos slides (p/ atr. chave, derivados, compostos, e multi-valor), resumida abaixo.

Relacionamentos

1, 2

Possível solução:

Relacionamento Restr. Cardinalidade Restr. Participação Restr. Estrutural
TRABALHA_EM(FUNCIONÁRIO, ESPAÇO) N : 1 total/total (1,N) > (1,1)
SUPERVISIONA(FUNCIONÁRIO, FUNCIONÁRIO) 1 : N parcial/parcial (0,1) > (0,N)
GERE(FUNCIONÁRIO, ESPAÇO) 1 : 1 parcial/total (0,1) > (1,1)
TEM_LUGAR(EVENTO, ESPAÇO, HoraInício, HoraFim) M : N total/parcial (1,M) > (0,N)

3

Seguir a notação exemplificada nos slides / resumo abaixo.

Relacionamentos binários R(A,B) devem apresentar-se da esquerda (A) para a direita (B) ou de cima (A) para baixo (B).




Resumo de notação - exemplos dos slides

Entidades

Para a primeira caracterização mais simples da entidade tipo PESSOA, temos a forma textual:

que é representada na forma visual pelo seguinte diagrama ER

Entidade exemplo - diagrama ER

Na segunda caracterização, com mais atributos, temos

e o diagrama ER

Entidade exemplo - diagrama ER

Relacionamentos

Entidades:

Relacionamentos e restrições:

Relacionamento Restr. Cardinalidade Restr. Participação Restr. Estrutural
SUPERVISIONA(FUNCIONÁRIO, FUNCIONÁRIO) 1 : N parcial > parcial (0,1) > (0,N)
TRABALHA_PARA(FUNCIONÁRIO,DEPARTAMENTO) N : 1 total > total (1,N) > (1,1)
GERE(FUNCIONÁRIO, DEPARTAMENTO) 1 : 1 parcial > total (0,1) > (1,1)
CONTROLA(DEPARTAMENTO, PROJECTO) 1 : N parcial > total (0,1) > (1,N)
DIRIGE(FUNCIONÁRIO, PROJECTO) 1 : N parcial > total (0,1) > (1,N)
TRABALHA_EM(FUNCIONÁRIO,PROJECTO, Horas) M : N parcial > parcial (0,M) > (0,N)

Diagrama ER:

Relacionamentos exemplo - diagrama ER

Relacionamento ternário

Relacionamento ternário






BD - Empresa de organização de eventos

1

Chaves primárias:

Chaves externas:

2

Operação Violação
INSERE FUNCIONÁRIO(ABCDEF, Roberto Pires, CP, 12345678,...) Integridade de domínio para FUNCIONÁRIO.NumCC: ABCDEF não é um número.
INSERE FUNCIONÁRIO(12345678, Roberto Pires, CP, 22444552,...) Integridade de chave para FUNCIONÁRIO: 12345678 identifa um funcionário já existente (José Silva).
INSERE FUNCIONÁRIO(23884312, Roberto Pires, CP, 12345679,...) Integridade referencial: o supervisor com NumCC=12345679 não existe.
INSERE ESPAÇO(NULL,Null All Night, ...) Integridade de entidade: NULL não pode ser usado como valor para chave primária.
REMOVE ESPAÇO(CP) Integridade referencial: vários funcionários referem-se ao espaço com código CP.
REMOVE FUNCIONÁRIO(12345678) Integridade referencial: funcionário 12345678 (José Silva) é supervisor de 22444552 (Roberta Rodrigues)
REMOVE FUNCIONÁRIO(18923444) Integridade referencial: funcionário 18923444 (Fátima Lopes) é gestor do espaço MH e supervisor de 10345553 (Roberta Rodrigues)
ACTUALIZA FUNCIONÁRIO(22444552, Espaço → XPTO) Integridade referencial: espaço com código XPTO não existe.
ACTUALIZA ESPAÇO(CP,Nome → NULL) Integridade de domínio: Nome não é um atributo opcional (relembrar isso dos requisitos).
ACTUALIZA ESPAÇO(MH,Gestor → 12345679) Integridade referencial: funcionário 12345679 não existe.

3

Nota: Neste resolução utiliza-se a notação vertical (abaixo exemplo dos slides).

Tabelas para o modelo ER dado com chaves primárias e externas (→):

FUNCIONÁRIO
NumCC
Espaço → ESPAÇO.CodEspaço
Supervisor → FUNCIONÁRIO.NumCC
Nome
DataNasc
Cargo
Email
NUM_TELEFONE
Funcionário → FUNCIONÁRIO.NumCC
Num
ESPAÇO
CodEspaço
Gestor → FUNCIONÁRIO.NumCC
Nome
MRua
MNum
MAndar
MCP
MLocalidade
EVENTO
CodEvento
Nome
DataInício
DataFim
ALOCAÇÃO
Espaço → ESPAÇO.CodEspaço
Evento → EVENTO.CodEvento
HoraInício
HoraFim

4

Mudanças ao modelo ER:

Notação ER

Nova entidade-tipo (fraca)

Mudanças aos relacionamentos:

Mudanças ao modelo relacional:

SALA
CodSala
Espaço → ESPAÇO.CodEspaço
Descrição
ALOCAÇÃO
Sala → SALA.CodSala
Espaço → SALA.Espaço
Evento → EVENTO.CodEvento
HoraInício
HoraFim