bases de dados - departamento de ciência de computadoresmichel/bd0304/slides1.pdf · bases de...

70
Bases de Dados 1 Bases de Dados 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)

Upload: doanquynh

Post on 12-Jul-2018

224 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 1

Bases de Dados

• 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)

Page 2: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 2

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

• Encomendar livros pela Internet:– www.bookpool.com– www.amazon.co.uk ou www.amazon.com

Page 3: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 3

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, ...

• Sistema de BDs = BDs + SGDBs

Page 4: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 4

Exemplo de BDs

título ano duração tipoA Testemunha

1987 120 côrO Silêncio dos

Inocentes 1992 130 côr

nome títuloF

Harrison FordJudy Foster

Participa

Har rison FordA Testemunha Guerra das Estrelas

Actor

FilmeO Silêncio dos Inocentes

Filme( título, ano, duração, tipo)Actor( nome, endereço,)Participa( nomeA,títuloF)

nome endereço

Harrison Ford 789 Palm Dr, Beverly Hills

300 Stars Av., Beverly HillsJudy Foster

• Quais os filmes em que Harrison Ford participou? Ordene os filmes por ano de estreia.

Page 5: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 5

Exemplo de BDs

codAluno nomeAluno curso95001 Catarina CC96005 Carlos MAT

codDisc nomeDisc creditos depart.BD Bases de Dados 4 CCAL Analise de Dados 4 MA

codDisc sem anoLic anoLec profBD 1 3 1999 F. SilvaIA 2 3 1999 M. Filgueiras

codAluno codDisc nota95001 BD 1496005 BD 14

Alunos

Disciplinas

Funcionamento

Classificações

• Listar as disciplinas frequentadas e classificações obtidas pelo aluno Carlos.

Page 6: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 6

Desenvolvimento de BDs

• Consultar e actualizar informação da BDs– Em que filmes participou o actor Harrison Ford?

– Quantos filmes foram produzidos em 1992?

• Definir utilizadores da BDs e permissões de acesso (administração)

• Desenvolver ecrãs gráficos para operações mais comuns

– bancos: ecrãs específicos para os caixas no atendimento a clientes

• Criar relatórios específicos

– extracto de conta

• Tornar parte da BDs acessível via Internet?– Cada vez mais importante: compra de livros pela Internet, ...

Page 7: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 7

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.

• Separação entre dados e programas (abstração)– num sistema tradicional de ficheiros, a estrutura do ficheiro de dados está

inserida nos programas que manipulam esses ficheiros• dificuldades em alterar a organização dos dados

– numa BDs, a estrutura dos ficheiros está no catálogo do SGBDs e portanto separada dos programas de acesso

• conduz a independência dados/programa (propriedade: abstracção dos dados)

Page 8: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 8

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).

nomeAluno nomeDisc nota sem anoLecCatarina EDA 12 1 98/99Catarina SO 13 2 98/99Pedro SO 14 2 98/99Pedro IG 15 2 98/99

Performance

Page 9: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 9

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.

Page 10: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 10

Capacidades desejáveis para um bom SGBDs

• Controlar redundância

• Restrição de acesso não autorizado– passwords, diferentes níveis de acesso, acesso restricto a software com previlégios

• Providenciar múltiplas Interfaces com utilizador

• Garantir a satisfação de restrições de integridade

• Providenciar Mecanismos de Backup e Recuperação

Page 11: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 11

Desenho/Modelação de Bases de Dados

• Porquê a fase de modelação?– Acordar numa estrutura da BDs antes de enveredar por uma determinada

implementação.– Simplifica eventuais correcções a fazer, facilita o entendimento dos dados por

parte de não-especialistas, simplifica implementação, ...

• Envolve determinar:– Quais as entidades a modelar– Como é que se relacionam as entidades– Que restrições existem no domínio– Como conseguir um bom bom modelo de dados

Page 12: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 12

Fases no Desenho de BDs

Problema

Requisitos/Análise

Requisitos da BDs

1ª. Fase:• entrevistas com potenciais utilizadores da BDs• compreender e documentar os seus requisitos• produzir um conjunto de requisitos o mais detalhadoe completo possível

Desenho conceptual

Esquema conceptual(modelo de Alto-Nível)

2ª. Fase:• definir um esquema conceptual da BDs que inclua

descrição das entidades da BD, relacionamentosentre entidades e restrições

• evitar detalhes de implementação

Desenho lógico Independente do SGBDs

Page 13: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 13

Fases no Desenho de BDs (cont.)

3ª. Fase:• implementação da BDs usando um SGBDs comercial

Esquema da BDs(especifico de SGBDs)

4ª. Fase:• estruturas em memória e organização dos ficheirosda BDs

• ficheiros de indices

Desenho lógico(Mapeamento do Modelo de Dados)

Dependente do SGBDs

Desenho físico

Esquema interno

Page 14: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 14

Formalismos de modelação de BDs

• Modelo E/R - Entidades/Relacionamentos:– mais próximo do relacional– pode ser enriquecido para integrar conceitos de objectos: modelo EER

• Modelo ODL - Object-Definition Language– mais no espirito de modelos orientados a objectos

• Ambos modelos podem ser traduzidos (semi-automaticamente) para esquemas relacionais.

• ODL traduz-se mais naturalmente num esquema orientado-a-objectos

Page 15: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 15

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)

Page 16: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 16

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,…)

Page 17: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 17

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.

Page 18: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 18

• 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:

• 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.

Modelo ER: Entidade Tipo

EMPREGADO(Nome, Idade, Salário)

Page 19: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 19

• 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.

Requisitos de uma BDs de uma Empresa

Page 20: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 20

• 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)

Construção do modelo ER para a BD-Empresa

Page 21: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 21

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)

Construção do modelo ER para a BD-Empresa

Page 22: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 22

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)

Relacionamentos

Page 23: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 23

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.

Esquema da BDs

Page 24: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 24

• 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)

Relacionamentos (Grau e Atributos)

Page 25: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 25

• Restrições nos relacionamentos:

– permitem limitar as combinações possíveis entre entidades partic ipantes

– 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)

Relacionamentos (Restrições)

Page 26: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 26

– 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)

Restrições nos Relacionamentos (cont.)

Page 27: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 27

• 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)

Entidades Fracas

Page 28: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 28

• 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/parcialSupervisor Supervisionado

trabalhaEm(Empregado,Projecto,Horas) M:N total/total

Modelo ER para a BDs sobre uma Empresa

Page 29: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 29

• Ênfase na representação dos esquemas em vez de instâncias de entidades e relacionamentos.

• Notação para os diagramas:

Diagramas ER

Relacionamento-identificador

Relacionamento

Entidade-Fraca

Entidade-Tipo

Atributo

Atributo-Chave

Atributo-Multivalor

Atributo-Derivado

Atributo-Composto

Page 30: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 30

Diagramas ER (cont.)

E1 E2R

E1 E2R

ER

1 N

(min,max)

Participação-total de E2em R

1:N

Restrição-estruturalda participaçaõ de E em R

• Uma entidade E participa num relacionamento R com restrição (min,max) em que0² min ² max e max ³ 0, se para cada entidade e 5 E, e participa pelo menosmin eno máximo max instâncias do relacionamento R.

min = 0 -- participação parcialmax > 0 -- participação total

Page 31: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 31

Exemplo Restrição-Estrutural

• No diagrama:– um empregado trabalha para um departamento– Num departamento trabalham pelo menos 4 empregados

• 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

Empregado DepartamentotrabalhaPara(1,1) (4,N)

Page 32: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 32

O Modelo EER (ER Extendido)

• BDs recentes (Multimédia, GIS, CAD/CAM,…) requerem novos conceitossemâ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

TécnicosSecretárias Engenheiros Directoressubclasses

superclasse

Page 33: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 33

O Modelo EER (Relacionamento ISA)

• O relacionamento ISA (ou superclasse/subclasse) caracteriza a ligação entreas subclasses e a respectiva superclasse

– uma entidade membro de uma subclasse representa a mesma entidade-fí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;

EmpregadoDirector isa

EmpregadoSecretária isa

EmpregadoTécnico isa

Page 34: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 34

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

Page 35: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 35

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

Page 36: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 36

Diagrama EER

Técnico EngenheiroSecretária

Director

ProjectoSindicato

VelEscritaQualificação EngTipo

dirige

SalárioEfiliado

d

d

Empregado

EmpEfectivo

EmpPrazo

Escalão

NumBI

Nome • 3 especializações de Empregado

d

Salário

Page 37: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 37

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:

Veículo

Carro Camião

NpassVelMax

Tonelagem

Neixos

d

Preço

Nreg

Matricula

Page 38: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 38

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– 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– 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)

d

o

Page 39: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 39

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.

Page 40: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 40

Desenho de BDs

• 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.

Ideias(info a modelar)

ER/EER(entidade/relacionamento)

ODL(object definition lang.)

Relações

SGBD Relacional

SGBD O-O

Conceptualização Implementação

Page 41: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 41

Modelo Relacional

• Introduzido por Codd (1970)• Base de Dados = Conjunto de relações• Relação <==> Tabela

Filme Título Ano Duração TipoZorro 1998 cor120

Filme (Título, Ano, Duração, Tipo) Esquema

Guerra das Estrelas 124 cor

Mighty Ducks 1991 104 cor

atributos

tabela

tuplo1977

Page 42: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 42

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)

TrabalhaEm(EBI,Pnum,Horas)

Projecto(Pnome,Pnum,Plocal)

Dependente(EBI,Nome,Sexo,Dnasc,GrauParentesco)

Page 43: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 43

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

Page 44: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 44

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)

Page 45: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 45

Interpretação de uma relação

• Relações uniformizam a representação de factos sobre entidades erelacionamentos

• 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

Page 46: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 46

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.

Page 47: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 47

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 outuplos 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)

Page 48: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 48

Conversão do Modelo ER para o Modelo Relacional

• Passo 1: entidade-tipo relação

– atributos simples da entidade atributos da relação– atributos compostos atributos individuais na relação– chave da entidade chave da relação

EmpregadoNome

Pnome

Unome

Sexo

EBI...

Empregado Pnome Unome EBI Sexo ...

Page 49: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 49

ER Relacional

• Passo 2: 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 atributos de R• chave-principal de E e chave-parcial de W chave-principal de R

EmpregadoNome

...

EBI

...

Dependente EBI Nome Sexo ...

DependentedependeDe

Chave-externa

Page 50: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 50

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

EmpregadoDnum

DirData

EBI

...

Departamento Dnome Dnum DirBI DirData

Departamentodirige

Chave-externa

(0,1) (1,1)

Page 51: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 51

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

EmpregadoDnum

EBI

...

Empregado Pnome ... EBI ... DNum

DepartamentotrabalhaPara

Chave-externa

N 1

Page 52: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 52

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

EmpregadoPnum

EBI

...

trabalhaEm EBI Pnum Horas

ProjectotrabalhaEm

chaves-externase

chave-principal

M N

Horas

Page 53: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 53

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

EmpregadoPnum

EBI

...

trabalhaEm EBI Pnum Horas

ProjectotrabalhaEm

chaves-externase

chave-principal

M N

Horas

Nota: os relacionamentos 1:1 e 1:N também podem ser transformados de acordo com o passo 5.

Page 54: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 54

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 entidadeou relacionamento que tem A como atributo multivalor.

• A chave-principal de S será acombinação de A e K.

DepartamentoDnum

...

Locais_Dep Dnum Dlocal

Ex: um departamento pode tervárias localizações.

Dlocal

Nota: os passos de 1 a 6 seriam suficientespara converter o esquema-ER da pag. 28 noesquema-relacional da pag. 44 (BDs Empresa).

Page 55: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 55

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 representamas 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.

Fornecimento Fnome Pnome Pnum Qtd

FornecedorFnome

Pnome

Pnum

Projecto

Produto

fornecimento

Qtd

Page 56: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 56

Os STCP pretendem construir uma base de dados sobre os percursos dosseus 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) deautocarro. Cada tipo de autocarro tem uma marca, um modelo, um númerode lugares sentados e um número de lugares de pé. A base de dados deveguardar também informação relativa aos percursos. Um percurso é identificado por um número (e.g. 78, 35) e tem uma distância total emquilómetros. Os percursos percorrem paragens. As paragens têm umnúmero identificador, um nome, e uma localização decomposta em local,rua e número. Existem limitações aos percursos que um determinado tipode autocarro pode fazer, inerentes às suas dimensões. Estas limitaçõesdevem ficar registadas na base de dados. Existe um percurso especialpara quando um autocarro mais o respectivo condutor são alugados, eeste 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 operacionaldiária, correspondente ao registo de saídas. Existem três turnos desaída, 6h, 14h e 22h. Um autocarro e um condutor fazem no máximo umasaída por dia, podendo não fazer nenhuma. A informação do registo desaída inclui a data, o turno, o condutor, o autocarro e o percurso atribuído.

Exercício de modelação

Page 57: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 57

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 dosrelacionamentos 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 opercurso 78?''. Justifique.

Page 58: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 58

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 quek é 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 atributosatrib(Li)=(k) + (atributos de Si) e cp(Li) = k.

– 8b - Criar uma relaçao Li para cada subclasse Si, 1<=i<=m, com atributosatrib(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) + (atributosde S1) + … + (atributos de Sm) + (t) e cp(L) = k. Esta opçao é para umaespecializaç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) + (atributosde S1) + … + (atributos de Sm) + (t1, …, tm) e cp(L) = k. Esta opçao é para umaespecializaçao com subclasses sobrepostas, e cada ti, 1<=i<=m, é um atributobooleano que indica se um tuplo pertence à subclasse Si.

Page 59: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 59

“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 únicarelaçã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, temosde ser consistentes com os valores adicionados sobre o mesmo departamento paraoutros empregados

• evitar ter atributos numa relação cujo valor pode ser nulo, pois nem semprese sabe qual a interpretação a aplicar.

• conceber relações que possam ser combinadas por uma operação de junçãocom 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)

Page 60: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 60

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.l SQL3 - está para brevel Base de dados que servirá de exemplo:

Filme(titulo,ano,comp, tipo, nomeEstúdio, produtorC#)Actua(tituloFilme, anoFilme, nomeActor)Actor(nome,endereço, sexo, dataNasc)Executivo(nome, endereço, cert#, salário)Estúdio(nome, endereço, presC#)

Page 61: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 61

Resumo da sintaxe do SQL

CREATE TABLE <nome_tabela> (<nome_coluna> <tipo_valores> [<atributos_restrictivos>],...[<restrições_tabela>, ...] )

DROP TABLE <nome_tabela>

ALTER TABLE <nome_tabela> ADD <nome_coluna> <tipo_valores>

INSERT INTO <nome_tabela>[(<nome_coluna>,...)]

(VALUES (<valor_constante>,...,<valor_constante>) | <consulta_selecção>)

DELETE FROM <nome_tabela> [WHERE <condição_selecção>]

UPDATE <nome_tabela> SET <nome_coluna>=<valor_expressão>,... | [WHERE <condição_selecção>]

CREATE VIEW <nome_visão>[(<nome_coluna>,...)] AS <consulta_seleção>

DROP VIEW <nome_visão>

Page 62: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 62

Resumo da sintaxe do SQL (2)

SELECT [DISTINCT] <lista_atributos> (FROM (<nome_tabela> {<alias>} | <op_junção>)

[WHERE <condição>]

[GROUP BY <atributos_agrupamento> [HAVING <condição_agrupamento>] ]

[ORDER BY <nome_coluna> [<ordem>], ...]

<ordem> = (ASC | DESC)

<lista_atributos> = (*|( <nome_coluna> | <função>(([DISTINCT]<nome_coluna]... | *)

Page 63: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 63

Restrições e Triggers em SQL

• Elemento activo: (expressão ou comando) escrito uma vez, guardado na BDs, e espera-se que seja executado quando determinados eventos ocorrerem.

• em SQL2 temos várias formas de indicar restrições associadas a relações que são testadas sempre que há modificações nessas relações:

– restrições de chave– restrições de integridade referencial– restrições de domínio– asserções genéricas

• em SQL3 podem também estabelecer-se triggers (gatilhos)– que são accionados com a ocorrência de determinados eventos (i.e. quando determinada

condição for verdadeira).

Page 64: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 64

Restrições da relação:

• Restringem os valores permitidos a determinados atributos da relação

• São especificadas como parte da instrução CREATE TABLE

• chaves: PRIMARY KEY

CREATE TABLE Actor (nome CHAR(30) PRIMARY KEY, ...);

CREATE TABLE Filme (título CHAR(50), ano NUMBER(4), ...,

PRIMARY KEY (título, ano) );

• pode proibir-se a existência de valores nulos para atributos– através do uso de NOT NULL

• quando são verificadas estas restrições?

– Quando se altera a BDs, mas no caso da chave tal só se verifica na inserção ou actualizaçã.

Page 65: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 65

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)

);

Page 66: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 66

Manutenção de Integridade referencial

• a restrição de integridade referencial é verificada no fim de cada instrução SQL capaz de a violar, da seguinte forma:

– são proibidas inserções (INSERT) e actualizações (UPDATE) na tabela referenciante que violem a integridade referencial.

– As eliminações (DELETE) e actualizações (UPDATE) na tabela referenciada que violem a integridade referencial são tratadas de acordo com a acção indicada:

• CASCADE - propaga as eliminações à tabela referenciante

• SET NULL - coloca valores nulos nos atributos referenciantes

• SET DEFAULT - coloca valores nulos nos atributos referenciantes

• por omissão: proíbe essas actualizações ou eliminações

• exemplo:CREATE TABLE Estudio (

nome CHAR(30) PRIMARY KEY, morada VARCHAR(255),

presidente INT REFERENCES Executivo(#cert)

ON DELETE Set Null,

ON UPDATE Cascade );

Page 67: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 67

Restrições sobre atributos

• os valores permitidos para os atributos podem ser restringidos– através de restrições expressas na sua definição

– através de restrições expressas num domínio usado na sua definição

• CHECK <condição> – a condição envolve o atributo cujos valores se quer restringir

– mas pode conter qualquer coisa que pode seguir-se a WHERE numa interrogação SQL.

– exemplos:

sexo CHAR(1) CHECK (sexo IN (‘F’,’M’)),

presidente INT CHECK (prsidente IN (SELECT #cert FROM Executivo)),

• restrições de domínioCREATE DOMAIN sexoDom CHAR(1)

CHECK (VALUE IN (‘F’, ‘M’) );

• VALUE refere-se a um valor do domínio.

Page 68: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 68

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.

CREATE ASSERTION SomaDuração CHECK

(10000 >= ALL (SELECT SUM(Duração) FROM Filme GROUP BY Estúdio);– a duração total de todos os filmes de um dado estúdio não deve exceder 10000 minutos

Page 69: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 69

Triggers (gatilhos) em SQL3

• baseiam-se em regras do tipo evento-condição-acção (ECA)

• a acção pode ser executada antes, depois ou em vez do evento que a dispara

• exemplos:CREATE TRIGGER TriggerSalario

AFTER UPDATE OF salario ON Executivo

REFERENCING

OLD as oldTuple,

NEW as newTuple

WHEN (oldTuple.salario > newTuple.salario)

UPDATE Executivo

SET salario = oldTuple.salario

WHERE #certificado = newTuple.#certificado

FOR EACH ROW

Page 70: Bases de Dados - Departamento de Ciência de Computadoresmichel/BD0304/Slides1.pdf · Bases de Dados 3 Bases de Dados (definição) • Conjunto dados que se relacionam entre si •

Bases de Dados 70

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