Sistemas de Base de Dados
•
•
•
•
Michel Ferreira
Email: [email protected] (melhor contacto!)
Gabinete: CIUP, Gab. 213, 22 6078830
Página da disciplina: http://www.ncc.up.pt/~michel/MI/SBD/
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–1
Bibliografia
Livro principal:
• Fundamentals of Database Systems, por Elmasri e Navathe (3rd edition),
Addison Wesley, 1999.
Recomendados:
• Database Systems: The Complete Book, by Garcia-Molina, Ullman, and
Widom (first edition), Prentice Hall, 2002.
• A Guide to the SQL Standard: A User's Guide to the Standard Database
Language SQL, (fourth edition), by C.J. Date and Hugh Darwen, AddisonWesley, 2000.
• PostgreSQL: Introduction and Concepts, Bruce Momjian, Addison-Wesley,
2001.
Podem ser utéis também:
• Livros sobre Unix, Perl, PHP e CGI.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–2
Avaliação
• Um trabalho (a definir na 3ª aula): 30% da nota.
• Um exame final: 70% da nota.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–3
Programa
• O Modelo Relacional de Bases de Dados
• Bases de Dados Orientadas por Objectos, Bases de Dados
“object-relational”, Bases de Dados semi-estruturadas e
Bases de Dados XML.
• Bases de Dados Lógicas (dedutivas).
• “Online Analytical Processing” (OLAP) e
“Datawarehousing”
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–4
O que é um sistema de gestão de BD?
1.
Gere uma grande quantidade de dados.
2. Permite um acesso eficiente a uma grande quantidade de dados.
3. Permite acesso concorrente a uma grande quantidade de dados.

Exemplo: banco e as caixas Multibanco.
4. Permite acesso seguro (atómico) a uma grande quantidade de dados.

Imaginem duas pessoas a editar o mesmo ficheiro UNIX – a última a gravar «ganha» - com
o problema de duas pessoas levantarem dinheiro da mesma conta via Multibanco ao mesmo
tempo – o novo saldo fica errado, qualquer que seja a pessoa a gravar em último lugar.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–5
Modelo Relacional
• Baseado em tabelas, como:
conta # nome
12345
34567
…
saldo
Sandra 1000.21
Alice
285.48
…
…
• É usado na maioria dos SGBD’s actuais.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–6
O Mercado dos SGBD’s
•
•
•
•
•
Empresas de SGBD’s Relacionais – Oracle, Sybase – estão entre as maiores empresas de
software do mundo.
IBM fornece o seu sistema relacional DB2.
A Microsoft fornece o SQL-Server, mais o Microsoft Access para SGBD’s baratos sobre
computadores pessoais, respondidos por sistemas “lite” da concorrência.
As empresas de BD relacionais também começam a sofrer a concorrência de empresas
de “BD orientadas-a-objectos”.
Muitos sistemas começam a ser “object-relational”, mantendo o núcleo relacional e
permitindo extensões baseadas em sistemas OO.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–7
Três aspectos no estudo de SGBD’s
1. Modelação e desenho de Bases de Dados.

2.
Permite a análise de questões antes de passar a uma fase de
implementação.
Programação: consultas e operações à BD como actualização
(update).

SQL = “intergalactic dataspeak.”
3. Implementação de SGBD’s.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–8
Linguagens de Consulta
Empregado
Nome
Departamento
Dept
Dept
Director
SQL
SELECT Director
FROM Empregado, Departamento
WHERE Empregado.nome = "Clark Kent”
AND Empregado.Dept = Departamento.Dept
Linguagem de Consulta
Data definition language (DDL) ~ semelhante a type defs em C ou Pascal
Data Manipulation Language (DML)
Consulta (SELECT)
UPDATE < nome da relação>
SET <atributo> = < novo-valor>
WHERE <condição>
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–9
Linguagens “Host”
C, C++, Fortran, Lisp, COBOL
Progr. Aplicação
Chamadas à
BD
SGBD
Variáveis locais
(Memória)
(Armaz.)
Linguagem “host” é completamente geral (Turing complete) mas não
fornece suporte primitivo a BD’s.
Linguagem de consulta — menos geral “não procedimental”, e optimizável
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–10
O modelo relacional é bom para:
Grande quantidade de dados —> operações simples
Navegar dentro de um número pequeno de relações
Aplicações difíceis para o modelo relacional:
• Desenho de circuitos VLSI (CAD em geral)
• CASE
• Informação gráfica
ALU
ADDER
A
FA
CPU
Adder
ALU
ADDER
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–11
Onde o número de “relações” é grande, relacionamentos são complexos
•
•
Modelo de Dados Orientado a Objectos
Modelo de Dados Lógico
Modelo de Dados Orientado a Objectos
1.
2.
3.
4.
Objectos Complexos – Estrutura embricada (apontadores ou
referências)
Encapsulamento, conjunto de funções de Acesso/Métodos
Identidade de Objecto
Herança – Definição de novas classes com base em classes antigas
Modelo de Objectos: normalmente a procura de objectos é por navegação explicita
Existe também uma linguagem de consulta em alguns sistemas
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–12
Modelo de Dados Lógico (Horn Clause)
• Prolog, Datalog
Se A1 e A2 então B
prolog B:- A1 and A2
Funções s(5) = 6 (sucessor)
Predicados com Argumentos sum(X,Y,Z)
X+Y=Z
sum(X,0,X) significa X + 0 = X (verdadeiro para todo X)
sum(X,s(Y),s(Z)):-sum(X,Y,Z)
significa X+(Y+1) = (Z+1) se X + Y = Z
Mais poderoso que o relacional
Pode calcular o fecho transitivo
edge(X,Y)
path(X,Y) :- edge(X,Y)
path(X,Z) :- path(X,Y) & edge(Y,Z)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–13
60’s
Hierárquico
Rede
70's
80's
Escolha da maioria das
aplicações
Relacional
90’s
BD OO
BD Dedutivas
agora
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–14
Modelo Entidade-Relacionamento
• Entidades:
objecto ou conceito do mundo real com uma existência independente
 com existência física, e.g. carro, empregado, produto, aluno, etc.
 com existência conceptual: uma empresa, uma profissão, um curso, etc.

• Atributos:

propriedades que caracterizam (e estão associadas) uma entidade
• atributos de Pessoa: nome, sexo, data nascimento, morada,
etc.
• Relacionamentos

representam interacções entre 2 ou mais entidades
trabalha(empregado, departamento)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–15
Modelo ER: Atributos
•
•
Valores dos atributos = Informação da BD
Domínios de atributos

•
conj. de valores que podem ser atribuídos a um atributo de uma entidade.
Tipos de atributos:

atributo simples ou atómico: não é divisível.

atributo composto: divisível em atributos simples com significado independente
• o atributo Endereço da entidade PESSOA pode ser decomposto em: Rua, Cidade e
CódigoPostal.

atributo de valor único: têm apenas um valor para uma determinada entidade

atributo de valores-múltiplos: pode tomar 1 ou mais valores de um conjunto de
valores para a mesma entidade.
• entidade CARRO, atributo Cor-do-carro (vermelho, branco, cinza, …)
• entidade PESSOA, atributo TítuloAcadémico (licenciado, mestre, doutor,…)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–16
Modelo ER: Atributos (cont.)
•
Tipos de atributos:

atributo derivado: pode ser derivado de outro atributo.
• Idade pode ser derivado de DataNascimento

atributo com valor nulo (NULL)
• quando o atributo não é aplicável a uma determinada entidade.
• Ex: o atributo TítulosAcadémicos só se aplica a pessoas com curso superior, sendo nulo
para as restantes.
•
Interpretações para o valor NULL:

o atributo não se aplica;

o valor do atributo não é conhecido ou está em falta.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–17
Modelo ER: Entidade Tipo
• Entidade Tipo:
determina o esquema para um conjunto de entidades que partilham a
mesma estrutura (atributos).
 caracteriza-se por um nome e uma lista de atributos.

Esquema da entidade-tipo EMPREGADO:
EMPREGADO(Nome, Idade, Salário)
• Atributo chave de uma entidade-tipo:

é o atributo que identifica de forma únivoca cada entidade.
• deve aparecer sublinhado.
Ex:
EMPRESA( Nome, Endereço, Presidente)
PESSOA( Nome, NumBI, DataNasc, Endereço, …)

pode ser constituído por mais do que um atributo simples.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–18
Requisitos de uma BDs de uma Empresa
•
Uma empresa está dividida em departamentos. Cada departamento tem um nome, um número e um gerente. Inclui
ainda a data em que o gerente começou a gerir o departamento. O departamento pode ter várias localizações.
•
Um departamento controla um determinado número de projectos. Cada projecto tem um nome, um número e uma
localização única.
•
Para cada empregado, guardar o nome, o número do BI, endereç, salário, sexo e data de nascimento.
Um empregado pertence a um departamento, mas pode trabalhar em vários projectos, que não são necessáriamente
controlados pelo mesmo departamento.
Tomar nota do número de horas por semana que um empregado trabalha num dado projecto. Tomar nota do supervisor
directo de cada empregado.
•
Tomar nota do número de dependentes de cada empregado para efeitos de seguro. Para cada dependente, guardar o
nome, sexo, data de nascimento e grau de parentesco para o empregado.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–19
Construção do modelo ER para a BD-Empresa
•
Identificar entidades-tipo e atributos:
1. DEPARTAMENTO( Nome, Num, {Local}, Gerente, GerData)
atributos com valores múltiplos: Local
2. PROJECTO( Nome, Num, {Localização}, DepCtl)
3. EMPREGADO( Nome(P,U), NumBI, Sexo, Endereço,Salário,Dnasc, Dept, Super)
4. DEPENDENTE( Empregado, DNome, Sexo, Dnasc, GrauPar)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–20
Construção do modelo ER para a BD-Empresa
Falta representar:

1 empregado trabalha em N projectos

num. de horas que cada empregado trabalha em cada projecto Identificar entidades-tipo e
atributos:
•
Podemos representar esta info como:

atributo-composto-multivalor da entidade Empregado
TrabalhaEm( Projecto, Horas)

atributo-composto-multivalor da entidade Projecto:
Trabalhadores( Empregado, Horas)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–21
Relacionamentos
Falta representar (entre outros):
“um Departamento tem um Director que o dirige; um Director é um empregado”
Dirige( Departamento, Empregado)
•
O esquema Dirige traduz um relacionamento entre 2 entidades, Departamento e Empregado.
•
No modelo ER, uma entidade não pode referenciar directamente outra entidade; tal necessidade
traduz-se na definição de um relacionamento.
•
Outros relacionamentos:
TrabalhaPara(Empregado,Departamento)
Controla(Departamento,Projecto)
DependeDe(Dependente,Empregado)
Supervisiona(Empregado,Empregado)
TrabalhaEm(Empregado,Projecto,Horas)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–22
Esquema da BDs
Com a definição dos relacionamentos, algunds dos atributos são redundantes pelo que não devem ser
incluídos no esquema. O esquema consiste:
•
Entidades:
DEPARTAMENTO( Nome, Num, {Local}, )
PROJECTO( Nome, Num, {Localização} )
EMPREGADO( Nome(P,U), NumBI, Sexo, Endereço,Salário,Dnasc)
DEPENDENTE( DNome, Sexo, Dnasc, GrauPar)
•
Relacionamentos:
trabalhaPara(Empregado,Departamento) dependeDe(Dependente,Empregado)
•
controla(Departamento,Projecto)
dirige(Empregado,Departamento, GerData)
supervisiona(Empregado,Empregado)
trabalhaEm(Empregado,Projecto,Horas)
Falta analisar o tipo de participação das entidades no relacionamentos.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–23
Relacionamentos (Grau e Atributos)
•
Grau de um relacionamento:

número de entidades no relacionamento.

Ex. de um relacionamento ternário:
fornece(Fornecedor, Produto, Projecto)
•
Relacionamentos com atributos.
Horas é um atributo do relacionamento
trabalhaEm(Empregado, Projecto, Horas)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–24
Relacionamentos (Restrições)
•
•
Restrições nos relacionamentos:

permitem limitar as combinações possíveis entre entidades participantes

Ex: um empregado trabalha para apenas um departamento.
Tipos de Restrições:

Cardinalidade dos Relacionamenos:
• tipo de participação das entidades no relacionamento
• 1 : N -- um para-muitos
trabalhaPara(Empregado, Departamento)
• M : N -- muitos-para -muitos
trabalhaEm(Empregado, Projecto, Horas)
• 1 : 1 -- um-para-muitos
dirige(Empregado, Departamento)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–25
Restrições nos Relacionamentos (cont.)

Tipo de participação:
• especifica se a existência de uma instância de entidade depende do seu
relacionamento com outra entidade, via esse relacionamento.
• Participação total (dependência existêncial)
– quando todas as instâncias de uma entidade estão relacionadas com
alguma instância de uma outra entidade participante no
relacionamento.
trabalhaPara(Empregado, Departamento)
• Participação parcial
– quando não se espera que todas as instâncias de uma entidade
participem no relacionamento.
dirige(Empregado, Departamento)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–26
Entidades Fracas
• Entidade Fraca:

é identificada pelo seu relacionamento (relacionamento
identificador) com determinadas entidades (entidade
identificadora)

tem sempre participação total (dependência existêncial) em
relação ao relacionamento-identificador.

Possui uma chave-parcial, que é o conjunto de atributos que
univocamente determinam a entidade fraca relacionada com a
mesma entidade-identificadora.

Ex: dependenDe(Dependente, Empregado)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–27
Modelo ER para a BDs sobre uma Empresa
•
Entidades-tipo:
DEPARTAMENTO( Nome, Num, {Local}, )
PROJECTO( Nome, Num, Local )
EMPREGADO( Nome(P,U), NumBI, Sexo, Endereço, Salário, Dnasc )
DEPENDENTE( DNome, Sexo, Dnasc, GrauPar )
•
Relacionamentos:
trabalhaPara(Empregado,Departamento)
N:1
total/total
dependeDe(Dependente,Empregado)
N:1
total/parcial
controla(Departamento,Projecto)
1:N
parcial/total
dirige(Empregado,Departamento, GerData)
1:1
parcial/parcial
supervisiona(Empregado,Empregado)
1:N
parcial/parcial
M:N
total/total
Supervisor
Supervisionado
trabalhaEm(Empregado,Projecto,Horas)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–28
Diagramas ER
•
Ênfase na representação dos esquemas em vez de instâncias de entidades e
relacionamentos.
•
Notação para os diagramas:
Atributo
Atributo-Chave
Entidade-Tipo
Atributo-Multivalor
Entidade-Fraca
Atributo-Derivado
Relacionamento
Atributo-Composto
Relacionamentoidentificador
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–29
Diagramas ER (cont.)
E1
E1
R
1
E2
N
R
R
1:N
E2
E
(min,max)
Participação-total de E2
em R
Restrição-estrutural
da participaçaõ de E em R
• Uma entidade E participa num relacionamento R com restrição (min,max) em que
0 >= min <= max e max >= 0, se para cada entidade e de E, e participa pelo menos
min e no máximo max instâncias do relacionamento R.
min = 0 -- participação parcial
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–30
Exemplo Restrição-Estrutural
• No diagrama:
um empregado trabalha para um departamento
 Num departamento trabalham pelo menos 4 empregados

Empregado
(1,1)
(4,N)
trabalhaPara
Departamento
• Nomes para as entidades-tipo, atributos e relacionamentos deve ser
feita com critério:
entidades - nomes singular
 atributos - nomes
 relacionamentos - nomes ou verbos de forma a facilitar a leitura da
esquerda para
a direita

MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–31
O Modelo EER (ER Extendido)
•
BDs recentes (Multimédia, GIS, CAD/CAM,…) requerem novos conceitos semânticos
de modelação:

•
subclasse, superclasse, especialização e generalização, herança de atributos, etc.
Subclasses e Superclasses



uma subclasse corresponde a um sub-conjunto de entidades com alguma característica comum
e pertencentes à mesma entidade-tipo
superclasse corresponde à entidade-tipo que aglutina os vários sub-conjuntos de entidades, i.e.
subclasses.
Ex:
Empregado
superclasse
subclasses
MI, MIAC 2002
Secretárias
Engenheiros
Michel Ferreira, DCC - FCUP
Técnicos
Directores
1–32
O Modelo EER (Relacionamento ISA)
• O relacionamento ISA (ou superclasse/subclasse) caracteriza a ligação
entre as subclasses e a respectiva superclasse
Director
isa
Empregado
Secretária
isa
Empregado
Técnico
isa
Empregado
uma entidade membro de uma subclasse representa a mesma entidadefísica de um membro da superclasse, apenas os “papeis” são diferentes.
 Ex. A entidade Director de nome X é a mesma entidade X de Empregado;

MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–33
EER: Herança de Atributos
• As subclasses herdam todos os atributos da sua superclasse
• uma subclasse com todos os atributos que herda da superclasse, é uma
entidade-tipo.
• Porquê a divisão em subclasses?
Certos atributos aplicam-se a apenas algumas instâncias da superclasse
 Alguns relacionamentos podem ter participação de apenas alguns
membros de uma subclasse

MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–34
EER: Especialização
• Especialização





é o processo de de definição do conjunto das subclasses de uma
entidade-tipo (superclasse da especialização)
e.g. {Secretária, Engenheiro, Técnico} especializa
Empregado com base no tipo de trabalho.
podemos ter várias especializações da mesma entidade-tipo com
base em diferentes características.
Podemos associar atributos específicos (extra) a cada subclasse
estabelecer relacionamentos-tipo específicos entre uma subclasse e
outras entidades-tipo ou outras subclasses
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–35
Diagrama EER
• 3 especializações de Empregado
Nome
Empregado
NumBI
d
d
EmpPrazo
Director
EmpEfectivo
Escalão
Secretária
Técnico
Engenheiro
Salário
Salário
Efiliado
dirige
Qualificação
EngTipo
VelEscrita
Sindicato
Projecto
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–36
EER: Generalização
•
Generalização: processo funcionalmente inverso da especialização.

eliminam-se as diferenças entre várias entidades-tipo, identificam-se as caracteristicas comuns que passarão a
caracterizar uma nova superclasse da qual as entidades-tipo originais são subclasses especiais.
Carro(Matricula, Nreg, Npass, VelMax, Preço)
Camião(Matricula, Nreg, Neixos, Tonelagem, Preço)
generalizando temos:
Nreg
Veículo
Matricula
Preço
d
Carro
Camião
Tonelagem
Npass
VelMax
MI, MIAC 2002
Neixos
Michel Ferreira, DCC - FCUP
1–37
Tipos de Especialização/Generalização
• Especialização definida-por-atributo
quando a divisão em subclasses se basei numa condição de membro
 e.g. condição tipoTrabalho=“secretária” determina quais dos empregados
vão pertencer à subclasse Secretária.

• Especialização definida-por-utilizador

quando não existe a condição.
• Especialização disjunta

d
quando as subclasses são disjuntas, i.e. cada entidade pode ser membro de
no máximo uma subclasse de especialização.
• Especialização com sobreposição o

quando a mesma entidade pode pertencer a mais do que uma subclasse,
e.g. a superclasse Pessoa pode decompor-se em subclasses Empregado,
Estudante, Licenciado (e.g. um assistente é um empregado da
universidade, é licenciado e é aluno de doutoramento)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–38
Tipos de Especialização/Generalização (cont.)
• Especialização Total (linhas duplas nos diagramas)
quando toda a entidade de uma superclasse tem de ser membro de alguma
sub-classe.
 e.g. especialização {EmpEfectivo, EmpPrazo} de Empregado. Todos
empregados estão numa das subclasses.

• Especialização Parcial (linha simples nos diagramas)

permite que uma entidade não pertença a qualquer das subclasses.
• Temos assim 4 tipos de especialização:
disjunta total; disjunta parcial; sobreposição total; sobreposiçaõ parcial
 o tipo de especialização é determinado a partir do significado na vida real

• A generalização de uma superclasse é habitualmente total

contém as entidades das subclasses de onde foi derivada.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–39
Modelo Relacional
• Introduzido por Codd (1970)
• Base de Dados = Conjunto de relações
• Relação <==> Tabela
Filme (Título, Ano, Duração, Tipo)
Esquema
atributos
Filme
Título
Ano
Zorro
1998
Guerra das Estrelas 1977
Mighty Ducks
MI, MIAC 2002
1991
Duração
Tipo
120
124
104
cor
cor
cor
Michel Ferreira, DCC - FCUP
tabela
tuplo
1–40
Esquema Relacional de uma BDs
Empregado(Pnome,Unome,EBI,Dnasc,Morada,Sexo,Salário,SuperBI,Ndep)
Departamento(Dnome,Dnum, DirBI, DirData)
Locais_Dep(Dnum,Dlocal)
Projecto(Pnome,Pnum,Plocal)
TrabalhaEm(EBI,Pnum,Horas)
Dependente(EBI,Nome,Sexo,Dnasc,GrauParentesco)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–41
Modelo Relacional: conceitos
• Domínio:

conjunto de valores de um dado tipo que caracterizam um atributo
• Tuplos:
sequência ordenada de valores (ordem da sequência é importante)
 tuplos de uma relação (ou tabela) não têm ordem
 os valores das componentes de um tuplo são atómicos

• no relacional não pode haver atributos compostos ou multivalor
• Chave de uma relação R
identifica de forma única os tuplos de R
 conjunto mínimo de atributos de R, t.q. não existem 2 tuplos distintos de R
com valores iguais nesses atributos.
 Uma relação pode ter várias chaves candidatas

• chave primária; chaves alternativas
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–42
Restrições Intrínsecas do Relacional
•
Integridade de entidade

•
Unicidade da chave

•
não podem existir 2 tuplos diferentes com valores iguais na chave
Chave externa

•
os valores da chave-primária não podem ser nulos
conjunto de atributos de uma relação que referenciam a chave de outra relação
Integridade referêncial

um tuplo de uma relação que se refira a uma outra relação, tem de se referir a um tuplo existente nessa relação
•
•
garante consistência entre tuplos de 2 relações
e.g. os tuplos correspondentes ao empregado-supervisor com EBI 3456789 e ao departamento número 5 têm de existir, dado o
seguinte empregado:
Empregado(João,Pinto,7654321,19975-03-04,R. das Fontainhas,M,250000,3456789,5)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–43
Interpretação de uma relação
•
•
•
•
Relações uniformizam a representação de factos sobre entidades e
relacionamentos
Um esquema de uma relação deve ser visto como uma declaração
Esquema de BD relacional = conjunto de esquemas relacionais +
conjunto de restrições de integridade
Operações no modelo relacional:
actualizações: inserir, remover e modificar
 consultas: álgebra relacional

MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–44
Operação inserir
•
•
Permite inserir um ou mais tuplos numa tabela
pode violar qualquer dos 4 tipos de restrições:
domínio: se um dos valores não pertencer ao domínio
 chave: o valor da chave do novo tuplo já existe num outro tuplo da tabela
 integridade de entidade: se o valor da chave do novo tuplo for null
 integridade referêncial: se o valor de uma chave externa referir um tuplo não
existente.

•
Se uma das restrições for violada, opta-se por:
rejeitar a inserção (com aviso ao utilizador)
 ou, tentar corrigir a razão para a rejeição ocorrer.

MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–45
Operação remover
• remove tuplos de valores de uma tabela
• pode violar apenas a integridade referêncial:

no caso de o tuplo a remover for referenciado por uma das chavesexternas de outro tuplo naBDs.
• Requer uma condição sobre os atributos de forma a selecionar o tuplo
ou tuplos a serem removidos

remover todos os empregados do departamento 10.
• Caso ocorra violação, opta-se por:
rejeitar a operação, ou
 procurar propagar a operação e remover todos os tuplos que referenciam o
que está a ser removido, ou
 alterar para null os valores dos atributos dos tuplos que referenciam o que
está a ser removido

• Operação modificar = remover+inserir (regras destas operações)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–46
Conversão do Modelo ER para o Modelo Relacional
•
Passo 1:



entidade-tipo
relação
atributos simples da entidade
atributos compostos
chave da entidade
atributos da relação
atributos individuais na relação
chave da relação
Sexo
...
Pnome
EBI
Nome
Empregado
Empregado
MI, MIAC 2002
Pnome
Unome
Unome
EBI
Sexo
...
Michel Ferreira, DCC - FCUP
1–47
ER
•
Passo 2:


Relacional
entidade-fraca
relação
Seja W uma entidade-fraca e E a entidade-identificadora de W:
Criar uma relação R em que:
•
•
atributos simples de W
chave-principal de E e chave-parcial de W
atributos de R
chave-principal de R
Nome
dependeDe
Empregado
EBI
Dependente
...
...
Chave-externa
Dependente
MI, MIAC 2002
EBI
Nome
Sexo
...
Michel Ferreira, DCC - FCUP
1–48
ER
•
Passo 3:


Relacional
relacionamento binário 1:1 R(E1,E2)
Sejam S e T as relações correspondentes às entidade E1 e E2, respectivamente.
Escolhes-se uma das relações, e.g. S (a que corresponde à entidade com participação total em R) e:
•
•
incluir como chave externa em S a chave-principal de T
incluir todos atributos simples do relacionamento R na relação S
Dnum
Empregado
EBI
dirige
(0,1)
Departamento
(1,1)
...
DirData
Chave-externa
Departamento Dnome
MI, MIAC 2002
Dnum
DirBI
DirData
Michel Ferreira, DCC - FCUP
1–49
ER
•
Passo 4:


Relacional
relacionamento binário 1:N R(E1,E2)
Sejam S e T as relações correspondentes às entidade E1 e E2, respectivamente.
Escolhes-se a relação que corresponde à entidade participante do lado N em R, suponha-se que é S:
•
•
incluir como chave externa em S a chave-principal de T
incluir todos atributos simples do relacionamento R na relação S
Dnum
EBI
trabalhaPara
Empregado
Departamento
1
N
...
Chave-externa
Empregado
MI, MIAC 2002
Pnome
...
EBI
... DNum
Michel Ferreira, DCC - FCUP
1–50
ER
•
Passo 5:

Relacional
relacionamento binário M:N R(E1,E2)
Criar uma nova relação S para representar o relacionamento R.
•
•
•
incluir como chave externa em S as chaves-principais das relações que representam as entidades E1 e E2
participantes em R
o conjunto das chaves-externas formará a chave-principal de S
incluir todos atributos simples do relacionamento R na relação S
Pnum
EBI
trabalhaEm
Empregado
Projecto
N
M
...
Horas
trabalhaEm
MI, MIAC 2002
EBI
Pnum
Michel Ferreira, DCC - FCUP
chaves-externas
e
chave-principal
Horas
1–51
ER
•
Passo 5:

Relacional
relacionamento binário M:N R(E1,E2)
Criar uma nova relação S para representar o relacionamento R.
•
•
•
incluir como chave externa em S as chaves-principais das relações que representam as entidades E1 e E2
participantes em R
o conjunto das chaves-externas formará a chave-principal de S
incluir todos atributos simples do relacionamento R na relação S
Pnum
EBI
trabalhaEm
Empregado
Projecto
N
M
...
Horas
chaves-externas
e
chave-principal
Nota: os relacionamentos 1:1 e 1:N
também podem ser transformados de
acordo com o passo 5.
trabalhaEm
MI, MIAC 2002
EBI
Pnum
Michel Ferreira, DCC - FCUP
Horas
1–52
ER
•
Passo 6:

Relacional
atributos-multivalor
Para cada atributo A multivalor, cria-se uma nova relação S que
•
•
inclui o atributo de A mais a chave-principal, K, da relação que representa a entidade ou relacionamento
que tem A como atributo multivalor.
A chave-principal de S será acombinação de A e K.
Dnum
Departamento
Dlocal
Ex: um departamento pode ter
várias localizações.
...
Locais_Dep
Dnum
Dlocal
Nota: os passos de 1 a 6 seriam suficientes
para converter o esquema-ER no
esquema-relacional para a BDs Empresa.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–53
ER
•
Passo 7:

Relacional
relacionamentos com aridade superior a 2 (mais de 2 entidades)
Para cada relacionamento R com aridade n>2, criar uma nova relação S:
•
•
•
incluir como chaves-externas em S, as chaves-principais das relações que representam as entidades participantes.
A chave-principal de S será o conjunto de todas as chaves-externas.
Incluir como atributos de S, todos os atributos do relacionamento R.
Fnome
Fornecedor
fornecimento
Projecto
Qtd
Pnum
Produto
Pnome
Fornecimento
MI, MIAC 2002
Fnome
Pnome
Pnum
Qtd
Michel Ferreira, DCC - FCUP
1–54
EER
•
Relacional
Passo 8: Converter cada especializaçao com m subclasses (S1,…,Sm) e superclasse (generalizada) C,
onde os atributos de C sao (k,a1,…,an) em que k é a chave primária, para relaçoes usando uma das
seguintes 4 opçoes:




8a – Criar uma relaçao L para C com atributos atrib(L) = (k, a1,…,an) e cp(L) = k. Criar uma relaçao Li para
cada subclasse Si, 1<=i<=m, com atributos atrib(Li)=(k) + (atributos de Si) e cp(Li) = k.
8b - Criar uma relaçao Li para cada subclasse Si, 1<=i<=m, com atributos atrib(Li)=(atributos de Si) +
(k,a1,…,an) e cp(Li) = k.
8 c - Criar uma única relaçao L com atributos atrib(L) = (k, a1,…,an) + (atributos de S1) + … + (atributos de
Sm) + (t) e cp(L) = k. Esta opçao é para uma especializaçao com subclasses disjuntas, e t é um atributo de tipo
que indica a subclasse a que cada tuplo pertence, se alguma.
8d - Criar uma única relaçao L com atributos atrib(L) = (k, a1,…,an) + (atributos de S1) + … + (atributos de
Sm) + (t1, …, tm) e cp(L) = k. Esta opçao é para uma especializaçao com subclasses sobrepostas, e cada ti,
1<=i<=m, é um atributo booleano que indica se um tuplo pertence à subclasse Si.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–55
Exercício de modelação
Os STCP pretendem construir uma base de dados sobre os percursos dos
seus autocarros. A base de dados deve guardar informação relativa aos
autocarros, como sejam a matrícula, a data de entrada em serviço, o número de
quilómetros,
a
data
da
próxima
revisão
e
o
tipo
(marca/modelo)
de
autocarro. Cada tipo de autocarro tem uma marca, um modelo, um número
de lugares sentados e um número de lugares de pé. A base de dados deve
guardar também informação relativa aos percursos. Um percurso é identificado por
um
número
(e.g.
78,
35)
e
tem
uma
distância
total
em
quilómetros.
Os
percursos
percorrem
paragens.
As
paragens
têm
um
número identificador, um nome, e uma localização decomposta em local,
rua e número. Existem limitações aos percursos que um determinado tipo
de autocarro pode fazer, inerentes às suas dimensões. Estas limitações
devem ficar registadas na base de dados. Existe um percurso especial
para quando um autocarro mais o respectivo condutor são alugados, e
este percurso não percorre paragens. Deve ser guardada também informação
relativa aos condutores, como sejam o número de BI, o nome, a morada, a data de
entrada em serviço e os percursos que cada condutor está habilitado a fazer (um
condutor
pode
estar
habilitado
a
fazer
vários
percursos).
Na
base
de
dados
deve
ficar
registada
também
informação
operacional
diária,
correspondente
ao
registo
de
saídas.
Existem
três
turnos
de
saída, 6h, 14h e 22h. Um autocarro e um condutor fazem no máximo uma
saída por dia, podendo não fazer nenhuma. A informação do registo de
saída inclui a data, o turno, o condutor, o autocarro e o percurso atribuído.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–56
Exercício de modelação (cont.)
•
•
•
Desenhe um diagrama-ER ou EER para a base de dados descrita acima indicando as
chaves das entidades, a cardinalidade dos
relacionamentos e o tipo de participações.
Converta o diagrama da alínea anterior para o modelo relacional justificando os passos
que efectua na conversão.
Diga se o seu modelo relacional consegue responder à questão
``Na data 24/12/00 no turno das 22h quantos autocarros fizeram o
percurso 78?''. Justifique.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–57
“Boas” relações: como?
•
o significado do esquema da relação deve ser simples de explicar

•
não combinar os atributos de várias entidades e relacionamentos numa única
relação
evitar relações que permitam o aparecimento de anomalias de inserção:
Emp_Dep(Enome, EBI, Dnasc, Morada, Dnum, Dnome, DirDep)
• inserir um tuplo de um novo empregado, teremos de incluir valores sobre o departamento
onde trabalha. Quando adicionamos info sobre o departamento, temos de ser consistentes
com os valores adicionados sobre o mesmo departamento para outros empregados
•
•
evitar ter atributos numa relação cujo valor pode ser nulo, pois nem sempre se
sabe qual a interpretação a aplicar.
conceber relações que possam ser combinadas por uma operação de junção
com base numa condição de igualdade em atributos que são chaves-principais
ou chaves-externas (evita-se gerar tuplos que não deviam existir -- spurious
tuples)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–58
Desenho de BDs
SGBD O-O
ODL
(object definition lang.)
Relações
Ideias
(info a modelar)
ER/EER
(entidade/relacionamento)
Conceptualização
•
SGBD Relacional
Implementação
A modelação visa definir a estrutura da BDs antes da sua implementação, de forma a permitir a sua
compreensão por parte dos utilizadores.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–59
Bases de Dados orientadas a objectos
• Os modelos de BD relacionais, hierárquicos e de rede tem
sido bem sucedidos nas aplicaçoes tradicionais que
requerem recurso a BD’s.
• Aplicacoes mais complexas revelaram algumas falhas
destes modelos:



Telecomunicacoes
Sistemas de Informaçao Geográfica
Multimédia
• Problemas:




Estruturas de objectos do mundo real mais complexas
Transacçoes de longa duraçao
Novos tipos de dados para representar imagens e outros objectos
binários de grande dimensao (BLOB’s)
Definiçao de operaçoes nao-standard para aplicaçoes específicas
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–60
BD’s orientadas a objectos (cont.)
• As BDOO permitem especificar num único processo de
modelaçao a estrutura de objectos complexos bem como as
operaçoes específicas aplicáveis a esses objectos.
• O crescente uso de linguagens de programaçao genéricas
OO torna útil a existencia de SGBOO onde a integraçao de
código seja facilitada.
• Os sistemas relacionais começam a incluir também
conceitos OO – sistemas “object-relational” – extendendose ao SQL – SQL3.
• Alguns protótipos de SGBDOO:


OPENOODB – Texas Instruments
ODE – AT & T Bell Labs
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–61
Conceitos de BDOO’s
• Identidade de objecto


Identidade única de cada objecto do mundo real
Identificador único (gerado pelo sistema)
•
•
•
•

Imutável
Usado uma única vez
Independente de atributos
Por vezes baseado no endereço físico
Os primeiros modelos OO requeriam que tudo – desde um simples
valor a um objecto complexo – fosse representado como um
objecto:
• Inteiros, strings, valores Booleanos – tem um identificador de
objecto.
• Nao é eficiente e os SBDOO distinguem entre objecto e valor.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–62
Conceitos de BDOO’s (cont.)
• Estrutura de objecto

O estado (valor actual) de um objecto complexo pode ser
construído a partir de outros objectos (ou outros valores) usando
construtores de tipo.
• Um objecto é formalmente representado por trio (i, c, v), onde i é um
idenficador de objecto único, c é um construtor de tipo e v é o estado
do objecto (ou valor corrente).
• Existem vários construtores de tipo:
–
–
–
–
–
–
Atom
Tuple
Set
List
Bag
Array
• O estado de um objecto, v, (i,c,v), é interpretado com base no
construtor.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–63
Estrutura de objecto
• Se o construtor c é atom o estado (valor) v é um valor
atómico do domínio de valores básicos suportados pelo
sistema (inteiros, strings, etc.).
• Se c = set, o estado v é um conjunto de identificadores de
objecto, referenciando objectos que, tipicamente, sao do
mesmo tipo.
• Se c = tuple, v é um tuplo da forma <a1:i1,a2:i2,...,an:in>
onde cada ai é um nome de atributo e cada ii é um IDO.
• Se c = list, v é uma lista ordenada [i1,i2,...,in] de IDO’s do
mesmo tipo.
• Os objectos podem ser estruturados arbitrariamente
aplicando vários tipos de construtores.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–64
Exemplos de objectos
O1 = (i1, atom, ‘Houston’)
O2 = (i2, atom, ‘Bellaire’)
O3 = (i3, atom, ‘Sugarland’)
O4 = (i4, atom, 5)
O5 = (i5, atom, ‘Research’)
O6 = (i6, atom, ‘1988-05-22’)
O7 = (i7, set, {i1,i2,i3})
O8 = (i8, tuple, <DNAME:i5,DNUMBER:i4,MGR:i9,LOCATIONS:i7,EMPLOYEES:i10,
PROJECTS:i11>)
O9 = (i9, tuple, <MANAGER:i12,MANAGER_START_DATE:i6>)
O10 = (i10, set, {i12,i13,i14})
O11 = (i11, set, {i15,i16,i17})
O12 = (i12, tuple, <FNAME:i18,MINIT:i19,LNAME:i20,SSN:i21,...,SALARY:i26,
SUPERVISOR:i27,DEPT:i8>)
...
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–65
Representaçao de um objecto complexo como um grafo
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–66
Objectos identicos vs. iguais
• Dois objectos tem estados identicos (deep equality) se os
grafos representando os seus estados sao identicos em
todos os aspectos, incluindo os IDO’s em todos os níveis.
• Dois objectos tem estados iguais (shalow equality) se a
estrutura dos seus grafos é a mesma e todos os valores
atómicos no grafo sao também os mesmos.

Exemplo:
•
•
•
•
•
•

O1 = (i1, tuple, <a1:i4,a2:i6>)
O2 = (i2, tuple, <a1:i5,a2:i6>)
O3 = (i3, tuple, <a1:i4,a2:i6>)
O4 = (i4, atom, 10)
O5 = (i5, atom, 10)
O6 = (i6, atom, 20)
Os objectos O1 e O2 tem estados iguais, enquanto O1 e O3 tem
estados identicos.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–67
Linguagem de definiçao de objectos (ODL)
• Uma linguagem de definiçao de objectos que inclua os construtores de
tipo descritos pode ser usada para definir os tipos de objectos de uma
determinada aplicaçao de BD.

Exemplo:
Definiçao de estruturas de dados de um esquema de BD OO:
define type Employee:
tuple (
fname:
minit:
lname:
ssn:
birthdate:
address: string;
sex:
salary:
supervisor:
dept:
MI, MIAC 2002
string;
char;
string;
string;
Date;
char;
float;
Employee;
Department;
Michel Ferreira, DCC - FCUP
);
1–68
Encapsulamento
• Na declaraçao dos objectos é possível incluir a definiçao dos métodos
aplicáveis sobre os objectos.
• Em BD relacionais um conjunto de operaçoes standard sao aplicáveis
sobre todos os objectos (selecçao, inserçao, etc.).
Exemplo:
define class Employee:
type tuple (
operations
fname:
minit:
lname:
ssn:
birthdate:
address: string;
sex:
salary:
supervisor:
dept:
age:
create_emp:
destroy_emp:
string;
char;
string;
string;
Date;
char;
float;
Employee;
Department;
integer;
Employee;
boolean;
);
end Employee;
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–69
Object Definition Language
• Um standard definido pelo ODMG (bem como o OQL (questões)).
• Permite especificar a estrutura (esquema) da BDs.

Não permite interrogar ou manipular a BDs
• Parece-se com C++ (e Smalltalk).
• O paradigma subjacente ao ODL é:
Modelar objectos e suas propriedades.
 Objectos são identificados de forma única (OID), distinguindo-se de
qualquer outro objecto.

• Para se atingir algum nível de abstracção:

Agrupam-se os objectos em classes.
• O que é que determina uma boa classe?

Os objectos devem ter propriedades comuns (e.g. clientes de um banco)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–70
Declaração de Classes em ODL
class <nome> {
atributos: <tipo> <nome>;
relacionamentos <intervalo-tipo> <nome>;
métodos;
}
• Classes definem um tipo abstracto de dados com:
- atributos: propriedades que descrevem aspectos de um objecto por
atribução de valores ou referencia a outro objecto;
- relacionamentos: propriedades que correspondem a uma interacçao
mútua entre objectos;
- métodos (ou funções): que podem ser executados sobre objectos de
uma classe.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–71
Classes/Objectos em ODL
• class Filme {
attribute string titulo;
attribute integer ano;
attribute integer duração;
attribute enum Tfilme {cor, preto-e-branco} tipoFilme;
};
um objecto da classe Filme é o tuplo:
(“Hercules - Disney”, 1998, 94, cor)
• Os atributos podem não ser atómicos:
class Actor {
attribute string nome;
attribute Struct End {string rua, string cidade} endereço;
};
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–72
ODL - exemplo
ano
duração
título
tipo
Filme
Actor
rua
nome
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
endereço
cidade
1–73
Relacionamentos em ODL
• É natural que alguns atributos de objectos sejam referências para outros
objectos da mesma ou de outras classes.
• Como representar num objecto da classe Filme, o conjunto de Actor(es)
de um filme? Adiciona-se à classe Filme:
Para cada objecto da classe Filme
relationship Set<Actor> actuam;
existe um conjunto de referências
a objectos da classe Actor
• Relacionamentos-inversos: representamos os actores de um dado filme,
mas podemos estar também interessados nos filmes onde participa um
dado actor. Adicionar à classe Actor:
relationship Set<Filme> participa
inverse Filme::actuam;
Se S  actuam para o filme F,
Então F  participa para o Actor S
•Em ODL é necessário que os relacionamentos tenham inversa.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–74
Multiplicidade dos relacionamentos
• Para efeitos de relacionamento inverso, é importante saber
a multiplicidade do relacionamento, i.e. se um dado
objecto se relaciona com um único objecto, ou se se
relaciona com muitos outros.
• Multiplicidades mais comuns:



muitos-muitos (de C para D). Conjunto de D´s associado a cada C,
e para a inversa tem-se um conjunto de C´s associado a cada D.
muitos-um (de C para D). Para cada C existe um único D, e para a
inversa tem-se que para cada D existe um conjunto de C´s.
um-um (de C para D). Cada C está relacionado com um D e para a
inversa, cada D relaciona-se com um único C.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–75
ODL - exemplo 2
ano
duração
título
tipo
Filme
actuam
participa
Actor
rua
nome
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
endereço
cidade
1–76
ODL - exemplo
ano
duração
tipo
título
Filme
actuam
pertence
participa
possui
Estúdio
Actor
tem
Presidente
preside
nome
MI, MIAC 2002
endereç
o
nome
nome
anoInic
Michel Ferreira, DCC - FCUP
rua
endereço
cidade
1–77
Classes do exemplo
class Filme {
attribute string titulo;
attribute integer ano;
attribute integer duração;
attribute enum Tfilme
{cor, preto-e-branco} tipo;
relationship Set<Actor> actuam
inverse Actor::participa;
relationship Estúdio pertence
inverse Estúdio::possui;
};
class Actor {
attribute string nome;
attribute Struct End
{string rua, string cidade}
endereço;
relationship Set<Filme> participa
inverse Filme::actuam;
};
MI, MIAC 2002
class Estúdio {
attribute string nome;
attribute string endereço;
relationship Set<Filme> possui
inverse Filme::pertence;
relationship Presidente tem
inverse Presidente::preside;
};
class Presidente {
attribute string nome;
attribute string anoInic;
relationship Estúdio preside
inverse Estúdio::tem;
};
Michel Ferreira, DCC - FCUP
1–78
Tipos em ODL
Tipos básicos:
• tipos atómicos (string, integer, float, character, boolean,...)
• tipos interface (e.g., Filme, Actor), representam tipos mais complexos
definidos como estruturas com base em constructores tipo.
Constructors:
(1, 5, 6)
Bag: (1, 1, 5, 6, 6 )
List: (1, 5, 6, 1, 6 )
Array: Array<T,i>
Se T é um tipo, então Set<T> é o tipo cujos valores
são todos conjuntos finitos de elementos do tipo T.
Admite elementos repetidos.
string  List<char>
(T tipo, i inteiro) denota o tipo cujos elementos são
vectores com i elementos do tipo T.
Tipo-conjunto
Set:
Struct: Struct Morada {string rua, string cidade, integer código_postal}
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–79
Tipos admissíveis em ODL
Atributos: pode ser um tipo atómico ou struct; pode-se depois aplicar um
tipo-conjunto ao tipo atómico ou struct.
SIM: string, set of integer, bag of Actor
NÃO: Filme, set of set of integer
Um atributo não pode ser do tipo interface.
Relacionamentos: pode ser um tipo interface ou um tipo-conjunto aplicado
a um tipo interface.
SIM: Filme, set of Filme, list of Filme
NÃO: struct {Filme f, Actor a}, set of bag of Filme, set<integer>, integer
Um relacionamento não pode ser do tipo atómico.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–80
Correspondência entre ODL e ER
• Entidades tipo
Classes
• Atributos
Atributos
• Relacionamentos
Relacionamentos
No modelo ER, os relacionamentos tem apenas um nome nas duas
direcções e podem envolver mais do que 2 entidades (no modelo ODL,
não!).
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–81
Subclasses
• Alguns objectos numa classe poderão ter propriedades não partilhadas
por outros membros:
Filme
Cartoons
Policial
• Em ODL:
interface Cartoon: Filme {
relationship Set<Actor> vozes
inverse ...;
};
esta nova classe, além da propriedade vozes, herda ainda as propriedades da
classe Filme;
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–82
Herança múltipla
Filme
Cartoon
Policial
Quem tramou
o Roger Rabit?
Cartoon-Policial
• uma subclasse herda todas as propriedades das suas superclasses.
• as subclasses de uma classe podem dar origem a novas subclasses,
constituindo uma hierarquia de classes.
• uma classe pode ter mais do que uma superclasse.
Interface Cartoon-Policial: Cartoon, Policial {};
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–83
Herança múltipla em ER
titulo
Actor
ano
duração
tipo
Filme
vozes
isa
isa
Cartoon
arma
Policial
• as hierarquias são representadas por relacionamentos ISA.
• A isa B - A é um caso especial de B; A é uma especialização de B;
B é uma generalização de A.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–84
Restrições
• para além das restrições de estrutura e de tipos de valores, modelada
pelas classes (entidades), atributos e relacionamentos
• é necessário considerar outras restrições:

chave
conjunto de atributos que identificam de forma única um objecto ou
entidade


restrições de valor único


restrições de integridade referencial


e.g. especificar que uma pessoa pode apenas ter um pai
um valor referenciado por um objecto tem de existir.
restrições de domínio
o valor de um atributo tem de pertencer a um conjunto de valores.
e.g. idade de pessoas estão entre 0 e 150.


restrições gerais
asserções arbitrárias que têm de se verificar.
e.g. podíamos querer não registar mais do que 10 actores por filme.

MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–85
Chaves em ODL
• um objecto pode ter várias chaves.
• Exemplos:
Interface Pessoa
(key ncontrib)
{
propriedades...
};
Chave é atributo
simples
MI, MIAC 2002
Interface Filme
(key (titulo, ano))
{...};
Interface Empregado
(key empID, empBI)
{...};
Chave é atributo
composto
Michel Ferreira, DCC - FCUP
2 chaves
1–86
Princípios para boa modelação
• fidelidade
o modelo deve ser fiel ao mundo real
 os objectos (entidades) devem reflectir a realidade.
 Relacionamentos devem fazer sentido na parte do mundo em modelação

• evitar redundância

usa mais espaço; sujeito a inconsistências.
• simplicidade conta

evitar mais elementos do que é necessário.
• escolher o tipo de elemento certo

por vezes pode usar-se um atributo ou uma entidade para representar um conceito
 se uma entidade possui apenas o nome, pode ser um atributo. Se possui mais informação
deve ser entidade.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–87
Exemplo Empregado-Departamento em ODL
class Employee
(key ssn)
{ attribute string name;
attribute string ssn;
...
attribute float salary;
relationship Department works_for
inverse Department::has_emps;
void reassign_emp(in string new_dname)
raises(dname_not_valid);
};
class Department
(key numD)
{
attribute integer numD;
attribute string name;
attribute set <string> location;
atribute struct Dep_Mgr{Employee manager,
date start_date};
relationship Set<Employee> has_emps
inverse Employee::works for;
void add_emp(in_string new_ename)
raises(ename_not_valid);
}
Complete o modelo com as classes Projecto e Dependente.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–88
O Modelo Relacional
Modelo da
Base de dados
(ODL, ER)
Definições ODL
Diagramas ER
MI, MIAC 2002
Esquema
Relacional
Tabelas:
colunas: atributos
linhas: tuplos
Michel Ferreira, DCC - FCUP
Espaço em
Disco
Complexa organização
em ficheiro e estruturas
de índice
1–89
Do ODL para o Relacional
• As relações aproximam-se mais da implementação, pelo que:
(ER, ODL) ginástica mental
Relacional
• Caso simples: ODL classe com atributos de valor único.
interface Filme {
attribute string titulo;
attribute integer ano;
attribute integer duração;
attribute enum {cor, preto-e-branco} tipo;
};
Criar uma relação com o mesmo nome e atributos da classe.
Filme( título, ano, duração, tipo)
Filme
Título
Ano
Duração
Tipo
Zorro
1998
120
cor
ou como tabela:
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–90
Classes sem relacionamentos
• O ODL permite atributos que podem ser estruturas ou conjuntos

Estruturas: criar um atributo para campo das estrutura.
interface Actor {
attribute string nome;
attribute Struct
{string rua, string cidade} endereço;
Actor( Nome, Rua, Cidade)
};

Conjuntos: criar um tuplo para cada valor do conjunto?
interface Actor {
attribute string nome;
attribute Set<
Struct {string rua, string cidade}
> endereço;
};
Nome
Rua
Cidade
Harrison Ford
789 Palm Dr.
Beverly Hills
Harrison Ford
5th Avenue
New York
Problemas: mais do que um atributo-conjunto? Criar tuplos para todas as combinações.
A classe pode não ter chave, mas a relação tem de ter!
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–91
Exemplo
interface Actor {
attribute string nome;
attribute Set<
Nome
Rua
Cidade
DataNasc
Harrison Ford
789 Palm Dr.
Beverly Hills
10/5/50
Struct {string rua, string cidade} Harrison Ford
> endereço;
Judy Foster
5th Avenue
300 Stars Av.
New York
Beverly Hills
10/5/50
18/7/62
attribute Date dataNasc;
};
• Redundância. Será grave? Vêr para N atributos do tipo Set e cada com M valores.
• Como modelar bags, lists, ou arrays?
Bag<Struct {string rua, string cidade}> endereço;
Actor(Nome,Rua,Cidade,NumVezes)
List<Struct {string rua, string cidade}> endereço;
Actor(Nome,Rua,Cidade,PosLista)
Array< Struct {string rua, string cidade},2> endereço; Actor(Nome,Rua1,Cidade1,Rua2,Cidade2)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–92
Relacionamentos de valor único
•
interface Filme {
interface Estúdio {
•
attribute string titulo;
attribute string nome;
•
attribute integer ano;
attribute string endereço;
•
attribute integer duração;
•
attribute enumeration {cor, preto-e-branco} tipo;
•
relationship Set<Actor> actuam
•
relationship Set<Filme> possui
inverse Filme::pertence;
};
inverse Actor::participa;
•
relationship Estúdio pertence
•
inverse Estúdio::possui;
•
};
•
Como tratar o relacionamento pertence?
 Incluir na relação Filme os atributos da relação Estúdio? E como seria tratado o
relacionamento inverso?
 Não.
 Proceder como com os relacionamentos um-um no modelo ER, i.e. incluir em
Filme os atributos chave de Estúdio.
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–93
Relacionamentos de valor múltiplo

Como tratar o relacionamento actuam?


Proceder como com os relacionamentos um-muitos ou muitos-muitos no ER...
Seja A  B um relacionamento multivalor:
1. Determinar as chaves de A e de B.
2. Pegar na relação correspondente à classe do lado “muitos”, seja A, e pegar na chave
de B e adicionar em A como atributos.
3. Se for muitos-muitos é necessário duplicar tuplos de A (como no ER);
Pare evitar redundância, cria-se uma nova tabela com as chaves de A e de B.
A relação Filme ficaria:
filme(Título, Ano, Duração, Tipo, NomeEstúdio, NomeActor)
(Um filme fica representado por tantos tuplos quantos os actores do filme! Redundância)
evitando redundância:
filme(Título, Ano, Duração, Tipo, NomeEstúdio) + filem-actor(Título,Ano,NomeActor)
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–94
Subclasses  Relações
Em ODL, um objecto pertence exactamente a uma classe (que herda as
propriedades de todas as superclasses)
 criar uma relação para cada classe (subclasse) com todos atributos
(incluindo os de herança) dessa classe.

titulo
ano
duração
Actor
tipo
Filme
Cartoon(titlo, ano, duração, tipoF, NomesEst, NomeActor, voz)
vozes
Filme(título, ano, duração, tipoF NomesEst, NomeActor),
isa
isa
arma
Cartoon
Policial
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–95
Relacionamentos de Grau Superior a 2 (ER)
envolve mais de duas entidades
 em geral, um relacionamento ternário representa mais informação do
que 3 relacinamentos binários:

Qtd
Fnome
Fornecedor
Pnum
fornecimento
Projecto
Pnome
Produto
Pnum
Fnome
M
Fornecedor
fornece
N
Projecto
M
M
pode_fornecer
N
N
usa
Produto
Pnome
MI, MIAC 2002
Michel Ferreira, DCC - FCUP
1–96
Relacionamentos ternários --> binários

fornecimento(f,p,j) tem significado diferente de
fornece(f,j), pode_fornecer(f,p), usa(j,p)
podemos converter um relacionamento-ternário em relacionamentos
binários, sem perda de informção, representando o relacionamentoternário como uma entidade-fraca.

Fnome
Fornecedor
Qtd
1
ff
N
fornecimento
Pnum
N
fpj
1
Projecto
N
fpr
1
Produto
MI, MIAC 2002
Pnome
Michel Ferreira, DCC - FCUP
1–97
Descargar

What is a Database Management System?