A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Mestrado em Engenharia de Computação área de concentração Geomática

Apresentações semelhantes


Apresentação em tema: "Mestrado em Engenharia de Computação área de concentração Geomática"— Transcrição da apresentação:

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=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 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) DNOCOUNT 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) ESSNCOUNT 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


Carregar ppt "Mestrado em Engenharia de Computação área de concentração Geomática"

Apresentações semelhantes


Anúncios Google