Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouEnrico Lage Alterado mais de 9 anos atrás
1
Mestrado em Engenharia de Computação área de concentração Geomática
Bancos de Dados Mestrado em Engenharia de Computação área de concentração Geomática UERJ © Oscar Luiz Monteiro de Farias
2
© Oscar Luiz Monteiro de Farias
Tópicos O Modelo de Dados Relacional (introduzido por Codd em 1970) Álgebra Relacional UERJ © Oscar Luiz Monteiro de Farias
3
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 © Oscar Luiz Monteiro de Farias
4
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 © Oscar Luiz Monteiro de Farias
5
Conceitos do Modelo Relacional...
Atributos Nome da relação tuplas Domínio Domínio UERJ © Oscar Luiz Monteiro de Farias
6
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 © Oscar Luiz Monteiro de Farias
7
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) Um mesmo domínio pode se aplicar a diferentes atributos UERJ © Oscar Luiz Monteiro de Farias
8
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
9
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
10
© Oscar Luiz Monteiro de Farias
Intensão x Extensão Intensão = esquema da relação Extensão = instância da relação UERJ © Oscar Luiz Monteiro de Farias
11
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 mini-mundo. UERJ © Oscar Luiz Monteiro de Farias
12
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 © Oscar Luiz Monteiro de Farias
13
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 © Oscar Luiz Monteiro de Farias
14
© Oscar Luiz Monteiro de Farias
Primeira Forma Normal Cada valor de um atributo em uma tupla deve ser atômico Não são permitidos atributos compostos ou multi-valorados 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 © Oscar Luiz Monteiro de Farias
15
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 © Oscar Luiz Monteiro de Farias
16
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 © Oscar Luiz Monteiro de Farias
17
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 © Oscar Luiz Monteiro de Farias
18
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 © Oscar Luiz Monteiro de Farias
19
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 identifica 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 © Oscar Luiz Monteiro de Farias
20
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 © Oscar Luiz Monteiro de Farias
21
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 © Oscar Luiz Monteiro de Farias
22
© Oscar Luiz Monteiro de Farias
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). Chave candidata - é uma super-chave para a qual nenhum subconjunto de seus atributos possa ser uma super-chave. Uma chave é determinada a partir do significado dos atributos no esquema de uma relação. É uma propriedade invariante no tempo. UERJ © Oscar Luiz Monteiro de Farias
23
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 © Oscar Luiz Monteiro de Farias
24
© Oscar Luiz Monteiro de Farias
ATENÇÃO: O atributo DNUMBER em DEPARTMENT e em DEPT_LOCATIONS representa o mesmo conceito no mundo real - o número dado a um departamento. O mesmo conceito é chamado DNO em EMPLOYEE e DNUM em PROJECT. Nós iremos permitir que um atributo que representa o mesmo conceito no mundo realtenha nomes que podem ou não, ser idênticos em diferentes relações. Da mesma forma será permitido que atributos que representam diferentes conceitos tenham o mesmo nome, desde que em diferentes relações. UERJ © Oscar Luiz Monteiro de Farias
25
© Oscar Luiz Monteiro de Farias
UERJ © Oscar Luiz Monteiro de Farias
26
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 © Oscar Luiz Monteiro de Farias
27
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 © Oscar Luiz Monteiro de Farias
28
© Oscar Luiz Monteiro de Farias
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. Uma chave estrangeira pode referenciar-se à sua própria relação. UERJ © Oscar Luiz Monteiro de Farias
29
© Oscar Luiz Monteiro de Farias
UERJ © Oscar Luiz Monteiro de Farias
30
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 © Oscar Luiz Monteiro de Farias
31
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 © Oscar Luiz Monteiro de Farias
32
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
33
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
34
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
35
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 © Oscar Luiz Monteiro de Farias
36
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 ATEÇÃO: Estamos assumindo que o projeto do Banco de Dados Relacional já foi elaborado. Pode-se usar duas técnicas, que serão vistas posteriormente: i) mapeamento do modelo conceitual no modelo lógico; ii) Teoria de Normalização e algoritmos para projeto relacional, baseados em dependência funcional e Multi-valorada. Cada SGBD deve possuir uma DDL para definir os esquemas das relações. A maioria das DDLs são baseadas na linguagem SQL.. UERJ © Oscar Luiz Monteiro de Farias
37
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 © Oscar Luiz Monteiro de Farias
38
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 © Oscar Luiz Monteiro de Farias
39
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 © Oscar Luiz Monteiro de Farias
40
© Oscar Luiz Monteiro de Farias
Á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 © Oscar Luiz Monteiro de Farias
41
© Oscar Luiz Monteiro de Farias
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) é a letra grega SIGMA. UERJ © Oscar Luiz Monteiro de Farias
42
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
43
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
44
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
45
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
46
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
47
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
48
© Oscar Luiz Monteiro de Farias
A Operação PROJECT... Ex.: LNAME, FNAME, SALARY(EMPLOYEE) UERJ © Oscar Luiz Monteiro de Farias
49
© Oscar Luiz Monteiro de Farias
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_c LNAME, FNAME, SALARY(EMPLOYEE) R(SOBRENOME, NOME, SALÁRIO) LNAME, FNAME, SALARY(EMPLOYEE) As operações na Álgebra Relacional podem estar aninhadas em uma úmica expressão ou popdemos 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. UERJ © Oscar Luiz Monteiro de Farias
50
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 © Oscar Luiz Monteiro de Farias
51
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 © Oscar Luiz Monteiro de Farias
52
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 © Oscar Luiz Monteiro de Farias
53
RESULT = RESULT_1 RESULT_2
Salary < 30000 Salary > 35000 (Salary < 30000) OR (Salary > 35000) UERJ © Oscar Luiz Monteiro de Farias
54
RESULT_A = RESULT_3 RESULT_4
Salary < 40000 30000 < Salary < 40000 Salary > 30000 UERJ © Oscar Luiz Monteiro de Farias
55
RESULT_B = RESULT_3 RESULT_4
Salary < 40000 Salary > 30000 UERJ © Oscar Luiz Monteiro de Farias
56
Propriedades das operações
A UNIÃO e a INTERSECÇÃO são comutativas R S = S R R S = S R 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 © Oscar Luiz Monteiro de Farias
57
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 © Oscar Luiz Monteiro de Farias
58
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 © Oscar Luiz Monteiro de Farias
59
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 © Oscar Luiz Monteiro de Farias
60
© Oscar Luiz Monteiro de Farias
Exemplo... FEMALE_EMPS SEX=‘F’(EMPLOYEE) EMPNAMES FNAME, LNAME, SSN(FEMALE_EMPS) UERJ © Oscar Luiz Monteiro de Farias
61
EMP_DEPENDENTS EMPNAMES X DEPENDENT
Exemplo... EMP_DEPENDENTS EMPNAMES X DEPENDENT UERJ © Oscar Luiz Monteiro de Farias
62
© Oscar Luiz Monteiro de Farias
Exemplo... ACTUAL_DEPENDENTS SSN=ESSN(EMP_DEPENDENTS) RESULT FNAME, LNAME, DEPENDENT_NAME (ACTUAL_DEPENDENTS) UERJ © Oscar Luiz Monteiro de Farias
63
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
64
© Oscar Luiz Monteiro de Farias
A operação JOIN ( )... DEPT_MGR DEPARTMENT MGRSSN=SSN EMPLOYEE RESULT DNAME, LNAME,FNAME, (DEPT_MGR) UERJ © Oscar Luiz Monteiro de Farias
65
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
66
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
67
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 © Oscar Luiz Monteiro de Farias
68
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 © Oscar Luiz Monteiro de Farias
69
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 © Oscar Luiz Monteiro de Farias
70
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
71
© Oscar Luiz Monteiro de Farias
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=ZX, 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 aparecer em R em combinação com toda tupla em S. UERJ © Oscar Luiz Monteiro de Farias
72
© Oscar Luiz Monteiro de Farias
A operação DIVISION... Y X R(Z) S(X) Z UERJ © Oscar Luiz Monteiro de Farias
73
© Oscar Luiz Monteiro de Farias
A operação DIVISION... UERJ © Oscar Luiz Monteiro de Farias
74
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
75
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 © Oscar Luiz Monteiro de Farias
76
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 © Oscar Luiz Monteiro de Farias
77
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 © Oscar Luiz Monteiro de Farias
78
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 © Oscar Luiz Monteiro de Farias
79
© Oscar Luiz Monteiro de Farias
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 © Oscar Luiz Monteiro de Farias
80
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 © Oscar Luiz Monteiro de Farias
81
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 © Oscar Luiz Monteiro de Farias
82
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 © Oscar Luiz Monteiro de Farias
83
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 © Oscar Luiz Monteiro de Farias
84
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 © Oscar Luiz Monteiro de Farias
85
Exemplos de queries em AR...
Liste os nomes de todos os empregados que tenham dois 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) -- T NO_OF_DEPS>=2(T1) RESULT LNAME, FNAME (T2 * EMPLOYEE) UERJ © Oscar Luiz Monteiro de Farias
86
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 © Oscar Luiz Monteiro de Farias
87
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 © Oscar Luiz Monteiro de Farias
88
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 © Oscar Luiz Monteiro de Farias
89
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 © Oscar Luiz Monteiro de Farias
90
Algoritmo ER Relacional...
Após o passo 1: UERJ © Oscar Luiz Monteiro de Farias
91
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 © Oscar Luiz Monteiro de Farias
92
Algoritmo ER Relacional...
Após o passo 2 : UERJ © Oscar Luiz Monteiro de Farias
93
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 © Oscar Luiz Monteiro de Farias
94
Algoritmo ER Relacional...
Após o passo 3 : UERJ © Oscar Luiz Monteiro de Farias
95
Algoritmo ER Relacional...
Observe que um mapeamento alternativo para um relacionamento 1:1 é possível, incluindo-se os dois tipos-entidades 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 © Oscar Luiz Monteiro de Farias
96
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 tipo-entidade 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 © Oscar Luiz Monteiro de Farias
97
Algoritmo ER Relacional...
Após o passo 4: UERJ © Oscar Luiz Monteiro de Farias
98
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 © Oscar Luiz Monteiro de Farias
99
Algoritmo ER Relacional...
Após o passo 5: UERJ © Oscar Luiz Monteiro de Farias
100
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 tipo-entidade 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 © Oscar Luiz Monteiro de Farias
101
© Oscar Luiz Monteiro de Farias
Algoritmo ER Relacional... Após o passo 6: UERJ © Oscar Luiz Monteiro de Farias
102
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 © Oscar Luiz Monteiro de Farias
103
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 tipos-entidades 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 © Oscar Luiz Monteiro de Farias
104
Algoritmo ER Relacional...
Exemplo: UERJ © Oscar Luiz Monteiro de Farias
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.