Bancos de Dados
Mestrado em Engenharia de Computação
área de concentração Geomática
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
1
Tópicos
• O Modelo de Dados Relacional
(introduzido por Codd em 1970)
• Álgebra Relacional
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
2
Conceitos do Modelo Relacional...
• O banco de dados é representado como uma
coleção de relações (tabelas)
• Cada linha da tabela representa um conjunto de
valores de dados relacionados
• Estes valores podem ser interpretados como fatos
descrevendo uma entidade no mundo real ou um
relacionamento
• Os nomes escolhidos para a tabela e para as colunas
devem ajudar na interpretação do significado para
os valores que aparecem nas linhas
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
3
Conceitos do Modelo Relacional...
• Todos os valores em uma coluna são do
mesmo tipo de dados
• Terminologia do Modelo Relacional:
linha (row) = tuple
nome da coluna (column header) = atributo
nome da tabela = relação
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
4
Conceitos do Modelo Relacional...
Atributos
Nome da relação
tuplas
Domínio
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
Domínio
5
Conceitos do Modelo Relacional...
• Um domínio (domain) é um conjunto de valores
atômicos.
• Exemplos de domínios:
– Nomes de pessoas: combinação das letras do alfabeto
– Números (locais) de telefone: o conjunto de números de
telefones válidos em uma região
– Departamentos: o conjunto de departamentos acadêmicos de
uma universidade
– Placas de carro: conjunto das placas de carro em um estado
(combinação de letras e números admissíveis pelo DETRAN)
– Idade dos funcionários - valores entre 16 e 70
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
6
Conceitos do Modelo Relacional...
• Um domínio normalmente possui um nome, o qual
ajudar a interpretar os seus valores.
• Um tipo (data type) e um format descrevem
fisicamente um domínio.
• A descrição semântica ajuda na interpretação de seus
valores.
• Ex.: telefone - tipo: char(9) format: (99)999-9999
• Um mesmo domínio pode se aplicar a diferentes
atributos
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
7
Esquema de uma Relação
• Um Esquema de Relação R, denotado por R(A1, A2,
..., An), é formado por um nome de relação R e por
uma lista de atributos A1, A2, ..., An. Cada atributo Ai
é o nome de um papel desempenhado por algum
domínio D no esquema de relação R.
• D é chamado o domínio de Ai - dom(Ai)
• Um esquema de relação R é usado para descrever a
relação R (nome da relação)
• O grau de uma relação é dado pelo número n de
atributos em seu esquema.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
8
Instância de Relação...
• Uma relação (instância de relação) r de um esquema
de relação R(A1, A2, ..., An), também denotado por
r(R), é um conjunto de n tuplas r={t1, t2,..., tn}. Cada
n-tupla t é uma lista ordenada de n valores t=<v1, v2, ...,
vn>, onde cada valor vi, 1 i n, é um elemento do
dom(Ai) ou é um valor nulo (null value) especial.
• Valor nulo - representa atributos cujos valores são
desconhecidos ou não existem para uma dada tupla.
• Intensão = esquema da relação
• Extensão (estado) = instância da relação
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
9
Intensão x Extensão
Intensão = esquema da relação
Extensão = instância da relação
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
10
Instância de Relação (def. alternativa 1)
• Uma relação r(R) é um subconjunto do produto
Cartesiano dos domínios que definem R.
r(R) (dom(A1) x dom(A2) x ... x dom(An)
• Número de valores ou Cardinalidade de um Domínio
D = D
• no total de tuplas no produto cartesiano = dom(A1)
x dom(A2) x ... X dom(An)
• O estado corrente da relação reflete somente as tuplas
válidas que representam um estado particular do minimundo.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
11
Instância de Relação (def. alternativa 2)...
• Um Esquema de Relação R = (A1, A2, ..., An), é um
conjunto de atributos e uma relação r(R) é um
conjunto finito de mapeamentos r={t1, t2,..., tn}, aonde
cada tupla ti é um mapeamento de R em D, e D é a
união dos domínios dos atributos, isto é, D = dom(A1)
dom(A2) ... dom(An). Nesta definição t(Ai)
deve estar em dom(Ai) para 1 i n, para cada
mapeamento t em r.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
12
Instância de Relação (def. alternativa 2)
• Uma tupla pode ser considerada como um
conjunto de pares (<atributo>, <valor>), aonde
cada par fornece o valor do mapeamento de um
atributo Ai em um valor vi, pertencente a dom(Ai).
• A nível lógico, a ordem dos atributos e seus
valores não é importante (teoria dos conjuntos).
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
13
Primeira Forma Normal
• Cada valor em uma tupla deve ser atômico
• Não são permitidos atributos compostos ou multivalorados
• Atributos multi-valorados devem ser representados
por diferentes relações
• Atributos compostos são representados pelos seus
atributos componentes mais simples
• valores nulos (null) - quando o valor de um atributo
é desconhecido ou não se aplica à tupla
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
14
Interpretação de uma Relação...
• O esquema de uma relação pode ser interpretado
como uma declaração ou uma assertiva.
Exemplo:
Um departamento possui um nome (Dname),
número (Dnumber), um gerente (Mgrssn) e uma
data (Mgrstartdate) na qual passou a ser
gerenciado pelo gerente.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
15
Interpretação de uma Relação
• Cada tupla na relação pode ser interpretada como
um fato de uma instância particular da assertiva.
• As relações podem representar fatos sobre
entidades ou sobre relacionamentos.
• O esquema de uma relação também pode ser
interpretado como um predicado.
• Neste caso, os valores em cada tupla são
interpretados como valores que satisfazem o
predicado.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
16
Notação do Modelo Relacional...
• Um Esquema de Relação R de grau n é denotado por
R(A1, A2, ..., An);
• Uma n-tupla t na relação r(R) é denotada por
t = <v1, v2, ..., vn>, onde vi é o valor correspondente ao
atributo Ai;
• t[Ai] refere-se ao valor vi em t, correspondente ao atributo
Ai;
• t[Au, Aw, ..., Az], onde Au, Aw, ..., Az é uma lista de atributos
de R, refere-se à sub-tupla de valores <vu, vw, ..., vz> de t
correspondente aos atributos especificados na lista;
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
17
Notação do Modelo Relacional
•
•
•
•
As letras Q, R e S denotam nomes de relações
As letras q, r e s denotam estados de relações
As letras t, u e v denotam tuplas
O nome de uma relação (em maiúsculas) indica o conjunto
atual de tuplas naquela relação - estado corrente da relação
- ou instância; Ex.: STUDENT
• STUDENT(Name, SSN, ...) refere-se ao esquema da
relação
• Os nomes dos atributos são, às vezes, qualificados com o
nome da relação qual pertencem; Ex.: STUDENT.Name ,
STUDENT.Age
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
18
Tipos de Restrições no Modelo Relacional
Restrições de Domínio - especifica os valores que podem
ser assumidos por um atributo .
Restrições de Chave - especifica uma chave (conjunto de
atributos) que identificam univocamente uma tupla .
Restrições de Integridade - servem para manter a
consistência entre as tuplas das relações.
Restrições Semânticas - impõem restrições adicionais nas
relações que representam situações no mini-mundo.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
19
Restrições do Modelo Relacional...
• Restrições de Domínio - especificam que o valor
de cada atributo A deve ser um valor atômico do
domínio dom(A).
• Especifica-se um domínio através de tipos
primitivos de dados, tais como integer, float,
char, date, time, money, etc.
• Adicionalmente, através de um subconjunto de
um tipo de dado ou como um tipo de dado
enumerável, em que todos os valores possíveis são
listados.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
20
Restrições do Modelo Relacional...
• Restrições de chave - uma relação é definida como um
conjunto de tuplas. Por definição, todos os elementos de um
conjunto são distintos. Portanto todos as tuplas em uma
relação devem ser distintas.
• Isto significa que não se pode ter duas tuplas com a mesma
combinação de valores para todos os seus atributos.
• Usualmente há subconjuntos de atributos de um esquema de
relação R com a propriedade que não existem tuplas, em
qualquer instância da relação r de R que possuam a mesma
combinação de valores para seus atributos.
t1[SK] t2[SK]
SK é uma super-chave (superkey)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
21
• Super-chave - conjunto de um ou mais atributos que, tomados
coletivamente, nos permitem identificar de maneira unívoca uma
entidade em um conjunto de entidades (tipo-entidade).
• Uma chave K (minimal superkey) de um esquema de relação R é
uma superchave de R com a propriedade adicional de que, a
remoção de qualquer atributo A de K resulta em um conjunto de
atributos K´ que não é uma superchave de R.
• Chave candidata - é uma das chaves de um esquema de relação R.
• Chave primária - é uma chave candidata escolhida pelo projetista
do BD para a identificação de entidades em um conjunto de
entidades (por convenção são sublinhadas no esquema da relação).
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
22
Esquema e Instância de um BD Relacional
• Um Esquema de um Banco de Dados Relacional S é um
conjunto de esquemas de relações S={R1, R2, ..., Rm} e um
conjunto de restrições de integridade IC.
• Uma Instância de um Banco de Dados Relacional DB é
um conjunto de relações de instância DB={r1, r2, ..., rm}, tal
que cada ri é uma instância de Ri e tal que as relações ri
satisfazem as relações de integridade especificadas em IC.
• Quando nos referimos a um Banco de Dados Relacional,
implicitamente incluímos o seu esquema e a instância
corrente.
• As restrições de integridade são especificadas em um
esquema de um BD e valem para todas as suas instâncias.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
23
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
24
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
25
Restrições de Integridade...
• Integridade de Entidade - estabelece que
nenhuma chave primária pode ter valor nulo.
• Objetivo - garantir a identificação de todas as
tuplas, uma vez que a chave primária é usada para
identificar as tuplas na relação.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
26
Restrições de Integridade...
• Integridade Referencial - estabelece que uma tupla
em uma relação Ri, que se refere a uma outra relação
Rj, deve obrigatoriamente referenciar uma tupla
existente em Rj.
• Objetivo - serve para manter a consistência entre as
tuplas de duas relações.
• As restrições de integridade referencial surgem
tipicamente do relacionamento entre entidades.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
27
Chave Estrangeira
• Chave estrangeira - um conjunto de atributos FK em
um esquema de relação R1 é uma chave estrangeira de
R1, se satisfaz às seguintes condições:
Os atributos em FK têm os mesmos domínios que os
atributos de uma chave primária PK de um outro esquema
de relação R2. Diz-se que os atributos de FK referenciam a
relação R2.
Um valor de FK em uma tupla t1 de R1 ou ocorre como um
valor de PK para alguma tupla t2 de R2, ou é nulo. No
primeiro caso temos t1[FK]= t2[PK] e dizemos que a tupla t1
em R1 referencia a tupla t2 em R2.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
28
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
29
Atenção no Projeto de um BD!
• Todas as restrições de integridade devem ser
especificadas no esquema do banco de dados
relacional, para que estas restrições sejam
válidas em todas as instâncias da base de
dados.
• A DDL deve prover meios para se especificar
os diversos tipos de restrições, para que os
SGBDs as possam impor automaticamente.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
30
Operações no Modelo Relacional
• Retrieval (podem ser especificadas através da
Álgebra Relacional)
• Updates - inserção, exclusão e alteração
• As restrições de integridade especificadas no
esquema do banco de dados relacional não devem
ser violadas.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
31
A operação de inserção...
• Pode violar os quatro tipos de restrições do modelo
relacional:
Restrições de Domínio: se o valor dado para o atributo não
pertence ao domínio correspondente.
Restrições de Chave: se um valor de chave em uma nova
tupla t já existe em outra tupla na relação r(R).
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
32
A operação de inserção...
Restrições de Integridade:
Integridade de Entidade - se o valor de uma chave primária para a
nova tupla t é NULL.
Integridade Referencial - se o valor de qualquer chave estrangeira
em t referencia uma tupla que não existe na relação que foi
referenciada.
Restrições Semânticas - se algum valor de atributo assume
valores não permitido pelas restrições de ordem semântica.
• Alternativas quando restrições são violadas: i) rejeitar a
inserção, informando ao usuário o motivo; ii) tentar corrigir
o motivo que ocasionou a violação.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
33
A operação de exclusão
• Só pode violar restrições de integridade referencial nos
casos em que a tupla excluída é referenciada por chaves
estrangeiras de outras tuplas do banco de dados.
• Alternativas - o SGBD deve permitir ao usuário escolher entre:
rejeitar a exclusão da tupla;
tentar propagar (to cascade) a exclusão, procurando excluir
todas as tuplas no banco de dados que referenciam a tupla que
se pretende excluir;
modificar o valor do atributo de referência que causa a
violação:i) torná-lo NULL; ii) referenciar outra tupla válida.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
34
A operação de alteração
Inicialmente, é necessário especificar uma condição sobre os
atributos da relação R, para selecionar-se a(s) tupla(s) a
ser(em) modificada(s).
A modificação de um atributo que não seja uma chave
primária ou uma chave estrangeira usualmente não causa
problemas.
A alteração de uma chave primária é equivalente a excluir
uma tupla e inserir uma outra.
Se o valor de uma chave estrangeira é alterado , o SGBD
deve ter certeza de que o novo valor refere-se a uma tupla
que realmente exista na relação referenciada.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
35
O Projeto do Schema da Base de Dados...
Dar um nome para o esquema do banco de dados
relacional (relational database schema)
Declarar os domínios necessários para os atributos
Definir as relações individuais
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
36
O Projeto do Schema da Base de Dados...
...
DECLARE SCHEMA COMPANY;
...
DECLARE DOMAIN PERSON_SSNS TYPE FIXED_CHAR(9);
DECLARE DOMAIN PERSON_NAMES TYPE VARIABLE_CHAR(15);
DECLARE DOMAIN PERSON_INITIALS TYPE ALPHABETIC_CHAR(1);
DECLARE DOMAIN DATES TYPE DATE;
DECLARE DOMAIN ADDRESSES TYPE VARIABLE_CHAR(35);
DECLARE DOMAIN PERSON_SEX TYPE ENUMERATED {M,F};
DECLARE DOMAIN PERSON_SALARIES TYPE MONEY;
DECLARE DOMAIN DEPT_NUMBERS TYPE INTEGER_RANGE[1,10];
DECLARE DOMAIN DEPT_NAMES TYPE VARIABLE_CHAR(20);
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
37
O Projeto do Schema da Base de Dados...
...
DECLARE RELATION EMPLOYEE
FOR SCHEMA COMPANY
ATTRIBUTES FNAME
DOMAIN PERSON_NAMES,
MINIT
DOMAIN PERSON_INITIALS,
LNAME
DOMAIN PERSON_NAMES,
SSN
DOMAIN PERSON_SSNS,
BDATE
DOMAIN DATES,
ADDRESS
DOMAIN ADDRESSES,
SEX
DOMAIN PERSON_SEX,
SALARY
DOMAIN PERSON_SALARIES,
SUPERSSN DOMAIN PERSON_SSNS,
DNO
DOMAIN DEPT_NUMBERS
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
38
O Projeto do Schema da Base de Dados
CONSTRAINTS PRIMARY_KEY (SSN),
FOREIGN_KEY (SUPERSSN) REFERENCES EMPLOYEE;
FOREIGN_KEY (DNO) REFERENCES DEPARTMENT;
DECLARE RELATION DEPARTMENT
FOR SCHEMA COMPANY
ATTRIBUTES DNAME
DOMAIN DEPT_NAMES,
DNUMBER
DOMAIN DEPT_NUMBERS,
MGRSSN
DOMAIN PERSON_SSNS,
MGRSTARTDATE DOMAIN DATES
CONSTRAINTS PRIMARY_KEY (DNUMBER),
KEY (DNAME),
FOREIGN_KEY (MGRSSN) REFERENCES EMPLOYEE;
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
39
Álgebra Relacional
• Coleção de operações que são utilizadas para manipular relações
inteiras.
• permite:
– selecionar tuplas de relações individuais
– combinar tuplas relacionadas de várias relações com o propósito de
especificar uma consulta (query)
– o resultado de cada operação é uma nova relação, que também pode ser
manipulada
• 2 categorias de operações:
– as matemáticas, da Teoria dos Conjuntos (UNIÃO, INTERSECÇÃO,
DIFERENÇA e PRODUTO CARTESIANO
– as especificamente desenvolvidas para bancos de dados relacionais
(SELECT, PROJECT, JOIN, etc.)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
40
A Operação SELECT...
• Função: utilizada para selecionar um subconjunto de
tuplas de uma relação, que satisfazem uma condição
de seleção.
• Notação: <condição de seleção>(<nome da relação>)
• Exemplos:
DNO=4(EMPLOYEE)
SALARY>30000(EMPLOYEE)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
41
A Operação SELECT...
• => é o operador de seleção (sigma)
• A condição de seleção é uma expressão Booleana
especificada sobre os atributos da relação.
• A expressão Booleana compreende uma série de cláusulas
da forma:
<nome do atributo> <operador de comparação> <valor constante>
ou
<nome do atributo> <operador de comparação> < nome do
atributo>
• O <operador de comparação> a { = , < , , , , }
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
42
A Operação SELECT...
• Cláusulas podem ser conectadas pelos operadores Booleanos AND, OR e NOT,
para formar uma condição de seleção.
• Ex.: (DNO=4 AND SALARY>25000) OR (DNO=5AND SALARY>30000)(EMPLOYEE)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
43
A Operação SELECT...
• Se o domínio de um atributo é um conjunto de
valores não ordenados aplicam-se apenas os
operadores a {=, }.
• Domínios de cadeias (strings) de caracteres são
ordenados baseados na collating sequence.
• Alguns domínios permitem tipos adicionais de
operadores de comparação (ex.: SUBSTRING_OF).
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
44
A Operação SELECT
• O operador SELECT é unário.
• A operação de seleção aplica-se a cada tupla individualmente.
• A relação resultante de um SELECT tem o mesmo grau da
relação original.
• Conceito de seletividade da condição.
• A operação SELECT é comutativa
<cond_1>(<cond_2>(R)) = <cond_2>(<cond_1>(R))
• Uma cascata de SELECTs pode ser combinado em um único
SELECT
<cond_1>(<cond_2>(... <cond_n>( R))...)) =
<cond_1>AND<cond_2> AND...AND<cond_n>(R)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
45
A Operação PROJECT...
• Função: utilizada para selecionar determinadas
colunas de uma relação.
• Notação: <lista de atributos> (<nome da relação>)
• Exemplos:
SEX, SALARY(EMPLOYEE)
FNAME, LNAME, BDATE(EMPLOYEE)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
46
A Operação PROJECT...
• => é o operador de seleção (pi)
• A relação resultante possui somente os atributos
especificados na <lista de atributos>.
• O seu grau é o número de atributos na <lista de
atributos>.
• Tuplas duplicatas, resultante de PROJECT são
automaticamente removidas, de forma a se ter uma
relação válida (duplicate elimination).
• <lista_1>( <lista_2>(R)) = <lista_1>(R),
sempre que lista_1 lista_2
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
47
A Operação PROJECT...
• Ex.: LNAME, FNAME, SALARY(EMPLOYEE)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
48
A Operação PROJECT
• As operações na Álgebra Relacional podem estar aninhadas em
uma única expressão ou pode-se aplicar uma operação de cada
vez, criando relações com os resultados intermediários.
• Neste caso devemos nomear as relações que guardam os
resultados intermediários. Pode-se, inclusive, renomear os seus
atributos.
Consulta_02_c06
LNAME, FNAME, SALARY(EMPLOYEE)
R(SOBRENOME, NOME, SALÁRIO)
SALARY(EMPLOYEE)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
LNAME, FNAME,
49
Operações da Teoria dos Conjuntos
• Aplicam-se ao Modelo Relacional porque uma
relação é definida como um conjunto de tuplas.
• operações fundamentais:
- UNIÃO, INTERSECÇÃO, DIFERENÇA
São operações binárias. As relações a que se
aplicam devem ter o mesmo tipo de tuplas, i. e.,
serem UNIÃO-compatíveis.
- PRODUTO CARTESIANO
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
50
Relações UNIÃO-compatíveis
• Duas relações R(A1, A2, ..., An) e S(B1, B2, ..., Bn)
são ditas UNIÃO-compatíveis se elas têm o mesmo
grau n e se dom(Ai)=dom(Bi), para 1 i n.
• Significa que possuem o mesmo número de
atributos e que cada par de atributos
correspondentes possuem o mesmo domínio.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
51
Operações Fundamentais
• UNIÃO:
R S = {t | t R t S}
• INTERSEÇÃO:
R S = {t | t R t S}
• DIFERENÇA:
R - S = {t | t R t S}
• PRODUTO CARTESIANO:
R x S = {t | t[A1, ...,An] R t [An+1, ...,An+m] S}
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
52
RESULT = RESULT_1 RESULT_2
Salary < 30000
Salary > 35000
(Salary < 30000) OR (Salary > 35000)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
53
RESULT_A = RESULT_3 RESULT_4
Salary < 40000
30000 < Salary < 40000
Salary > 30000
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
54
RESULT_B = RESULT_3 - RESULT_4
Salary < 40000
Salary > 30000
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
55
Propriedades das operações
• A UNIÃO e a INTERSECÇÃO são comutativas
RS=SR
RS=SR
• A UNIÃO e a INTERSECÇÃO são associativas
R (S T) = (R S) T
(R S) T = R (S T)
• Atenção! A DIFERENÇA não é comutativa
R - S S - R (em geral)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
56
Produto Cartesiano (X)...
Definição:
• R(A1, A2, ..., An) X S(B1, B2, ..., Bm) é uma relação
Q (A1, A2, ..., An, B1, B2, ..., Bm) com n+m atributos
e nesta ordem.
• Q possui uma tupla para cada combinação de tuplas,
uma de R e outra de S.
• Se R possui nr tuplas e S, ns tuplas, então Q possui
nr*ns tuplas.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
57
Produto Cartesiano (X)...
• Operação binária sobre conjuntos.
• As relações sobre as quais se aplicam não precisam
ser UNIÃO-compatíveis.
• CARTESIAN PRODUCT=CROSS JOIN=CROSS
PRODUCT
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
58
Produto Cartesiano (X)
Exemplo: recuperar, para cada empregado do sexo
feminino, a lista de seus dependentes
FEMALE_EMPS
SEX=‘F’(EMPLOYEE)
EMPNAMES
FNAME, LNAME, SSN(FEMALE_EMPS)
EMP_DEPENDENTS
EMPNAMES X DEPENDENT
ACTUAL_DEPENDENTS
SSN=ESSN(EMP_DEPENDENTS)
RESULT
FNAME, LNAME, DEPENDENT_NAME (ACTUAL_DEPENDENTS)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
59
Exemplo...
FEMALE_EMPS
EMPNAMES
UERJ - Agosto 2000
SEX=‘F’(EMPLOYEE)
FNAME, LNAME, SSN(FEMALE_EMPS)
© Oscar Luiz Monteiro de Farias
60
Exemplo...
EMP_DEPENDENTS
UERJ - Agosto 2000
EMPNAMES X DEPENDENT
© Oscar Luiz Monteiro de Farias
61
Exemplo...
ACTUAL_DEPENDENTS
RESULT
UERJ - Agosto 2000
SSN=ESSN(EMP_DEPENDENTS)
FNAME, LNAME, DEPENDENT_NAME (ACTUAL_DEPENDENTS)
© Oscar Luiz Monteiro de Farias
62
A operação JOIN (
)...
• JOIN = CARTESIAN PRODUCT + SELECT
• Possibilita processar relacionamentos entre relações
• Exemplo: Desejamos recuperar o nome do gerente de cada
departamento.
Para obtermos o nome do gerente de cada depto, necessitamos
combinar a tupla de cada depto com a tupla do empregado cujo
valor de SSN é idêntico ao valor de MGRSSN na tupla do
depto.
DEPT_MGR
DEPARTMENT
MGRSSN=SSN EMPLOYEE
RESULT
DNAME, LNAME,FNAME, (DEPT_MGR)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
63
A operação JOIN (
DEPT_MGR
RESULT
UERJ - Agosto 2000
DEPARTMENT
)...
MGRSSN=SSN
EMPLOYEE
DNAME, LNAME,FNAME, (DEPT_MGR)
© Oscar Luiz Monteiro de Farias
64
A operação JOIN (
)...
• A forma geral da operação JOIN sobre duas relações R(A1,
A2, ..., An) e S(B1, B2, ..., Bm) é:
R <condição join> S.
• O resultado de JOIN é uma relação Q com m+n atributos Q
(A1, A2, ..., An, B1, B2, ..., Bm), nesta ordem.
• Q tem uma tupla para cada combinação de tuplas - uma de R
e uma de S - sempre que a condição JOIN é satisfeita ( do
produto Cartesiano).
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
65
A operação JOIN (
)...
• THETA JOIN - quando a condição JOIN é da forma:
<condição>AND<condição>AND .... AND<condição>, onde
cada condição é do tipo Ai Bj, Ai é um atributo de R e Bj é um
atributo de S, Ai e Bj têm o mesmo domínio e é um dos
operadores de comparação {=, <, , , , }.
• EQUIJOIN - quando o único operador de comparação utilizado é
“=“.
• No resultado de um EQUIJOIN sempre temos um ou mais pares
de atributos com o mesmo valor.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
66
A operação NATURAL JOIN (*)...
• NATURAL JOIN (*) - quando abandonamos o segundo atributo
em uma condição EQUIJOIN.
• A definição padrão de NATURAL JOIN requer que os dois
atributos JOIN(ou cada par de atributos JOIN) tenham o mesmo
nome.
• Em alguns casos é necessário renomear-se um dos atributos.
• Ex.:
DEPT (DNAME, DNUM, MGRSSN, MGRSTARTDATE)
DEPARTMENT
PROJ_DEPT
PROJECT * DEPT
O atributo DNUM é o atributo de junção (join atribute).
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
67
A operação NATURAL JOIN (*)
• Definição mais geral de NATURAL JOIN:
Q
R*(<list1>), (<list2>)S
• <list1> especifica uma lista de i atributos de R e , <list2>,
uma lista de i atributos de S.
• Estas listas são usadas para condições de comparação de
igualdade entre os pares de atributos correspondentes em R
e S.
• Efetua-se então, um AND entre as condições.
• Somente os atributos de list1 são mantidos no resultado Q.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
68
Conjunto Completo de Operações da AR
• O conjunto das operações da Álgebra Relacional
{, , , -, } é um conjunto completo, no
sentido de que qualquer outra operação da AR
pode ser expressa como uma seqüência de
operações deste conjunto.
• R S = (R S) - ((R - S) (S - R))
• R
<condição> S = <condição>(R S)
• NATURAL JOIN = PRODUTO CARTESIANO +
SELECT + PROJECT
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
69
A operação DIVISION...
• Query: recuperar o nome dos empregados que trabalham em
todos os projetos em que John Smith trabalha.
Recuperar a lista de números de projetos em que John Smith
trabalha em uma lista intermediária
SMITH
FNAME=John AND LNAME=Smith(EMPLOYEE)
SMITH_PNOS
PNO(WORKS_ON*ESSN=SSNSMITH)
Criar uma relação SSN_PNOS que inclui uma tupla
<PNO, ESSN>, sempre que o empregado cujo security social
number é ESSN trabalhar em um projeto de número PNO
SSN_PNOS
PNO, ESSN(WORKS_ON)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
70
A operação DIVISION...
Aplicar a operação de DIVISÃO às duas relações
SSNS(SSN)
SSN_PNOS SMITH_PNOS
RESULT
FNAME, LNAME (SSNS*EMPLOYEE)
A operação de DIVISÃO aplica-se a duas relações R(Z) S(X),
onde X Z. Seja Y=Z-X, i.e., seja Y o conjunto de atributos de R
que não sejam atributos de S. O resultado da divisão é a relação
T(Y) que inclui a tupla t se a tupla tr, cuja tr[Y] = t aparece em R,
com tr[X]=ts para cada tupla ts em S.
Significa que para uma tupla t aparecer no resultado T da
DIVISÃO, os valores em t devem paarecer em R em combinação
com toda tupla em S.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
71
A operação DIVISION...
Y
X
R(Z) S(X)
Z
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
72
A operação DIVISION...
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
73
A operação DIVISION
• Pode ser expressa como uma seqüência das
operações , e T1= Y(R)
T2= Y((S T1) - R)
T = T1 - T2
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
74
Operações Relacionais Adicionais...
• Funções agregadas:
SUM, AVERAGE, MAXIMUM, MINIMUM, COUNT
• Grupar um no de tuplas da relação, segundo o valor de
algum de seus atributos e, então, aplicar uma função
agregada independente a cada grupo.
<atributos de grupo><lista de funções>(<nome da relação>)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
75
Operações Relacionais Adicionais...
• Exemplo: recuperar, para cada n0 de dept0, o n0 de
empregados no dept0 e o seu salário médio.
R(DNO, NUMBER_OF_EMPLOYEES, AVERAGE_SAL)
DNOCOUNT SSN, AVERAGE SALARY(EMPLOYEE)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
76
Recursive Closure Operations
• Em geral não podem ser especificadas na AR
• Ex. recuperar todos os supervisionados de um empregado em
todos os níveis.
Nível_1 - todos os empregados diretamente supervisionados por
James Borg.
BORG_SSN
SSN(FNAME=‘James’ AND LNAME=‘Borg’ (EMPLOYEE))
SUPERVISION(SSN1, SSN2)
SSN, SUPERSSN (EMPLOYEE))
RESULT1(SSN)
SSN1(SUPERVISION SSN2=SSNBORG_SSN)
Nível_2 - RESULT2(SSN)
SSN1(SUPERVISION
SSN2=SSN RESULT1)
FINAL_RESULT = (RESULT1 RESULT2)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
77
Outer Join e Outer Union
• Extensões das operações JOIN e UNIÃO
• Usadas quando desejamos guardar todas as tuplas de R ou S ou
ambas no resultado, independentemente de haver tuplas
correlacionadas na outra relação.
• LEFT OUTER JOIN • Exemplo: desejamos uma lista com o nome de todos os
empregados e também do nome dos deptos que eles gerenciam, no
caso de gerenciarem um depto.
TEMP
(EMPLOYEE
SSN=MGRSSNDEPARTMENT)
RESULT
FNAME, MINIT, LNAME, DNAME(TEMP)
• RIGHT OUTER JOIN UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
78
LEFT OUTER JOIN Exemplo: desejamos uma lista com o nome de todos os empregados e também do nome
dos deptos que eles gerenciam, no caso de gerenciarem um depto.
TEMP
(EMPLOYEE
SSN=MGRSSNDEPARTMENT)
RESULT
FNAME, MINIT, LNAME, DNAME(TEMP)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
79
Exemplos de queries em AR...
Recuperar os nomes e endereços de todos os empregados que
trabalham para o depto ‘Research’
RESEARCH_DEPARTMENT
DNAME=‘RESEARCH’(DEPARTMENT)
-RESEARCH_DEPARTMENT_EMPS
(RESEARCH_DEPARTMENT
DNUMBER=DNOEMPLOYEE )
-RESULT
FNAME, LNAME, ADDRESS(RESEARCH_DEPARTMENT_EMPS)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
80
Exemplos de queries em AR...
Para cada projeto localizado em ‘Stafford’, recupere o no do
projeto, o no do depto que o controla e o sobrenome, endereço e
data de nascimento do gerente deste depto.
STAFFORD_PROJS
PLOCATION=‘STAFFORD’(PROJECT)
-CONTR_DEPT
STAFFORD_PROJS DNUM=DNUMBERDEPARTMENT
-PROJ_DEPT_MGR
CONTR_DEPT
MGRSSN=SSNEMPLOYEE
-RESULT
PNUMBER, DNUM, LNAME, ADDRESS, BDATE(PROJ_DEPT_MGR)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
81
Exemplos de queries em AR...
Encontre o nome de todos os empregados que trabalham em
todos os projetos controlados pelo depto de no 5.
DEPT5_PROJS(PNO)
PNUMBER(DNUM=5(PROJECT))
-EMP_PROJ(SSN, PNO)
ESSN, PNO (WORKS_ON)
-RESULT_EMP_SSNS
(EMP_PROJ DEPT5_PROJS
-RESULT
LNAME, FNAME(RESULT_EMP_SSNS * EMPLOYEE)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
82
Exemplos de queries em AR...
Faça uma lista de no de projetos para aqueles projetos em que
trabalham um empregado cujo sobrenome é ‘Smith’, seja como
empregado, seja como gerente, do dept0 que controla o projeto.
SMITHS(ESSN)
SSN(LNAME=‘Smith’(EMPLOYEE))
-SMITH_WORKER_PROJS
PNO (WORKS_ON * SMITHS)
-MGRS
LNAME, DNUMBER (EMPLOYEE
SSN=MGRSSN DEPARTMENT)
-SMITH_MGRS
LNAME=‘Smith’(MGRS)
-UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
83
Exemplos de queries em AR...
...
SMITH_MANAGED_DEPTS(DNUM)
DNUMBER(SMITH_MGRS)
-SMITH_MGR_PROJS(PNO)
PNUMBER (SMITH_MANAGED_DEPTS * PROJECT)
-RESULT
(SMITH_WORKER_PROJS SMITH_MGR_PROJS)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
84
Exemplos de queries em AR...
Liste os nomes de todos os empregados que tenham um ou mais
dependentes.
Obs. Não pode ser resolvido com as operações padrões da AR.
Devemos usar as operações adicionais FUNCTION e COUNT.
T1(SSN, NO_OF_DEPS)
ESSNCOUNT DEPENDENT_NAME(DEPENDENT)
--
T2
NO_OF_DEPS=2(T1)
-RESULT
UERJ - Agosto 2000
LNAME, FNAME (T2 * EMPLOYEE)
© Oscar Luiz Monteiro de Farias
85
Exemplos de queries em AR...
Recupere os nomes de todos os empregados que não tenham
dependentes.
ALL_EMPS
--
SSN (EMPLOYEE)
EMPS_WITH_DEPS(SSN)
ESSN(DEPENDENT)
-EMPS_WITHOUT_DEPS
(ALL_EMPS - EMPS_WITH_DEPS)
-RESULT
LNAME, FNAME (EMPS_WITHOUT_DEPS * EMPLOYEE)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
86
Exemplos de queries em AR...
Liste os nomes dos gerentes que tenham pelo menos um
dependente.
MGRS(SSN)
--
MGRSSN (DEPARTMENT)
EMPS_WITH_DEPS(SSN)
ESSN(DEPENDENT)
-MGRS_WITH_DEPS
(MGRS EMPS_WITH_DEPS)
-RESULT
LNAME, FNAME (MGRS_WITH_DEPS * EMPLOYEE)
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
87
Mapeamento ER
Relacional
• Um esquema de Banco de Dados Relacional pode
ser derivado de um Modelo Conceitual que utilize
o Modelo Entidade-Relacionamento
• Propriedade incorporada em ferramentas CASE e
usadas pelos projetistas de BD
• A conversão de um modelo em outro é automática,
fundamentada em um algoritmo
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
88
Algoritmo ER
Relacional...
Passo 1: (incluir as Relações Entidades)
• Para cada tipo entidade E regular do esquema ER, crie uma
tabela R que inclua todos os atributos simples de E.
– Inclua somente os componentes simples de um atributo
composto.
– Escolha um dos atributos chaves de E como uma chave
primária para R. Se a chave escolhida for composta, o
conjunto de atributos simples que a formam definirão a chave
primária de R.
Atenção! Não incluir (ainda) chaves-estrangeiras e atributos de
relacionamento.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
89
Algoritmo ER
Relacional...
• Após o passo 1:
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
90
Algoritmo ER
Relacional...
Passo 2: (incluir as Relações Tipo-Entidades Fracas)
• Para cada tipo-entidade fraco W, com tipo-entidade proprietária E
do esquema ER, crie uma tabela R e inclua todos os atributos
simples (ou componentes simples de atributos compostos) de W
como atributos de R.
• Inclua como chave estrangeira de R a chave primária da tabela
que corresponde ao tipo-entidade proprietário E (de W). Isto
corresponde ao relacionamento de identificação (identifying
relationship). A chave primária de R é a combinação da(s)
chave(s) primária(s) do(s) proprietário(s) de W e da chave parcial
da entidade fraca W.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
91
Algoritmo ER
Relacional...
• Após o passo 2 :
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
92
Algoritmo ER
Relacional...
Passo 3: (trata dos relacionamentos 1:1 do esquema ER)
• Para cada relacionamento binário R (1:1) do esquema ER,
identifique as tabelas S e T que correspondem aos tipos-entidades
que participam de R.
• Escolha uma das tabelas, p. ex. S, e inclua, como chave
estrangeira de S, a chave primária de T (para o papel de S é
melhor escolher o tipo-entidade com participação total em R)
• Inclua todos os atributos simples (ou componentes simples de
atributos compostos) do relacionamento R (1:1) como atributos
de S.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
93
Algoritmo ER
Relacional...
• Após o passo 3 :
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
94
Algoritmo ER
Relacional...
• Observe que um mapeamento alternativo para um
relacionamento 1:1 é possível, incluindo-se os dois tiposentidades e o relacionamento em uma única tabela. É
indicado quando ambas as participações são totais e
quando as entidades-tipos não participam de outros
relacionamentos
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
95
Algoritmo ER
Relacional...
Passo 4: (trata dos relacionamentos 1:N do esquema ER)
• Para cada relacionamento binário regular (não-fraco) R (1:N) do
esquema ER, identifique a tabela S que representa o tipoentidade que participa no lado N do relacionamento.
• Inclua, como chave estrangeira em S a chave primária da tabela
T que representa o outro tipo-entidade participante de R.
• Inclua qualquer atributo simples (ou componentes simples de
atributos compostos) do relacionamento 1:N como atributos de
S.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
96
Algoritmo ER
Relacional...
• Após o passo 4:
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
97
Algoritmo ER
Relacional...
Passo 5: (trata dos relacionamentos M:N do esquema ER)
• Para cada relacionamento binário R (M:N) crie uma nova tabela
S para representar R.
• Inclua, como chaves estrangeiras em S, as chaves primárias das
tabelas que representam os tipo-entidades participantes do
relacionamento. A combinação destas chaves estrangeiras
formará a chave primária de S.
• Inclua qualquer atributo simples do relacionamento M:N como
atributo de S.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
98
Algoritmo ER
Relacional...
• Após o passo 5:
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
99
Algoritmo ER
Relacional...
Passo 6: (trata dos atributos multi-valorados no esquema ER)
• Para cada atributo multi-valorado A crie uma nova tabela R que
inclua um atributo correspondente de A mais a chave primária K
(como chave estrangeira em R) da tabela que representa o tipoentidade ou relacionamento que possua A como atributo. A
chave primária de R é a combinação de A e K. Se o atributo A é
composto deve-se incluir todos os seus componentes simples.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
100
Algoritmo ER
Relacional...
• Após o passo 6:
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
101
Algoritmo ER
Relacional...
Passo 7: (trata dos relacionamentos de grau n no esquema
ER)
• Para cada relacionamento R de grau n, n > 2, crie uma
nova tabela S para representar R. Inclua como chaves
estrangeiras em S as chaves primárias das tabelas que
representam as entidades-tipos participantes.
• Inclua também qualquer atributo simples do
relacionamento n-ário (ou componentes simples de
atributos compostos) como atributos de S.
• A chave primária de S usualmente é uma combinação de
todas as chaves estrangeiras que referenciam as tabelas que
representam os tipos-entidades participantes.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
102
Algoritmo ER
Relacional...
Passo 7: (trata dos relacionamentos de grau n no esquema ER)
• Se a restrição de participação (min, max) de um dos tiposentidades E participantes em R possui max=1, então a chave
primária de S pode ser a única chave estrangeira que referencia a
tabela E´ correspondente a E, porque, neste caso, cada entidade
e em E participará com no máximo uma instância no
relacionamento R e assim pode identificar univocamente aquela
instância do relacionamento.
UERJ - Agosto 2000
© Oscar Luiz Monteiro de Farias
103
Algoritmo ER
Relacional...
Exemplo:
SUPPLIER
SNAME
...
PROJECT
PROJNAME
PART
PARTNO
SUPPLY
SNAME
UERJ - Agosto 2000
...
...
PROJNAME
PARTNO
© Oscar Luiz Monteiro de Farias
QUANTITY
104