Professional Documents
Culture Documents
• Objectivos:
– aprender a usar efectivamente um Sistema de Gestão de Bases de Dados, através:
• desenho da BDs <==> modelação (ER/EER/ODL)
• criação e manipulação da BDs => programação em SQL
• estrutura do SGBDs: ficheiros de indices, transacções, concorrência, recuperação,...
• Ênfase:
– Modelo relacional
– Modelação: modelos ER, EER e ODL.
– Implementação: SQL
• Aulas práticas: desenvolvimento de uma BD
– modelação de uma BDs
– Implementação em SQL em MS-SQLserver ou Oracle
– Formulação de questões em SQL
– Interfaces à BDs (formulários ou relatórios em Access)
Bases de Dados 1
BDs: Avaliação e Bibliografia
• Avaliação:
– trabalhos práticos (obrigatórios para obter frequência -- mínimo 40%): 4/5 valores
– exame final: 16/15 valores (nota mínima: 6 valores)
• Bibliografia:
– Elmasri and Navathe, Fundamentals of Database Systems, 3rd. Ed., Addison-
Wesley, 1999.
– J. Ullman and J. Widom, A first course in Database Systems, Prentice-Hall, 1997
– Korth and Silberschatz, Database Systems Concepts, 3rd. Ed.,McGraw-Hill, 1996
Bases de Dados 2
Bases de Dados (definição)
• Conjunto dados que se relacionam entre si
• Dados: representam factos da vida real que podem ser guardados
– Contactos: nomes, endereços, telefones, ...
– Escola: alunos, professores, disciplinas, turmas, horário, ...
– Banco: cliente, conta, dependência, ...
– Clube vídeo: loja, filme, fornecedor, empregado, sócio, ...
• Vantagens:
– organização de grandes volumes de informação
– uso de programas que facilitam a definição, criação, e manipulação da BDs,
i.e. Sistemas de Gestão de Bases de Dados (SGBDs):
Oracle, Sybase, DB2, SQL-server (Access), Adabas, Ingres, ...
Bases de Dados 3
Exemplo de BDs
Filme( título, ano, duração, tipo)
Actor( nome, endereço,)
Participa( nomeA,títuloF)
Actor nome endereço
• Quais os filmes em que Harrison Ford participou? Ordene os filmes por ano de estreia.
Bases de Dados 4
Exemplo de BDs
Alunos
codAluno nomeAluno curso
95001 Catarina CC
96005 Carlos MAT
Disciplinas
codDisc nomeDisc creditos depart.
BD Bases de Dados 4 CC
AL Analise de Dados 4 MA
Funcionamento
codDisc sem anoLic anoLec prof
BD 1 3 1999 F. Silva
IA 2 3 1999 M. Filgueiras
Classificações
codAluno codDisc nota
95001 BD 14
96005 BD 14
• Listar as disciplinas frequentadas e classificações obtidas pelo aluno Carlos.
Bases de Dados 5
Desenvolvimento de BDs
Bases de Dados 6
Características de uma abordagem de BDs
• Independência dos dados
– o catálogo do sistema tem a descrição da BDs (meta-dados):
• estrutura de cada ficheiro usado para a BDs
• tipo e formato de cada item de dados
• restrições várias sobe os dados
– permite que o software do SGBDs seja independente da BD em vista.
Bases de Dados 7
Características de uma abordagem de BDs (cont.)
• Suporte de visões múltiplas dos dados
– permite fornecer diferentes perspectivas (ou visões) dos dados para diferentes
utilizadores.
– Visão:
• pode ser um subconjunto da BDs ou
• pode conter dados virtuais que são derivados de ficheiros da BDs mas que não são
explicitamente guardados.
• Exemplo: performance dos alunos de um curso (ordem alfabética de aluno).
Performance
nomeAluno nomeDisc nota sem anoLec
Catarina EDA 12 1 98/99
Catarina SO 13 2 98/99
Pedro SO 14 2 98/99
Pedro IG 15 2 98/99
Bases de Dados 8
Características de uma abordagem de BDs (cont.)
• Partilha de dados
– acesso multi-utilizador à BDs => SGBDs tem de controlar concorrência para
garantir consistência e correcção nas actualizações da BDs
– exemplo:
• vários agentes de viagens a tentarem reservar um lugar num determinado voo.
• O SGBDs tem de garantir que um determinado lugar só pode ser acedido para reserva
por apenas um agente.
Bases de Dados 9
Capacidades desejáveis para um bom SGBDs
• Controlar redundância
Bases de Dados 10
Desenho/Modelação de Bases de Dados
• Envolve determinar:
– Quais as entidades a modelar
– Como é que se relacionam as entidades
– Que restrições existem no domínio
– Como conseguir um bom modelo de dados
Bases de Dados 11
Fases no Desenho de BDs
Problema
1ª. Fase:
• entrevistas com potenciais utilizadores da BDs
• compreender e documentar os seus requisitos
Requisitos/Análise • produzir um conjunto de requisitos o mais detalhado
e completo possível
Requisitos da BDs
Desenho conceptual
2ª. Fase:
• definir um esquema conceptual da BDs que inclua
descrição das entidades da BD, relacionamentos
Esquema conceptual entre entidades e restrições
(modelo de Alto-Nível) • evitar detalhes de implementação
Bases de Dados 12
Fases no Desenho de BDs (cont.)
3ª. Fase:
• implementação da BDs usando um SGBDs comercial
Esquema da BDs
(especifico de SGBDs)
Desenho físico
4ª. Fase:
• estruturas em memória e organização dos ficheiros
da BDs
Esquema interno • ficheiros de indices
Bases de Dados 13
Formalismos de modelação de BDs
Bases de Dados 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)
Bases de Dados 15
Modelo ER: Atributos
Bases de Dados 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.
Bases de Dados 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:
Bases de Dados 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.
• 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.
Bases de Dados 19
Construção do modelo ER para a BD-Empresa
Bases de Dados 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)
Bases de Dados 21
Relacionamentos
Bases de Dados 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)
• Relacionamentos:
trabalhaPara(Empregado,Departamento) dependeDe(Dependente,Empregado)
controla(Departamento,Projecto) dirige(Empregado,Departamento, GerData)
supervisiona(Empregado,Empregado) trabalhaEm(Empregado,Projecto,Horas)
Bases de Dados 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)
Bases de Dados 24
Relacionamentos (Restrições)
• 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)
Bases de Dados 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)
Bases de Dados 26
Entidades Fracas
• Entidade Fraca:
– é identificada pelo seu relacionamento (relacionamento identific ador) 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)
Bases de Dados 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 )
• 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
Supervisor Supervisionado
Bases de Dados 28
Diagramas ER
Atributo-Chave
Entidade-Tipo
Entidade-Fraca Atributo-Multivalor
Atributo-Derivado
Relacionamento
Atributo-Composto
Relacionamento-
identificador
Bases de Dados 29
Diagramas ER (cont.)
Participação-total de E2
E1 R E2
em R
E1
1 R N E2 1:N
R E Restrição-estrutural
da participaçaõ de E em R
(min,max)
Bases de Dados 30
Exemplo Restrição-Estrutural
• No diagrama:
– um empregado trabalha para um departamento
– Num departamento trabalham pelo menos 4 empregados
Bases de Dados 31
O Modelo EER (ER Extendido)
Bases de Dados 32
O Modelo EER (Relacionamento ISA)
Bases de Dados 33
EER: Herança de Atributos
Bases de Dados 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
Bases de Dados 35
Diagrama EER
Nome • 3 especializações de Empregado
Empregado
NumBI
d
EmpPrazo
EmpEfectivo
Director
Escalão
Secretária Técnico Engenheiro
Salário
Salário
Efiliado
dirige
EngTipo
Qualificação
VelEscrita
Sindicato
Projecto
Bases de Dados 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
Carro Camião
Tonelagem
Npass Neixos
VelMax
Bases de Dados 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)
Bases de Dados 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.
Bases de Dados 39
Desenho de BDs
SGBD O-O
ODL
(object definition lang.)
Ideias Relações
(info a modelar)
ER/EER
(entidade/relacionamento) SGBD Relacional
Conceptualização Implementação
Bases de Dados 40
Modelo Relacional
• Introduzido por Codd (1970)
• Base de Dados = Conjunto de relações
• Relação <==> Tabela
atributos
tabela
Filme Título Ano Duração Tipo
Zorro 1998 120 cor
Guerra das Estrelas 1977 cor tuplo
124
Mighty Ducks 1991 104 cor
Bases de Dados 41
Esquema Relacional de uma BDs
Empregado(Pnome,Unome,EBI,Dnasc,Morada,Sexo,Salário,SuperBI,Ndep)
Locais_Dep(Dnum,Dlocal)
Projecto(Pnome,Pnum,Plocal)
TrabalhaEm(EBI,Pnum,Horas)
Dependente(EBI,Nome,Sexo,Dnasc,GrauParentesco)
Bases de Dados 42
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
Bases de Dados 43
Restrições Intrínsecas do Relacional
• Integridade de entidade
– os valores da chave-primária não podem ser nulos
• Unicidade da chave
– não podem existir 2 tuplos diferentes com valores iguais na chave
• Chave externa
– 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)
Bases de Dados 44
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
Bases de Dados 45
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.
Bases de Dados 46
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 chaves-externas 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)
Bases de Dados 47
Conversão do Modelo ER para o Modelo Relacional
• Passo 1: entidade-tipo relação
Bases de Dados 48
ER Relacional
Nome
EBI Empregado dependeDe Dependente
...
...
Chave-externa
Bases de Dados 49
ER Relacional
• Passo 3: 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
EBI Empregado dirige Departamento
(0,1) (1,1)
...
DirData
Chave-externa
Bases de Dados 50
ER Relacional
• Passo 4: 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 Empregado trabalhaPara Departamento
N 1
...
Chave-externa
Bases de Dados 51
ER Relacional
• Passo 4: 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 Empregado trabalhaEm Projecto
M N
...
Horas chaves-externas
e
chave-principal
Bases de Dados 52
ER Relacional
• Passo 5: 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 Empregado trabalhaEm Projecto
M N
...
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 EBI Pnum Horas
Bases de Dados 53
ER Relacional
• Passo 6: 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.
Bases de Dados 54
ER Relacional
• Passo 7: 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.
Qtd
Pnum
Produto
Pnome
Bases de Dados 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.
Bases de Dados 56
Exercício de modelação (cont.)
Bases de Dados 57
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.
Bases de Dados 58
“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)
Bases de Dados 59
SQL - Structured Query Language
l SQL é uma linguagem declarativa que permite:
u definir a BDs (é uma DDL),
u questionar e actualizar a BDs (é uma DML),
u definir visões diferentes da BDs para diferentes utilizadores,
u criar indices sobre ficheiros de forma a tornar o acesso mais rápido
l SQL1 - 1a versão ANSI definida em 1986.
l SQL2 - (ou SQL92) 2a versão ANSI definida em 1992.
Bases de Dados 60
Resumo da sintaxe do SQL
Bases de Dados 61
Resumo da sintaxe do SQL (2)
Bases de Dados 62
Restrições e Triggers em SQL
Bases de Dados 63
Restrições da relação:
Bases de Dados 64
Restrições de Integridade referencial
• Chaves externas:
– obrigam a que os valores dados à chave externa façam sentido, i.e. existam em tuplos da
tabela referenciada.
• quando a chave externa possui um só atributo podemos usar:
REFERENCES <tabela> (<atributo>)
• exemplo:
CREATE TABLE Participa (
filme CHAR(50),
ano NUMBER(4),
actor CHAR(30) REFERENCES Actor(nome),
salario DECIMAL(9,2),
FOREIGN KEY (filme, ano) REFERENCES Filem(titulo,ano)
);
Bases de Dados 65
Manutenção de Integridade referencial
• exemplo:
CREATE TABLE Estudio (
nome CHAR(30) PRIMARY KEY, morada VARCHAR(255),
presidente INT REFERENCES Executivo(#cert)
ON DELETE Set Null,
ON UPDATE Cascade );
Bases de Dados 66
Restrições sobre atributos
Bases de Dados 67
Asserções
• Permitem verificar condições genéricas: qualquer expressão que pode aparecer a seguir a
WHERE
• declaração:
CREATE ASSERTION <nome> CHECK (<condição>)
• qualquer alteração à BDs que leve a condição a tomar o valor FALSO será rejeitada
• a condição tem (obviamente) de dar um valor booleano
• exemplos:
CREATE ASSERTION PresidenteRico CHECK
(NOT EXISTS ( SELECT * FROM Estúdio, Executivo
WHERE presidente= #certificado AND salario< 10000000
– ninguém pode ser presidente de um estúdio a menos que tenha um salário de 10000000.
Bases de Dados 68
Triggers (gatilhos) em SQL3
Bases de Dados 69
Triggers (gatilhos) em SQL3
• Execução da acção:
– AFTER -- a condição WHEN é testada depois do evento disparo
– BEFORE - a condição WHEN é testada antes do evento disparo
– INSTEAD OF - a acção é executada se a condição WHEN se verifica e o evento disparo nunca é
executado.
• Eventos disparo:
– UPDATE, INSERT, DELETE
• FOR EACH ROW
– indica um gatilho de tuplo
Bases de Dados 70