39
Bases de Dados (CC2005) Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto Eduardo R. B. Marques — DCC/FCUP — parcialmente adaptado de slides por Fernando Silva e Ricardo Rocha — O Modelo Relacional

bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados (CC2005) Departamento de Ciência de Computadores

Faculdade de Ciências da Universidade do Porto

Eduardo R. B. Marques — DCC/FCUP — parcialmente adaptado de slides por Fernando Silva e Ricardo Rocha —

O Modelo Relacional

Page 2: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Desenho lógico de BDs A modelação conceptual, como vimos para o modelo ER, define um modelo para a BD independente do tipo de base de dados. Um modelo lógico considera já o tipo de BD em causa, sem necessariamente ser dependente do SGBD.

Modelo Relacional Modelo lógico para BDs relacionais, baseadas no conceito de relação, também chamado de tabela. ER > Modelo relacional: Entidades-tipo e relacionamentos no modelo ER podem ser mapeados em tabelas no modelo relacional. Modelo relacional > SQL: um modelo relacional pode ser depois concretizado num SGBD basedo na linguagem SQL (como veremos também depois).

Modelação lógica de BDs

2

Page 3: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional 3

Conceitos base

Page 4: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com um esquema associado definido por um nome e sequência de atributos. Cada tuplo, também chamado registo ou linha, é definido por uma sequência de valores para atributos da tabela. Não existe em si uma ordem associada aos tuplos, embora a ordem em que poderão aparecer numa representação textual/visual resultante de uma consulta à BD possa ser relevante como veremos depois.

Conceito de relação

4

ALUNO

NumMec NumCC Nome Curso

798764544 12345678 JoãoPinto LCC

345673451 17222303 CarlosSemedo MIERSI

487563546 12021999 MariaSilva LBIO

452212348 18392100 PedroCosta LMAT

Registos(linhas)

Atributos(colunas)

Nome

{

Page 5: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Em termos estritos … Uma relação é um conjunto de tuplos não-ordenados no sentido matemático do termo. Uma tabela é um modelo para a representação física de uma relação em um SGBD.

Vamos no entanto usar o termo tabela para a noção de relação:

para evitar alguma confusão possível entre a noção de relacionamento (no modelo ER) e a de relação … e por ser também o termo usado para designar/implementar uma relação no contexto concreto de um de SGBDs relacionais baseados em SQL.

Terminologia: relação vs. tabela

5

Page 6: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Uma tabela, denotada por T(A1,…,An)tem nome T e atributos A1,…,An

por ex. ALUNO(NumMec,NumCC,Nome,Curso)

A cada atributo Aiestá associado um domínio de valores dom(Ai). Os valores no domínio de um atributo são atómicos e podem incluir o valor especial NULL para denotar a ausência de valor definido, i.e., podemos ter NULL∈dom(Ai). Contrariamente ao modelo ER, no modelo relacional os atributos não podem ser compostos ou multi-valor.

Um registo r de uma tabela T(A1,…,An)é um tuplo r=(v1,…,vn)

tal que vi∈dom(Ai). Cada valor vi pode ser denotado por r[Ai].

Definições e notação genérica

6

Page 7: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Seja T(A1,…,An)uma tabela. Um subconjunto K = { K1, …, Km }dos atributos A1,…, Andiz-se uma superchave se é garantido que para qualquer par de registos distintos r1er2temos r1[K]≠r2[K].

O tuplo formado por valores de K nunca é igual para 2 registos distintos

Uma superchave Kdiz-se uma chave se for um conjunto mínimo de atributos, isto é, ∀iK\{Ki}não é uma superchave.

Removendo um dos atributos de K, esta deixa de ser uma super-chave, ou seja, já não permite distinguir unicamente registos.

Uma tabela pode ter várias chaves, que se dizem chaves candidatas. De entre estas, é comum escolher uma como chave primária que deverá ser a mais adequada para identificar os registos em causa.

Superchave, chave e chave primária

7

Page 8: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Tabela: ALUNO(NumMec,NumCC,Nome,Curso)

Superchaves: qualquer conjunto de atributos que inclúa 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 intrinsicamente ao universo).

Superchave, chave e chave primária (cont.)

8

Page 9: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Notação para tabelas

9

ALUNO(NumMec,NumCC,Nome,Curso)

ALUNO

NumMecNumCC

NomeCurso

Chave primária aparece sublinhada.

Page 10: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Um atributo (ou conjunto de atributos) FK de uma tabela Té uma chave externa para a chave primária K de uma tabela T’ se para qualquer registo r em Ttal que r[FK] ≠NULL então existe um registo r’ em T’ tal que r[FK]=r’[K].

Esta restrição é conhecida por integridade referencial, que discutiremos em pormenor mais adiante.

Chave externa (“foreign key”)

10

Page 11: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Na representação visual de um esquema relacional, representam-se as referências usando uma ligação (seta ou arco) dirigida entre chave externa e chave primária. INSCRIÇÃO tem 2 chaves externas: NumMec refere-se à chave primária de ALUNO e CodCadeira à chave primária de CADEIRA .Observe que o par (NumMec,CodCadeira) é por sua vez é a chave primária de INSCRIÇÃO.

Representação de chaves externas

11

INSCRIÇÃO

NumMecCodCadeira

ALUNO

NumMecNumCC

NomeCurso

CADEIRA

CodCadeiraNumCC

NomeDocente

Page 12: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Disposição horizontal usada no livro de referência: “Fundamentals of database systems, 7th edition”. Tende a ser menos usada na prática para representação de esquemas.

Representação de esquema — variante

12

ALUNO(NumMec,NumCC,Nome,Curso)

CADEIRA(CodCadeira,Nome,Docente)

INSCRIÇÃO(NumMec,CodCadeira)

Page 13: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Chaves externas — exemplo de dados

13

ALUNO

NumMec NumCC Nome Curso

798764544 12345678 JoãoPinto LCC

345673451 17222303 CarlosSemedo MIERSI

487563546 12021999 MariaSilva LBIO

452212348 18392100 PedroCosta LMAT

INSCRIÇÃO

NumMec CodCad

798764544 12347

345673451 12347

798764544 34248

452212348 32439

CADEIRA

CodCad Nome Docente

12347 BasesdeDados JoséAguiarMota

34248 Álgebra MariadasDores

32439 CálculoI CarlosDuarte

Page 14: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Neste exemplo as chaves externas não fazem parte da chave primária. Se nem todo o funcionário tem supervisor, podemos ter valores NULL para o atributo FUNCIONÁRIO.Supervisor. Nota: de forma similar ao modelo ER denotamos atributos opcionais com ?.

Chaves externas — outros exemplos

14

FUNCIONÁRIO

IdFunc

Nome

Departamento

Supervisor?

DEPARTAMENTO

IdDep

Nome

Director

Page 15: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Chaves externas — outros exemplos (cont.)

15

DEPARTAMENTO

IdDep Nome Director …

1 Contabilidade 1 …

2 Produção 4 …

3 RecursosHumanos 6 …

FUNCIONÁRIO

IdFunc Nome Departamento Supervisor? …

1 CarlosSemedo 1 NULL …

2 MariaSilva 1 1 …

3 PedroCosta 1 1 …

4 JoséNeto 2 NULL …

5 AntónioMeireles 2 4 …

6 FátimaSilva 3 NULL …

FUNCIONÁRIO

IdFunc

Nome

Departamento

Supervisor?

DEPARTAMENTO

IdDep

Nome

Director

Page 16: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

E s t a B D n ã o f a z sentido. Quais são os problemas? O que está em causa em cada caso?

Dados consistentes?

16

ALUNO

NumMec NumCC Nome Curso

798764544 12345678 JoãoPinto LCC

345673451 17222303 CarlosSemedo MIERSI

487563546 12021999 MariaSilva LBIO

452212348 ABCDEF PedroCosta LMAT

INSCRIÇÃO

NumMec CodCad

111111111 12347

345673451 12347

798764544 34248

452212348 12347

CADEIRA

CodCad Nome Docente

12347 BasesdeDados JoséAguiarMota

34248 Álgebra MariadasDores

34248 CálculoI CarlosDuarte

NULL Programação AlbertoManuel

?

?

?

?

Page 17: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

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.

Restrições de integridade numa BD relacional

17

Page 18: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Violação de restrições de integridade

18

ALUNO

NumMec NumCC Nome Curso

798764544 12345678 JoãoPinto LCC

345673451 17222303 CarlosSemedo MIERSI

487563546 12021999 MariaSilva LBIO

452212348 ABCDEF PedroCosta LMAT

INSCRIÇÃO

NumMec CodCad

111111111 12347

345673451 12347

798764544 34248

452212348 12347

CADEIRA

CodCad Nome Docente

12347 BasesdeDados JoséAguiarMota

34248 Álgebra MariadasDores

34248 CálculoI CarlosDuarte

NULL Programação AlbertoManuel

?

?

?

?

integridade referencial

integridade de chave

integridade de domínio

integridade de entidade

Page 19: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Esquema da BD = { Esquema de tabelas } Estado da BD = { Conteúdo das tabelas } O estado da BD é mutável sendo normal considerar as seguintes operações nuclares:

INSERE(T,r) : insere novo registo r na tabelaTREMOVE(T,k):remove registo (que já exista) com chave primária k de T. ACTUALIZA(T,k,r):actualiza registo com chave primária k em Tpelo registo rcom a mesma chave primária (pode ser vista como uma remoção seguida de uma inserção, mas com efeito atómico).

Nota: a estas operações irão corresponder às formas mais simples dos comandos SQL INSERT, DELETE, e UPDATE (a cobrir em próximas aulas).

Estado e operações sobre uma base de dados

19

Page 20: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

As operações consideradas podem ser inválidas se violarem restrição de integridade:

INSERE(T,r) : insere novo registo r na tabelaT— pode violar qualquer um dos tipos de restrições (domínio, entidade, chave, referencial). REMOVE(T,k): remove registo (que já exista) com chave primária k de T— pode violar a integridade referencial se existir uma referência a kpor via de uma chave externa. ACTUALIZA(T,k,r):actualiza registo com chave primária k em Tpelo registo rcom a mesma chave primária — pode violar qualquer um dos tipos de restrição.

Operações e restrições de integridade

20

Page 21: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

INSERE(ALUNO,r)tal quer[NumMec]=798764544violaria integridade de chave p/ALUNO.REMOVE(CADEIRA,32439)violaria integridade referencial p/ INSCRIÇÃO.CodCad.INSERE(INSCRIÇÃO, r) com r[NumMec] = 999999 violaria integridade referencial p/ INSCRIÇÃO.NumMec.

ACTUALIZA(ALUNO,798764544, r) com r[NumCC] = ‘ABCDE’ violaria a integridade de domínio p/ ALUNO.NumCC.

INSERE(ALUNO,r)comr[NumMec]=NULLviolariaaintegridadedeentidadep/ALUNO.

Exemplos de operações inválidas

21

ALUNO

NumMec NumCC Nome Curso

798764544 12345678 JoãoPinto LCC

345673451 17222303 CarlosSemedo MIERSI

487563546 12021999 MariaSilva LBIO

452212348 18392100 PedroCosta LMAT

INSCRIÇÃO

NumMec CodCad

798764544 12347

345673451 12347

798764544 34248

452212348 32439

CADEIRA

CodCad Nome Docente

12347 BasesdeDados JoséAguiarMota

34248 Álgebra MariadasDores

32439 CálculoI CarlosDuarte

Page 22: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Um SGBD deverá rejeitar uma operação que viole restrições de integridades, assinalando o erro. SGBDs maduros normalmente suportam todos os tipos de restrições de integridade que consideramos (domínio, entidade, chave, referencial). Há no entanto excepções que se prendem com escolhas feitas p/implementação de SGBDs, tipicamente por questões de complexidade de implementação/contexto de uso/desempenho. Por exemplo:

SQLite não valida restrições de domínio. Versões antigas de MySQL não tinham suporte p/integridade referencial.

SGBDs e restrições de integridade

22

Page 23: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional 23

Conversão do modelo ER para o modelo relacional

Page 24: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Perspectiva geral Entidades-tipo e relacionamentos são convertidos em tabelas.

Mapeamento de entidades-tipo em tabelas Passa pelo mapeamento directa de atributos, excepto no caso de atributos multi-valor em que precisamos de recorrer a “tabelas auxiliares”.

Mapeamento de relacionamentos — conforme a cardinalidade e participação das entidades-tipos de um relacionamentos:

Relacionamentos podem resultar em uma tabela nova para o relacionamento ou na adição de atributos às tabelas correspondentes a entidade-tipo. Chaves primárias, externas são definidas em cada caso apropriadamente. Atributos de relacionamentos têm de ser também considerados no mapeamento.

Modelo ER → Modelo Relacional

24

Page 25: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Entidade-tipo E >>> tabela TNome de E >>> nome de T Chave de E >>> chave primária de T Atributos derivados de E não são mapeados. Atributo simples de E >>> atributo simples de T Sub-atributos de atributo composto de E >>> atributos de T Atributos opcionais levam simplesmente à inclusão de NULL no domínio do atributos. Mantemos a notação Opcional? . Atributo multi-valor MV de E >>> tabela auxilar MV com chave externa referenciando a chave primária de T. Chave externa e restantes atributos definem a chave de MV.

Mapeamento de entidades-tipo

25

Page 26: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Entidades-tipo — atributos de valor único

26

PESSOA

NumCC

Nome

Sexo

DataNasc

MRua

MNum

MAndar?

MLocalidade

MCodPostal

E T>>>

Page 27: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

É criada nova tabela “auxilar” com chave externa referenciando a chave primária de T. Chave externa e restantes atributos definem a chave primária da tabela auxiliar.

Entidades-tipo — atributos multivalor

27

PESSOA

NumTelef Habilitação

Grau AnoInstituição

NumCC…

PESSOA

NumCC

NUM_TELEF

NumCC

NumTelef

HABILITAÇÃO

NumCC

Grau

Ano

Instituição

E T>>>

Page 28: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

REL(E1,E2,Attrs)com cardinalidade M:N Cria-se tabela de “referência-cruzadas” específica a REL. Chave primária de REL = Chave primária de T1 + Chave primária de T2 (ambas chaves externas) Attrs mapeados na tabela para RELMapeamento é o mesmo independente de a participação de cada uma das entidades ser parcial ou total.

Mapeamento de relacionamentos M:N

28

TRABALHA_PARA

FUNCIONÁRIO

PROJECTO

Horas

NumFunc

IdProj

TRABALHA_PARA

NumFunc

IdProj

Horas PROJECTO

IdProj

>>>

FUNCIONÁRIO

NumFunc

E1

E2

T1

T2

M

N

Page 29: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

REL(E1, E2,Attrs) com cardinalidade N:1 e participação total de E1 (análogo p/1:N com participação total de E2)

chave externa definida em T1 para a chave primária de T2 Attrs mapeados em T1

Relacionamentos N:1

29

TRABALHA_EM

FUNCIONÁRIO

DEPARTAMENTO

Gabinete

NumFunc

IdDep

FUNCIONÁRIO

NumFunc

IdDep

Gabinete

DEPARTAMENTO

IdDep

>>>

T1

T2

E1

E2

N

1

Page 30: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

REL(E1,E2,Attrs)c/cardinalidade N:1 e participação parcial de E1 Análoga ao caso anterior, mas levando a atributos opcionais em T1. Solução onerosa em termos de espaço se apenas algumas instâncias se envolverem em REL levando a demasiados valor NULL.

Relacionamentos N:1 (cont.)

30

TEM_LUGAR

FUNCIONÁRIO

PARQUE_ESTACIONAMENTO

Lugar

NumFunc

IdParque

PARQUE_ESTACIONAMENTO

IdParque

>>>FUNCIONÁRIO

NumFunc

IdParque?

Lugar?

E1

E2

T1

N

1

T1

Page 31: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Alternativa para REL(E1,E2, Attrs) c/cardinalidade N:1 e participação parcial de E1

Cria-se tabela de referências cruzadas específica a REL Chave primária de T1 é chave primária Tem e chave externa. Chave primária de T2 é apenas chave externa em T

Relacionamentos N:1 (cont.)

31

TEM_LUGAR

FUNCIONÁRIO

PARQUE_ESTACIONAMENTO

Lugar

NumFunc

IdParque

TEM_LUGAR

NumFunc

Parque

Lugar

PARQUE_ESTACIONAMENTO

IdParque

>>>

FUNCIONÁRIO

NumFunc

E1

E2

T2

T1

N

1

T

Page 32: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

REL(E1,E2, Attrs) c/cardinalidade 1:1, participação parcial de E1, participação total de E2

Chave primária de T1 é adicionada como chave externa a T2 Attrs mapeados em T2

Relacionamentos 1:1

32

GERE

FUNCIONÁRIO

DEPARTAMENTO

InícioFunc

NumFunc

IdDept

DEPARTAMENTO

IdDepart

Gestor

InícioFuncGestor

>>>FUNCIONÁRIO

NumFunc

E1

E2

T1

T2

1

1

Page 33: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

REL(E1,E2, Attrs) c/cardinalidade 1:1, participação parcial de ambas as entidades

Podemos usar estratégia semelhante à anterior, mas chave externa e atributos da relação são atributos opcionais. Uma tabela de “referências-cruzadas” poderá ser preferível se houverem poucas instâncias relacionadas.

Relacionamentos 1:1 (cont.)

33

TEM_CACIFO

FUNCIONÁRIO

CACIFO

NumFunc

Id

CACIFO

Id

>>>FUNCIONÁRIO

NumFunc

Cacifo?

E1

E2

T1 T21

1

Page 34: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

REL(E1,E2, Attrs) c/cardinalidade 1:1, participação total de ambas as entidades

Opção 1: Chave primária de T1 é adicionada como chave externa a T2e Attrs mapeados em T2, ou vice-versa. Opção 2: Tabela de referências cruzadas.

Relacionamentos 1:1 (cont.)

34

CONDUZ

TAXISTA

TÁXI

InícioFunc

NumLicença

Matrícula

TÁXI

Matrícula

Taxista

InícioFunc

>>>TAXISTA

NumLicença

E1

E2

T1

T2

1

1

Page 35: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Tratados de forma análoga a outros casos (exemplo acima com cardinalidade 1:N).

Outros casos — relacionamentos recursivos

35

FUNCIONÁRIO

NumFunc

Supervisor?

FUNCIONÁRIO

SUPERVISIONA

1

N

NumFunc

>>>

E1=E2T1=T2

Page 36: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Tratados de forma análoga a relações N:1 com participação total de E1Chave primária de T1= chave parcial da entidade-tipo fraca + chave externa paraT2

Outros casos — entidades-tipo fracas

36

DEPENDENTE

NumFunc

Nome

DataNasc

Sexo

Parentesco

FUNCIONÁRIO

NumFunc

DEPENDENTE

Nome

Parentesco

SexoDataNasc

DEPENDE_DE

FUNCIONÁRIO

1

NumFunc

E1

E2

T1 T2

N

Page 37: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional 37

Exemplo completo BD empresa (variante)

Page 38: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Variante da BD empresa — modelo ER

38

CP

FUNCIONÁRIO DEPARTAMENTO

PROJECTO

SUPERVISIONA

GERE

CONTROLA

TRABALHA_PARA

DIRIGE

11

TRABALHA_EM

1

N

N

1

N

Horas

N

supervisor

supervisionado

DataInício

DataFim

Nome

Nome Localização

NumCC

Nome Salário

HorasProjDataNasc

Email?

Localidade

Rua

Num Andar?

1

M

N 1

Telf

Page 39: bd modelo relacional - DCCedrdo/aulas/bd/teoricas/... · Bases de Dados O Modelo Relacional Uma relação é um conjunto de tuplos, que pode ser representada na forma de tabela, com

Bases de Dados O Modelo Relacional

Modelo relacional derivado do modelo ER

39

FUNCIONÁRIO

NumCC

Nome

Email?

Salário

Supervisor?

Departamento

DEPARTAMENTO

Nome

MRua

MNum

MAndar?

MLocalidade

MCodPostal

Gestor

PROJECTO

Nome

DataInício

DataFim

Director

DepControlador

NUM_TELEF

NumCC

Num

TRABALHA_EM

Funcionário

Projecto

Horas