Álgebra Relacional: Prod. Cartesiano. Álgebra Relacional: Projeção. Álgebra Relacional: Junção Natural. Álgebra Relacional: Junção. 1.

Documentos relacionados
Álgebra Relacional. Programa. Modelos de Dados. LCs relacionais formais. Introdução

António Rocha Nuno Melo e Castro

Faculdade Pitágoras Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

- SQL Linguagem de Manipulação de Dados

Álgebra Relacional e SQL

O Modelo e a Álgebra Relacional

Operações da Álgebra Relacional Operadores Especiais da Álgebra Relacional Renomeação

Álgebra Relacional e SQL operações de interesse

Aula 8 BD1 Álgebra Relacional. Profa. Elaine Faria UFU

Bancos de Dados Notas de Aula Álgebra Relacional Introdução Prof. Dr. Daniel A. Furtado

ALGEBRA RELACIONAL. Álgebra Relacional Conjunto básico de operações para o Modelo Relacional O resultado é uma relação

Modelo Relacional. Relacionamento. Processo de Projeto de. Programa. Modelo Entidade Relacionamento

Modelo Relacional - Manipulação

ANÁLISE E PROJETO DE BANCO DE DADOS

ÁLGEBRA E CÁLCULO RELACIONAL

Introdução. Introdução. Álgebra Relacional. Linguagens formais de Consulta Modelo Relacional. O que foi visto até agora...

Banco de Dados Prof. Célio R. Castelano Página 1 de 9. Álgebra Relacional

Banco de Dados. Álgebra Relacional. João Eduardo Ferreira Osvaldo Kotaro Takai Marcelo Finger

Universidade Veiga de Almeida

Banco de Dados I. Prof. Diego Buchinger. Profa. Rebeca Schroeder Freitas Prof. Fabiano Baldo.

Modelo Relacional: Banco de Dados: coleção de relações cada relação tem um nome único.

Unipar Universidade Paranaense Disciplina: Banco de Dados II 3ª Série Profª: Késsia Marchi Profa. Késsia Marchi

Álgebra Relacional. Linguagem de consultas procedural Conjunto de operações que usam uma ou duas relações como entrada e geram uma relação de saída

IEC Banco de Dados I Aula 06 Álgebra Relacional

Tornou-se um padrão de fato para aplicações comerciais, devido a sua simplicidade e performance.

Bancos (Bases) de Dados Aula #7 Álgebra Relacional

Curso EFA Tecnológico Técnico de Informática e Sistemas. - Álgebra Relacional - João Leitão

Rápida revisão do Modelo Relacional

Álgebra Relacional. Introdução. Introdução. Álgebra Relacional

Banco de Dados. Álgebra Relacional. João Eduardo Ferreira Osvaldo Kotaro Takai

Banco de Dados I Módulo III: Linguagens de Consulta. (Aula 1) Clodis Boscarioli

Linguagem de Consulta/Interrogação

ROTEIRO Introdução Álgebra e Cálculo Relacional Operações da Álgebra Relacional Classificação de Operadores da Álgebra Relacional Mapeamento AR -> SQL

Bases de Dados. Álgebra Relacional. Selecção (σ) Seleccionar os tuplos que satisfazem uma condição. exemplo: empréstimos da agência de Perryridge

4. Projecto de Bases de Dados

Modelo Entidade Relacionamento

Roteiro. Álgebra Relacional e Cálculo Relacional. BCC321 - Banco de Dados I. Introdução. Ementa. Posicionamento. Introdução

Aula 11 SBD SQL Parte 3. Profa. Elaine Faria UFU

1. E 1 R 1 X R 2 (equi-join) C = D

Operações fundamentais são suficientes para expressar qualquer consulta. Problema: consultas muito longas. Solução: definição de operações adicionais

Bases de Dados 2013/2014 Álgebra Relacional. Helena Galhardas 2013 IST. Bibliografia. Raghu Ramakrishnan, Database Management Systems, Cap.

Banco de Dados. Aula 8 - Prof. Bruno Moreno 16/09/2011

Bases de Dados. Álgebra Relacional. Selecção (σ) Seleccionar os registos que satisfazem uma condição exemplo: empréstimos da agência de Perryridge

07/08/2008. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

Bases de Dados Uma Recordação da Algebra Relacional

Álgebra e cálculo relacional. Andre Noel

TABELA ENTIDADE LINHA OCORRÊNCIA DA ENTIDADE COLUNA ATRIBUTO DA ENTIDADE

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan

Bases de Dados. Parte IV: Álgebra e Cálculo Relacional

Modelo Relacional. Aula 02

SQL - Perguntas. André Restivo. Faculdade de Engenharia da Universidade do Porto. February 24, 2012

Prova de Fundamentos de Bancos de Dados 1 a Prova

Modelo Relacional Álgebra Relacional

TECNOLOGIA EM SISTEMAS PARA INTERNET. Banco de dados em aplicativos WEB. Aula 5

Sumário SELECT + FROM

BCD29008 Banco de dados

DCC011 Introdução a Banco de Dados

Introdução a. π LNAME, FNAME (σ SALARY>C (EMPLOYEE))

Banco de Dados I Álgebra Relacional

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

DCC011 Introdução a Banco de Dados Definição do Trabalho Final

Revisão e Exercícios. Relacionamento. Projeto de Bancos de Dados. Chave e Domínio. Tipos de Atributos

Base de Dados. Sistemas de Informação. Base de Dados - Índice Introdução Componentes Base de Dados. Introdução. Introdução. Introdução.

Banco de Dados I. Aula 9 - Prof. Bruno Moreno 20/09/2011

Processamento e Otimização de Consultas

Conteúdo Segunda Prova. Revisão Segunda Prova. Relembrando: operações. Álgebra Relacional. Seleção. Projeção. Data da prova: 23/05.

Álgebra Relacional. Linguagens de consultas relacionais

Um modelo por si próprio não pode realizar qualquer unidade de trabalho útil. É apenas uma representação da realidade.

Bases de Dados. Parte IV. Álgebra e Cálculo Relacional

- Um "query block" permite a implementação das operações de selecção, projecção e junção da álgebra relacional.

SISTEMAS DE BANCO DE DADOS. Prof. Adriano Pereira Maranhão

Sumário. Etapas do Processamento de Consultas

Álgebra Relacional e Cálculo Relacional

Bases de Dados. Parte IV

DCC011 Introdução a Banco de Dados SQL gerenciar tabelas e dados

Exame de Recurso de Base de Dados Universidade do Algarve 03/Fev/2005, (duração: 2 horas)

Modelo Relacional Wendel Melo

Bases de Dados. Álgebra Relacional II Junções, agregações, vistas. P. Serendero,

DCC011 Introdução a Banco de Dados. Construindo o Esquema. 1. Propriedades de Modelos ER. Construindo Esquema Conceitual

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

INF01145 Fundamentos de Banco de Dados Plano de ensino

Banco de Dados II. Aula Prof. Diemesleno Souza Carvalho

SQL. Introdução. Por que SQL? Setenças Select-From-Where

Modelo Entidade Relacionamento

Modelo de Dados Relacional

!" # Modelos de dados. 1ª geração. 2ª geração. 3ª geração. Modelo Hierárquico Modelo Rede. Modelo Relacional

Bases de Dados. Parte IV: Álgebra e Cálculo Relacional

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Banco de dados. Aula 19 Algebra Relacional Continuação. 1 Wedson Quintanilha da Silva -

Álgebra Relacional. Índice. Sistemas de Bases de Dados. Orlando Belo

Modelo Relacional. Modelo Relacional. Modelo Relacional. Banco de Dados. Modelo Relacional. Modelo Relacional. Fernando Fonseca Ana Carolina

Prova de Fundamentos de Bancos de Dados 1 a Prova

Sistemas de Informação e Bases de Dados 2012/2013. Modelo Relacional. Alberto Sardinha 2012 IST

INE 5423 Banco de Dados I

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Bases de Dados BDDAD. Linguagem SQL. Comando SELECT Divisão Algébrica. Nelson Freire (ISEP LEI-BDDAD 2015/16) 1/9

Transcrição:

Programa DCC011 Introdução a Banco de Dados Álgebra Relacional Mirella M. Moro Departamento de Ciência da Computação Universidade Federal de Minas Gerais mirella@dcc.ufmg.br Introdução Conceitos básicos, características da abordagem de banco de dados, modelos de dados, esquemas e instâncias, arquitetura de um sistema de banco de dados, componentes de um sistema de gerência de banco de dados. Modelos de dados e linguagens Modelo entidade-relacionamento (ER), modelo relacional, álgebra relacional, SQL. Projeto de bancos de dados Fases do projeto de bancos de dados, projeto lógico de bancos de dados relacionais, normalização. Novas Tecnologias e Aplicações de Banco de Dados DCC011 - profa. Mirella M. Moro 2 Correção de Exercícios Autor(CodAutor, NomeAutor, CodEndereco, CodInst) (CodEndereco) referencia Endereco (CodInst) referencia Instituicao Artigo(CodArtigo, Titulo, AnoPublicacao) AutorArtigo(CodAutor, CodArtigo) (CodAutor) referencia Autor,(CodArtigo) referencia Artigo Instituicao(CodInst, NomeInst, CodEndereco) (CodEndereco) referencia Endereco Endereco(CodEndereco, Rua, Numero, Bairro, Cidade, Estado, Pais, Cep) 1) Obter os títulos dos artigos seguidos do nome seus autores. π Titulo, NomeAutor (Autor AutorArtigo Artigo) OU AutorA, AutorArtigoAA, ArtigoR π Titulo, NomeAutor σ A.Codautor=AA.CodAutor ^ R.CodArtigo=AA.CodArtigo (A AA R) OBS: junção natural de três tabelas funciona desde que tenham um atributo em comum para dois pares delas. Nesse caso, a condição implícita da junção é Autor.CodAutor = AutorArtigo.CodAutor ^ AutorArtigo.CodArtigo = Artigo.CodArtigo 2) Obter os nomes dos autores que publicaram artigos em 1998 e 1999. (π NomeAutor σ AnoPublicacao=1998 (Autor AutorArtigo Artigo)) (π NomeAutor σ AnoPublicacao=1999 (Autor AutorArtigo Artigo)) REVISÃO operadores básicos da álgebra relacional OBS: Nãopodeser (π NomeAutor σ AnoPublicacao=1998 ^ AnoPublicacao=1999 (Autor AutorArtigo Artigo)) POR QUÊ?!?!?!?!?!?!? DCC011 - profa. Mirella M. Moro 3 DCC011 - profa. Mirella M. Moro 4 Álgebra Relacional: Revisão Dadas duas relações R1 e R2 Operações Básicas Selection (σ) Seleciona em sub-conjunto de tuplas da relação Projection (π) Apaga colunas indesejadas da relação Cross-product ( ) Permite combinar R1 e R2 Set-difference ( ) Tuplas em R1, mas não em R2 Union ( ) Tuplas em R1 e em R2 Operações Adicionais: Intersecção, junção, divisão, renomear Desde que cada operação retorna uma relação, operações podem ser compostas! Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) DCC011 - profa. Mirella M. Moro 5 Álgebra Relacional: Seleção Relation Sells: bar beer price Joe s Bud 2.50 Sue s Miller 3.00 JoeMenu σ bar= Joe s (Sells): bar beer price Joe s Bud 2.50 σ mantém as colunas σ seleciona linhas de acordo com condição DCC011 - profa. Mirella M. Moro 6

Álgebra Relacional: Projeção Relation Sells: bar beer price Joe s Bud 2.50 Sue s Miller 3.00 MUITO IMPORTANTE ÁLGEBRA ELIMINA DUPLICATAS Prices π beer,price (Sells): beer price Bud 2.50 Miller 2.75 Miller 3.00 π mantém colunas conforme definido DCC011 - profa. Mirella M. Moro 7 Álgebra Relacional: Prod. Cartesiano R1( A, B ) 1 2 3 4 R2( B, C ) 5 6 7 8 9 10 R3 R1 Χ R2 R3( A, R1.B, R2.B, C ) 1 2 5 6 1 2 7 8 1 2 9 10 3 4 5 6 3 4 7 8 3 4 9 10 PRODUTO CARTESIANO: funciona exatamente igual ao produto cartesiano de conjuntos da matemática PORÉM cada elemento é uma LINHA INTEIRA Número de colunas = #colunas em R1 x #colunas em R2 sempre Se tiver duas colunas com nome igual (B) o resultado fica NomeTabela.NomeColuna DCC011 - profa. Mirella M. Moro 8 Álgebra Relacional: Junção Funciona como uma projeção seguido de uma seleção cuja condição é especificada junto ao operador Álgebra Relacional: Junção Natural Sells( bar, beer, price ) Bars( name, addr ) Joe s Bud 2.50 Joe s Maple St. Sue s River Rd. Sue s Coors 3.00 Condição de junção BarInfo Sells Sells.bar = Bars.name Bars BarInfo( bar, beer, price, name, addr ) Joe s Bud 2.50 Joe s Maple St. Joe s Maple St. Sue s River Rd. Sue s Coors 3.00 Sue s River Rd. DCC011 - profa. Mirella M. Moro 9 Sells( bar, beer, price ) Bars( bar, addr ) Joe s Bud 2.50 Joe s Maple St. Sue s River Rd. Sue s Coors 3.00 Condição de junção implícita= conjunção da igualdade de todos os pares de colunas de mesmo nome BarInfo := Sells Bars Note: Bars.name agora é Bars.bar para fazer junção natural BarInfo( bar, beer, price, addr ) Joe s Bud 2.50 Maple St. Joe s Milller 2.75 Maple St. River Rd. Sue s Coors 3.00 River Rd. No resultado: para os pares de colunas de mesmo, apenas uma cópia é considerada DCC011 - profa. Mirella M. Moro 10 1. Divisão Álgebra Relacional 1. Divisão 2. Regras de Precedência 3. Junção: Natural, EquiJoin, OuterJoin, SelfJoin 4. Esquemas resultantes Divisão de duas relações R e S Os valores de um atributo (ou mais) de R que se relacionam com todos os valores de um atributo (ou mais) de S Utilizada para consultas que incluam o termo para todos ou em todos Requer que R tenha mais atributos que S e pelo menos um atributo em comum DCC011 - profa. Mirella M. Moro 12

Divisão: Exemplos Quais pessoas possuem contas bancárias em TODOS os bancos estatais do país? Não se sabe quantos bancos são ou quais são, então não é possível fazer uma condição de seleção primeiro Quais pessoas possuem cartão de fidelidade para TODAS as companhias aéreas brasileiras? Quais estudantes se matricularam em TODAS as disciplinas ofertadas pela profa Mirella? Quais estudantes se matricularam em TODAS as disciplinas de primeiro semestre oferecidas em 20172? Quais meninas se matricularam em TODAS as disciplinas nas quais o príncipe William se matriculou? Quais genomas possuem TODAS as características presentes na proteína X? DCC011 - profa. Mirella M. Moro 13 Outro Exemplo: Liste os códigos dos clientes que já foram atendidos por todos os vendedores. Esquema: Se o cliente foi atendido apenas por um dos vendedores, não entra no resultado. É necessário ter sido atendido por todos os dois. Fonte: Profa. Cristina Ciferri, ICMC/USP São Carlos DCC011 - profa. Mirella M. Moro 14 Exemplos de A B (ou A/B) Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento) DCC011 - profa. Mirella M. Moro 15 AS σ sexo=f (ALUNOS) Matr Nome Sexo Cr 1 A F CC 4 D F MC 7 G F SI 8 H F SI M π Matr,Disc,Sem (MATRICULAS ALUNAS) Matr Disc Sem 1 DCC011 20162 1 DCC851 20162 1 DCC834 20161 4 DCC011 20162 4 DCC851 20162 7 DCC011 20162 7 DCC851 20161 7 DCC834 20171 8 DCC011 20161 8 DCC254 20162 8 DCC234 20171 8 DCC851 20172 Alunas que se matricularam em todos os semestres a. AS M NÃO FUNCIONA (sem denominador comum) b. π Matr,Nome AS π Sem M NÃO FUNCIONA (sem denominador comum) c. π Matr,Sem M π Sem M Retorna Matr de todos os semestres d. π Nome (AS (π Matr,Sem M π Sem M) ) Retorna Nome matriculado em todos semestres Alunas matriculadas nas mesmas disciplinas de 1 a. π Matr,Disc M π Disc σ Matr=1 (M) Agora, no mesmo semestre b. π Matr,Disc M π Disc,Sem σ Matr=1 (M) NÃO FUNCIONA (sem denominador comum) c. π Matr,Disc,Sem M π Disc,Sem σ Matr=1 (M) DCC011 - profa. Mirella M. Moro 16 Divisão: Exemplos R (matr, disc) S (disc) os números de matrícula em R que se relacionam com todos os valores de disciplina em S. O resultado é apenas a coluna matr(pense que na divisão tem disc no numerador e no denominador, então corta ). Traduzindo para expressões algébricas: Esquema: MATRICULAS (matr, disc, sem) ALUNOS (matr, nome, curso) 1.(π matr, disc MATRICULAS) (π disc σ sem=20172 MATRICULAS) número de matrícula dos alunos matriculados em todas as disciplinas oferecidas no semestre de 20172 2.((π matr, disc (MATRICULAS(σ curso=cc ALUNOS))) (π disc σ sem=20172 MATRICULAS) número de matrícula dos alunos da Computação matriculados em todas as disciplinas oferecidas no semestre 20172 DCC011 - profa. Mirella M. Moro 17 2. Regras de Precedência Precedência dos operadores relacionais: 1.[σ, π, ρ] (mais alta) 2.[Χ, ] 3. 4.[, ] DCC011 - profa. Mirella M. Moro 18

3. Junção: Natural, EquiJoin, OuterJoin, SelfJoin Produz uma tabela composta de duas outras que se relacionam A operação de junção deriva da combinação das operações de produto cartesiano e seleção, sendo executadas conjuntamente. Também chamada de Join Junção Natural Conecta duas relações R e S: Conjunção da igualdade de pares de atributos de mesmo nome Projeta uma cópia de cada par dos atributos igualados Notação: R S DCC011 - profa. Mirella M. Moro 19 DCC011 - profa. Mirella M. Moro 20 Junção Natural R S EquiJoin / EquiJunção Junção em que a condição da junção tem a forma R. nome1 = S. nome2 Teste de igualdade em dois campos com nomes diferentes (um campo de cada relação) Notação: R R.nome1=S.nome2 S Resultado: nome1 e nome2 estarão no esquema final DCC011 - profa. Mirella M. Moro 21 DCC011 - profa. Mirella M. Moro 22 OuterJoin / Junção Externa Para junções naturais, apenas as tuplas de R que também estão em S e vice-versa, são selecionadas. OuterJoin: Permite que tuplas forada junção sejam selecionadas com valores nulos para seus atributos 1. Realiza a junção normal entre as duas relações 2. Adiciona as linhas que ficaram de fora (do resultado da junção natural) preenchendo os valores de fora da junção com NULL Notação: R R.nome1=S.nome2 S OuterJoin à esquerda R S OuterJoin natural à direita (condição implícita tal como junção natural) Junção Natural, EquiJoin, OuterJoin T1 T2 T3 A B X 1 B C 1 D C D D a E b G c DCC011 - profa. Mirella M. Moro 23 DCC011 - profa. Mirella M. Moro 24

Junção Natural, EquiJoin, OuterJoin T1 T2 T3 A B X 1 Todas as tuplas de T1 que satisfazem ou não a junção B C 1 D C D D a E b G c Todas as tuplas de T2 que satisfazem ou não a junção Ambos os lados também é possível A B B C X 1 1 D D a b G c DCC011 - profa. Mirella M. Moro 25 SelfJoin Usando Sells(bar, beer, price), encontre os bares que vendem dois tipos diferentes de cerveja a mesmo preço Estratégia: usando renomeação, definir uma cópia de Sells S(bar, beer1, price) S (bar,beer1,price) Sells σ beer<>beer1 (S Sells) A junção natural de Selle S consiste de (bar, beer, beer1, price), tal que o bar vendo as mesmas cervejas a mesmo preço DCC011 - profa. Mirella M. Moro 26 4. Esquemas Resultantes União, intersecção e diferença Os esquemas dos dois operandos devem ser o mesmo, e o resultante é o mesmo também Seleção O esquema resultante é o mesmo do esquema do operando Projeção A lista de atributos informa o esquema Esquemas Resultantes Produto O esquema é formado pelos atributos das duas relações Usa R.A, etc., para distinguir atributos com nome A Join Mesmo que produto Natural join União dos atributos das duas relações Renaming O operador define o esquema DCC011 - profa. Mirella M. Moro 27 DCC011 - profa. Mirella M. Moro 28 Paciente(CodPac,NomePac,DataNascPac) Internação(CodPac,NumeroIntern, DtHBaixa,DtHAlta) CodPac referencia Paciente Leito (NoLeito,CodigoQuarto,TipoLeito) OcupaLeito (CodPac, NumeroIntern, NoLeito, DataHoraInic, DataHoraFim) (CodPac,NumeroIntern) referencia Internação; NoLeito referencia Leito Parto (CodPac, HoraNasc, TipoParto, CodPacMae, NumeroIntern) CodPac referencia Paciente; CodPacMae,NumeroIntern referencia Internação 1.Obter uma tabela com as Datas de Nascimento e as Data/Hora das internações (baixas) dos pacientes de nome José e que ocuparam o leito número 06. 2. Faça uma consulta que retorne uma tabela com os nomes dos pacientes, as respectivas Data/Hora das baixas e números dos leitos ocupados. Se um paciente foi internado mas não precisou usar um leito, seu nome e respectiva Data e Hora da internação devem aparecer na tabela resultante seguido do respectivo campo NoLeito em branco 3. O hospital está sendo processado por troca de bebês na maternidade. O ministério público solicitou uma tabela com duas colunas, onde na primeira aparece o nome dos bebês nascidos no hospital e na Segunda coluna o nome das respectivas mães. Faça uma consulta que retorne essa tabela. 4. Obtenha os códigos de pacientes que foram internados no hospital que nunca foram mães no hospital (nunca tiveram bebês no hospital). 5. Obter os nomes dos pacientes que nunca foram internados. Primeiro de tudo DCC011 - profa. Mirella M. Moro 30

1 Obter uma tabela com as Datas de Nascimento e as Data/Hora das internações (baixas) dos pacientes de nome José e que ocuparam o leito número 06. 2 Faça uma consulta que retorne uma tabela com os nomes dos pacientes, as respectivas Data/Hora das baixas e números dos leitos ocupados. Se um paciente foi internado mas não precisou usar um leito, seu nome e respectiva Data e Hora da internação devem aparecer na tabela resultante seguido do respectivo campo NoLeito em branco DCC011 - profa. Mirella M. Moro 31 DCC011 - profa. Mirella M. Moro 32 3 O hospital está sendo processado por troca de bebês na maternidade. O ministério público solicitou uma tabela com duas colunas, onde na primeira aparece o nome dos bebês nascidos no hospital e na Segunda coluna o nome das respectivas mães. Faça uma consulta que retorne essa tabela. 4 Obtenha os códigos de pacientes que foram internados no hospital que nunca foram mães no hospital (nunca tiveram bebês no hospital). DCC011 - profa. Mirella M. Moro 33 DCC011 - profa. Mirella M. Moro 34 5 Obter os nomes dos pacientes que nunca foram internados. DCC011 - profa. Mirella M. Moro 35