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

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

©Silberschatz, Korth and Sudarshan (Modificado)3.2.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.

Apresentações semelhantes


Apresentação em tema: "©Silberschatz, Korth and Sudarshan (Modificado)3.2.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução."— Transcrição da apresentação:

1 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução a tabelas de uma Esquema ER Álgebra Relacional Operações Estendidas da Álgebra Relacional Modificação da Base de Dados Vistas

2 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.2Database System Concepts Linguagem de Consulta/Interrogação Linguagem a que o utilizador recorre para obter informação a partir da base de dados. Categorias de linguagens  procedimentais  declarativas Linguagens “Puras”:  Álgebra Relacional  Cálculo Relacional de Tuplos  Cálculo Relacional de Domínios As linguagens puras formam a base teórica das linguagens de consulta utilizadas na prática.

3 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.3Database System Concepts Álgebra Relacional Linguagem declarativa Seis operadores básicos  selecção  projecção  união  diferença de conjuntos  produto cartesiano  renomeação Os operadores têm como argumentos relações de entrada e devolvem uma relação como resultado.

4 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.4Database System Concepts Operação de Selecção – Exemplo Relação r ABCD   1 5 12 23 7 3 10  A=B ^ D > 5 (r) ABCD   1 23 7 10

5 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.5Database System Concepts Operação de Selecção Notação:  p (r) p é designado por predicado de selecção Definida como:  p ( r) = {t | t  r e p(t)} Em que p é uma fórmula do cálculo proposicional constituída por termos ligados por:  (e),  (ou),  (não) Cada termo é da forma: op ou em que op pode ser: =, , >, . <.  Exemplo de selecção:  branch-name=‘Perryridge’ (account)

6 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.6Database System Concepts Operação de Projecção – Exemplo Relação r: ABC  10 20 30 40 11121112 AC  11121112 = AC  112112  A,C (r)

7 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.7Database System Concepts Operação de Projecção Notação:  A1, A2, …, Ak (r) em que A 1,..., A k são nomes de atributos e r é uma relação. O resultado é a relação com as k colunas obtidas eliminando as colunas que não estão listadas São removidas as linhas duplicadas no resultado, dado que as relações são conjuntos E.g. eliminar o atributo branch-name de account  account-number, balance (account)

8 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.8Database System Concepts Operação de União – Exemplo Relações r, s: r  s: AB  121121 AB  2323 r s AB  12131213

9 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.9Database System Concepts Operação de União Notação: r  s Definida como: r  s = {t | t  r ou t  s} Para r  s ser válida: 1. r, s devem ter a mesma aridade (igual número de atributos) 2. Os domínios dos atributos têm de ser compatíveis (e.g., os valores da 2ª coluna de r são do mesmo tipo dos valores da 2ª coluna de s) E.g. determinar quais os clientes que têm uma conta ou um empréstimo  customer-name (depositor)   customer-name (borrower)

10 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.10Database System Concepts Operação de Diferença de Conjuntos-Ex. Relações r, s: r – s : AB  121121 AB  2323 r s AB  1111

11 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.11Database System Concepts Operação de Diferença de Conjuntos Notação: r – s Definida como: r – s = {t | t  r e t  s} As diferenças de conjuntos só podem ser efectuadas entre relações compatíveis.  r e s devem ter a mesma aridade  os domínios dos atributos de r e s devem ser compatíveis

12 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.12Database System Concepts Operação de Produto Cartesiano-Ex. Relations r, s: r x s: AB  1212 AB  1111222211112222 CD  10 20 10 20 10 E aabbaabbaabbaabb CD  20 10 E aabbaabb r s

13 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.13Database System Concepts Operação de Produto Cartesiano Notação: r x s Definida como: r x s = {t q | t  r e q  s} Assume que os atributos de r(R) e s(S) são disjuntos. (Ou seja, R  S =  ). Se os atributos de r(R) e s(S) não são disjuntos, então têm que se utilizar renomeações.

14 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.14Database System Concepts Composição de Operações Pode-se construir expressões combinando várias operações Exemplo:  A=C (r x s) r x s  A=C (r x s) AB  1111222211112222 CD  10 20 10 20 10 E aabbaabbaabbaabb ABCDE  122122  20 aabaab

15 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.15Database System Concepts Operação de Renomeação Permite dar um nome, e portanto referir, aos resultados de expressões de álgebra relacional. Permite que uma relação seja referida por mais de um nome. Exemplo:  x (E) Devolve a expressão E com o nome X Se uma expressão de álgebra relacional E tem aridade n, então  x (A1, A2, …, An) (E) Devolve a expressão E com o nome X, e com os atributos renomeados para A 1, A2, …., An.

16 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.16Database System Concepts Definição Formal Uma expressão básica na álgebra relacional é:  Uma relação na base de dados  Uma relação constante Sejam E 1 e E 2 expressões de álgebra relacional; então todas as expressões abaixo são expressões de álgebra relacional:  E 1  E 2  E 1 - E 2  E 1 x E 2   p (E 1 ), P é um predicado nos atributos de E 1   s (E 1 ), S é uma lista com alguns dos atributos de E 1   x (E 1 ), x é um novo nome para o resultado de E 1

17 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.17Database System Concepts Exemplo Bancário branch (branch-name, branch-city, assets) customer (customer-name, customer-street, customer-only) account (account-number, branch-name, balance) loan (loan-number, branch-name, amount) depositor (customer-name, account-number) borrower (customer-name, loan-number)

18 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.18Database System Concepts Consultas de Exemplo Determinar todos os empréstimos superiores a $1200  amount > 1200 (loan) Encontrar os números dos empréstimos de montante superior a $1200  loan-number (  amount > 1200 (loan))

19 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.19Database System Concepts Consultas de Exemplo Listar os nomes de todos os clientes que têm um empréstimo, uma conta, ou ambas as coisas  customer-name (borrower)   customer-name (depositor) Encontrar os clientes que têm um empréstimo e uma conta no banco.  customer-name (borrower)   customer-name (depositor)

20 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.20Database System Concepts Consultas de Exemplo Determinar todos os clientes que têm um empréstimo na agência de Perryridge.  customer-name (  branch-name=‘Perryridge ’ (  borrower.loan-number = loan.loan-number (borrower x loan))) Listar os nomes dos clientes que possuem um empréstimo na agência de Perryridge mas que não tem nenhuma conta no banco.  customer-name (  branch-name = ‘Perryridge’ (  borrower.loan-number = loan.loan-number ( borrower x loan ))) –  customer-name ( depositor )

21 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.21Database System Concepts Consultas de Exemplo Determinar todos os clientes que têm um empréstimo na agência de Perryridge.  Query 1  customer-name (  branch-name = ‘Perryridge’ (  borrower.loan-number = loan.loan-number (borrower x loan)))  Query 2  customer-name (  loan.loan-number = borrower.loan-number ( (  branch-name = ‘Perryridge’ (loan)) x borrower) )

22 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.22Database System Concepts Consultas de Exemplo Determinar o saldo mais elevado entre todas as contas Renomear a relação account como d A consulta é:  balance (account) -  account.balance (  account.balance < d.balance (account x  d (account)))

23 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.23Database System Concepts Exemplo Clínica médicos(nEmpr,nomeM,especialidade) pacientes(nBI,nomeP,telefone,morada,idade) fármacos(codF,nomeF) consultas(nConsulta,data,nBI,nEmpr) receitas(codF,nConsulta,quantidade)

24 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.24Database System Concepts Consultas de Exemplo Quais os pacientes com mais de 50 anos de idade?  idade > 50 (pacientes) Quais os nomes dos pacientes com mais de 50 anos de idade?  nomeP (  idade > 50 (loan)) Quais os fármacos que já foram receitados em consultas da clínica?  nomeF ((  receitas.codF = fármacos.codF (receitas x fármacos))) Quais os fármacos que nunca foram receitados?  nomeF (fármacos) –  nomeF (  receitas.codF = fármacos.codF (receitas x fármacos)))

25 ©Silberschatz, Korth and Sudarshan (Modificado)3.2.25Database System Concepts Consultas de exemplo Qual a idade do paciente mais velho?  Renomear a relação pacientes como d  A consulta é:  idade (pacientes) –  pacientes.idade (  pacientes.idade < d.idade (pacientes x  d (pacientes) ) ) E quais os (nomes dos) pacientes com essa idade?  Seja r a relação da pergunta anterior:  nomeP (  pacientes.idade = r.idade (pacientes x r))


Carregar ppt "©Silberschatz, Korth and Sudarshan (Modificado)3.2.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução."

Apresentações semelhantes


Anúncios Google