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

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

©Silberschatz, Korth and Sudarshan (Modificado)3.4.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.4.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.4.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.4.2Database System Concepts Operações Estendidas da Álg. Relacional Aumentam a expressividade da Álgebra Relacional:  Projecção Generalizada  Funções de Agregação  Junção Externa

3 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.3Database System Concepts Projecção Generalizada Permite a utilização de funções aritméticas na lista de projecção.  F1, F2, …, Fn (E) E é uma expressão arbitrária de álgebra relacional. Cada uma das expressões F 1, F 2, …, F n é uma expressão aritmética envolvendo constantes e atributos no esquema de E. Dada a relação credit-info(customer-name, limit, credit-balance), encontrar quanto cada cliente pode ainda gastar:  customer-name, limit – credit-balance (credit-info) Há quantos dias foi cada uma das consultas  nConsulta, today – data (consultas)

4 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.4Database System Concepts Funções de Agregação e Operações Funções de Agregação aplicam-se a uma colecção de valores e devolvem um único valor como resultado. avg: média dos valores min: mínimo dos valores max: máximo dos valores sum: soma dos valores count: número dos valores Operação de Agregação na álgebra relacional G 1, G 2, …, G n g F 1 ( A 1), F 2 ( A 2),…, F n ( A n) (E)  E é uma expressão de álgebra relacional  G 1, G 2 …, G n é uma lista de atributos de agrupamento (pode ser vazia)  Cada F i é uma função de agregação  Cada A i é um nome de um atributo

5 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.5Database System Concepts Operação de Agregação - Exemplo Relação r: AB   C 7 3 10 g sum(c) (r) sum-C 27

6 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.6Database System Concepts Operação de Agregação - Exemplo Relação account agrupada por branch-name: branch-name g sum(balance) (account) branch-nameaccount-numberbalance Perryridge Brighton Redwood A-102 A-201 A-217 A-215 A-222 400 900 750 700 branch-namebalance Perryridge Brighton Redwood 1300 1500 700

7 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.7Database System Concepts Funções de Agregação (Cont.) O resultado da agregação não tem um nome  Pode-se recorrer à operação de renomeação para lhe dar um nome  Por conveniência, permite-se a renomeação de atributos na operação de agregação Qual a média de idades dos pacientes de cada um dos médicos? branch-name g sum(balance) as sum-balance (account) nEmpr g avg(idade) as média (consultas pacientes)

8 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.8Database System Concepts Mais exemplos Quantos fármacos diferentes foram receitados em cada uma das consultas? nconsulta g count(codF) as quantos (receitas) Para cada médico, qual a quantidade média de fármacos receitados por consulta? quantCons  nconsulta g sum(quant) as soma (receitas) nEmpr g avg(soma) (quantCons consultas) Nota: Nas duas perguntas anteriores não se entra em conta com as consultas com 0 fármacos receitados!! (veremos já como resolver este problema) Qual a idade do paciente mais velho? g max(idade) as idade (pacientes)

9 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.9Database System Concepts Junção Externa (ou exterior) Uma extensão da operação de junção que evita a perda de informação. Calcula a junção e depois adiciona ao resultado os tuplos de uma relação que não estão relacionados com a outra relação na junção. Utiliza valores nulos :  null significa que o valor é desconhecido ou que não existe  Simplificadamente, todas as comparações com null são falsas por definição.  Estudaremos já de seguida o significado preciso das comparações com nulos,

10 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.10Database System Concepts Junção Externa - Exemplo Relação loan loan-numberamount L-170 L-230 L-260 3000 4000 1700 Relação borrower customer-nameloan-number Jones Smith Hayes L-170 L-230 L-155 branch-name Downtown Redwood Perryridge

11 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.11Database System Concepts Junção Externa – Exemplo Junção interna loan Borrower loan borrower Junção externa esquerda loan-numberamount L-170 L-230 3000 4000 customer-name Jones Smith branch-name Downtown Redwood loan-numberamount L-170 L-230 L-260 3000 4000 1700 customer-name Jones Smith null branch-name Downtown Redwood Perryridge

12 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.12Database System Concepts Junção Externa - Exemplo Junção externa direita loan borrower loan-numberamount L-170 L-230 L-155 3000 4000 null customer-name Jones Smith Hayes loan-numberamount L-170 L-230 L-260 L-155 3000 4000 1700 null customer-name Jones Smith null Hayes loan borrower Junção externa branch-name Downtown Redwood null branch-name Downtown Redwood Perryridge null

13 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.13Database System Concepts Consultas de exemplo Quais os fármacos que nunca foram receitados?  nomeF (  nConsulta=null (fármacos receitas)) Quais as consultas em que não foi receitado qualquer fármaco?  nConsulta (  nCodF=null (consultas receitas)) Quantos fármacos diferentes foram receitados em cada uma das consultas? nconsulta g count(codF) as quantos (consultas receitas) Para cada médico, qual a quantidade média de fármacos receitados por consulta? quantCons  nconsulta g sum(quant) as soma (consultas receitas) nEmpr g avg(soma) (quantCons consultas)

14 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.14Database System Concepts Valores Nulos É possível que um tuplo tenha um valor nulo, denotado por null, para algum dos seus atributos null significa um valor desconhecido ou que não existe. O resultado de qualquer expressão aritmética envolvendo um null é null. As funções de agregação ignoram os valores nulos  Decisão arbitrária. Alternativamente, poderia-se retornar null.  Segue-se a semântica da SQL no tratamento de valores nulos. Na eliminação de duplicados e agrupamento, um null é tratado como um outro valor qualquer, assumindo-se que dois nulls são o mesmo  Alternativa: assumir que cada null é diferente de todos os outros  Ambas são decisões arbitrárias, portanto segue-se a SQL

15 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.15Database System Concepts Valores Nulos Comparações com valores nulos devolvem o valor de verdade unknown  Se false fosse usado em vez unknown, então not (A = 5 Lógica a três valores com o valor de verdade unknown:  OR: (unknown or true) = true, (unknown or false) = unknown (unknown or unknown) = unknown  AND: (true and unknown) = unknown, (false and unknown) = false, (unknown and unknown) = unknown  NOT: (not unknown) = unknown  Em SQL “P is unknown” é verdade se o predicado P tem valor de verdade unknown Resultado do predicado de selecção é tratado como false se tiver valor de verdade unknown

16 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.16Database System Concepts Modificação da Base de Dados O conteúdo da base de dados pode ser modificado através das seguintes operações:  Remoção  Inserção  Actualização Todas estas operação são expressas por intermédio do operador de atribuição.

17 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.17Database System Concepts Remoção Uma operação de remoção é expressa de uma maneira semelhante a uma consulta, excepto que os tuplos seleccionados são removidos da base de dados. Só se podem remover tuplos integralmente; não se podem apagar valores de determinados atributos Uma remoção é expressa em álgebra relacional por: r  r – E em que r é uma relação e E é uma operação de álgebra relacional.

18 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.18Database System Concepts Exemplos de Remoção Apagar todas as contas na agência de Perryridge. account  account –  branch-name = ‘Perryridge’ (account) Apagar todos os registos de empréstimos de montante entre 0 e 50 loan  loan –   amount  0  and amount  50 (loan) Apagar todas as contas de balcões localizados em Needham. r 1    branch-city = ‘Needham’ (account branch) r 2   branch-name, account-number, balance (r 1 ) r 3   customer-name, account-number (r 2 depositor) account  account – r 2 depositor  depositor – r 3

19 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.19Database System Concepts Exemplos de Remoção (cont) Apagar toda a informação relativa a consultas anteriores a 2000: r 1    data < 01-01-2000 (consultas) r 2   codF,nConsulta,quant (receitas r 1 ) consultas  consultas – r 1 receitas  receitas – r 2

20 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.20Database System Concepts Inserção Para inserir informação numa relação podemos:  especificar um tuplo a ser inserido  escrever uma consulta cujo resultado é um conjunto de tuplos a inserir Na álgebra relacional, uma inserção é expressa por: r  r  E em que r é uma relação e E é uma expr. de álgebra relacional. A inserção de um único tuplo é efectuada quando a expressão E é a relação constante contendo esse tuplo.

21 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.21Database System Concepts Exemplos de Inserção Inserir informação na base de dados especificando que o cliente Smith tem $1200 na conta A-973 na agência de Perryridge. account  account  {(‘Perryridge’, A-973, 1200)} depositor  depositor  {(‘Smith’, A-973)} Dar um bónus a todos os mutuários na agência de Perryridge: uma conta de poupança de $200. O número do empréstimo é utilizado para número da conta de poupança. r 1  (  branch-name = “Perryridge” (borrower loan)) account  account   branch-name, account-number,200 (r 1 ) depositor  depositor   customer-name, loan-number,(r 1 )

22 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.22Database System Concepts Exemplos de Inserção Inserir informação na base de dados especificando que um novo paciente, com BI nº 10000000 e nome Paulo, teve uma consulta (nº1000) no dia 30-09-2003 com o médico João (assumindo que só há um médico com esse nome) pacientes  pacientes  {(10000000,‘Paulo’,null,null,null)} consultas  consultas   1000,30-09-2003,1000,nEmpr (  nomeM = “João” (médicos))

23 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.23Database System Concepts Actualização Um mecanismo para alterar um valor de um tuplo sem alterar todos os valores do tuplo. Recorre-se ao operador de projecção generalizada para efectuar este tipo de tarefa r   F1, F2, …, FI, (r) Cada F i, ou é o i-ésimo atributo de r, se o i-ésimo atributo não for alterado, ou uma expressão F i, envolvendo apenas constantes e atributos de r, que permite calcular o novo valor do atributo.

24 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.24Database System Concepts Exemplos de Actualizações Pague juros de 5% em todas as contas account   AN, BN, BAL * 1.05 (account) em que AN, BN e BAL são abreviaturas para account-number, branch-name e balance, respectivamente. Pague 6% de juros em todas as contas com saldo superior a $10,000 e 5% às restantes contas. account   AN, BN, BAL * 1.06 (  BAL  10000 (account))   AN, BN, BAL * 1.05 (  BAL  10000 (account))

25 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.25Database System Concepts Vistas Em certas circunstâncias, não é desejável que todos os utilizadores possam aceder a todo o modelo lógico (i.e. a todas as relações armazenadas na base de dados) Considere o caso de um empregado que necessita de saber o número de empréstimo de um cliente, mas que não precisa de saber o montante desse empréstimo. Este empregado deverá ver apenas a relação descrita em álgebra relacional por  customer-name, loan-number (borrower loan) Ou alguém que pode aceder a dados de nomes de médicos e pacientes das consultas, mas não ao que foi prescrito nem a outra informação dos médicos e pacientes:  nConsulta,nomeP,nomeM,data (pacientes consultas médicos) Qualquer relação que não pertença ao modelo conceptual mas que se torne visível ao utilizador como uma “relação virtual” é designada por vista.

26 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.26Database System Concepts Definição de vistas Uma vista é definida por intermédio da instrução create view create view v as em que é uma expressão de álgebra relacional qualquer. O nome da vista é v. Após a definição de uma vista, o seu nome pode ser utilizado para se referir à relação virtual gerada pela vista. Uma definição de uma vista não é o mesmo que criar uma nova relação a partir da avaliação da sua expressão. Em vez disso, a definição da vista permite guardar a expressão que depois é substituída nas consultas que utilizam a vista.

27 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.27Database System Concepts Exemplos de Vistas Considere-se a vista (com o nome all-customer) contento os nomes das agências e seus clientes. create view all-customer as  branch-name, customer-name (depositor account)   branch-name, customer-name (borrower loan) Pode-se assim encontrar todos os clientes da agência de Perryridge através de:  branch-name (  branch-name = ‘Perryridge’ (all-customer))

28 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.28Database System Concepts Actualizações através de Vistas Modificações nas bases de dados através de vistas devem ser traduzidas para modificações das verdadeiras relações presentes na base de dados. Considere-se a pessoa que deve ter acesso à informação dos empréstimos com a excepção do seu montante. A vista que essa pessoa pode utilizar, branch-loan, define-se como: create view branch-loan as  branch-name, loan-number (loan) Como se permite que o nome de uma vista ocorra em qualquer sítio onde se pode usar uma relação, essa pessoa poderá sentir- se tentada a escrever: branch-loan  branch-loan  {(“Perryridge”, L-37)}

29 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.29Database System Concepts Actualizações através de Vistas (Cont.) A inserção anterior deve ser traduzida para uma inserção na relação loan a partir da qual se construiu branch-loan. Uma inserção em loan requer um valor para amount. Podemos:  Rejeitar a inserção e enviar uma mensagem de erro para o utilizador.  Inserir o tuplo (“L-37”, “Perryridge”, null) na relação loan Algumas actualizações através de vistas são impossíveis de traduzir para actualizações das relações da base de dados:  create view v as  branch-name = “Perryridge” (account)) v  v  (L-99, Downtown, 23) Outras não têm uma tradução única  all-customer  all-customer  (Perryridge, John)  Deve-se escolher loan ou account, e criar um novo número de empréstimo ou de conta!

30 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.30Database System Concepts Vistas definidas a partir de outras vistas Uma vista pode ser utilizada na expressão de definição de outra vista Uma vista v 1 depende directamente de uma vista v 2 se v 2 é utilizada na expressão que define v 1 Uma vista v 1 depende de uma vista v 2 se v 1 depende directamente de v 2 ou se existe um caminho de dependências entre v 1 e v 2 Uma vista v diz-se recursiva se depender dela própria.

31 ©Silberschatz, Korth and Sudarshan (Modificado)3.4.31Database System Concepts Expansão de vistas Forma de atribuir significado a vistas definidas em termos de outras vistas. Seja a vista v 1 definida em termos de uma expressão e 1 que pode ela própria conter vistas. Para expandir as vistas numa expressão repete-se sucessivamente o seguinte passo: repeat Encontrar uma vista v i em e 1 Substituir a vista v i pela expressão que a define until não ocorram mais vistas em e 1 Desde que as definições das vistas não sejam recursivas, este ciclo terminará sempre.


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

Apresentações semelhantes


Anúncios Google