Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRachel Wagner Lage Alterado mais de 8 anos atrás
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))
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.