• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
6
0
0

Texto

(1)

DCC011

Introdução a Banco de Dados

Álgebra Relacional

Álgebra Relacional

Mirella M. Moro

Departamento de Ciência da Computação Universidade Federal de Minas Gerais

mirella@dcc.ufmg.br

Programa

• 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 • 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 Autor A, AutorArtigo AA, Artigo R

π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)) OBS: Não pode ser

(πNomeAutorσAnoPublicacao=1998 ^ AnoPublicacao=1999 (Autor ⋈ AutorArtigo ⋈ Artigo))

POR QUÊ?!?!?!?!?!?!?

DCC011 - profa. Mirella M. Moro 3

REVISÃO operadores básicos da

REVISÃO operadores básicos da

álgebra relacional

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 • 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 !

σ

mantém

as colunas

Álgebra Relacional: Seleção

Relation Sells:

bar beer price

Joe’s Bud 2.50

Joe’s Miller 2.75

Sue’s Bud 2.50

Sue’s Miller 3.00 Sue’s Miller 3.00

JoeMenu

σ

bar=“Joe’s”(Sells):

bar beer price

Joe’s Bud 2.50 Joe’s Miller 2.75

σ

seleciona

linhas de

acordo

com condição

(2)

Álgebra Relacional: Projeção

Relation Sells:

bar beer price

Joe’s Bud 2.50 Joe’s Miller 2.75 Sue’s Bud 2.50 Sue’s Miller 3.00 MUITO MUITO MUITO MUITO IMPORTANTE IMPORTANTE IMPORTANTE IMPORTANTE ÁLGEBRA ÁLGEBRA ÁLGEBRA ÁLGEBRA ELIMINA ELIMINA ELIMINA ELIMINA DUPLICATAS DUPLICATAS DUPLICATAS DUPLICATAS

π mantém

colunas

conforme

definido

DCC011 - profa. Mirella M. Moro 7

Adaptado de Jeff Ullman – CS145, aut07 Sue’s Miller 3.00

Prices

π

beer,price(Sells):

beer price

Bud 2.50

Miller 2.75 Miller 3.00

Álgebra Relacional: Prod. Cartesiano

R1( A, B ) 1 2 3 4 R2( B, C ) 5 6 R3( A, R1.B, R2.B, C ) 1 2 5 6 1 2 7 8 1 2 9 10 3 4 5 6

R3

R1 Χ R2

DCC011 - profa. Mirella M. Moro 8

Adaptado de Jeff Ullman – CS145, aut07

5 6 7 8 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

Álgebra Relacional: Junção

Sells( bar, beer, price ) Bars( name, addr )

Joe’s Bud 2.50 Joe’s Maple St. Joe’s Miller 2.75 Sue’s River Rd. Sue’s Bud 2.50

Sue’s Coors 3.00

Funciona como uma projeção seguido de uma seleção cuja condição é especificada junto ao operador

Condição de junção

DCC011 - profa. Mirella M. Moro 9

Adaptado de Jeff Ullman – CS145, aut07 BarInfo Sells

Sells.bar = Bars.nameBars

BarInfo( bar, beer, price, name, addr )

Joe’s Bud 2.50 Joe’s Maple St. Joe’s Miller 2.75 Joe’s Maple St. Sue’s Bud 2.50 Sue’s River Rd. Sue’s Coors 3.00 Sue’s River Rd.

Condição de junção

Álgebra Relacional: Junção Natural

Sells( bar, beer, price ) Bars( bar, addr )

Joe’s Bud 2.50 Joe’s Maple St. Joe’s Miller 2.75 Sue’s River Rd. Sue’s Bud 2.50

Sue’s Coors 3.00 BarInfo := Sells

Bars

Condição de junção implícita = conjunção da igualdade de todos os pares de colunas de mesmo nome

DCC011 - profa. Mirella M. Moro 10

Adaptado de Jeff Ullman – CS145, aut07 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. Sue’s Bud 2.50 River Rd. Sue’s Coors 3.00 River Rd.

de todos os pares de colunas de mesmo nome

No resultado: para os pares de colunas de mesmo, apenas uma cópia é considerada

Álgebra Relacional

Álgebra Relacional

1. Divisão

2. Regras de Precedência

3. Junção: Natural, EquiJoin, OuterJoin, SelfJoin 4. Esquemas resultantes

1. Divisão

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

• 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

(3)

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 • 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:

DCC011 - profa. Mirella M. Moro 14 Fonte: Profa. Cristina Ciferri, ICMC/USP São Carlos

Se o cliente foi atendido apenas por um dos vendedores, não entra no resultado. É necessário ter sido atendido por todos os dois.

Exemplos de A ÷ B (ou A/B)

DCC011 - profa. Mirella M. Moro 15 Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento)

AS σσσσsexo=F(ALUNOS)

Matr Nome Sexo Cr

1 A F CC

4 D F MC

7 G F SI

8 H F SI

Matr Disc Sem

1 DCC011 20162 M ππππMatr,Disc,Sem (MATRICULAS ALUNAS)

Alunas que se matricularam em todos os semestres a. AS ÷÷÷÷M

NÃO FUNCIONA (sem denominador comum)

b. ππππMatr,NomeAS ÷÷÷÷ ππππSemM

NÃO FUNCIONA (sem denominador comum)

c. ππππMatr,SemM ÷÷÷÷ ππππSemM

Retorna Matr de todos os semestres

d. ππππNome (AS (ππππMatr,SemM ÷÷÷÷ ππππSemM) )

Retorna Nome matriculado em todos semestres

Alunas matriculadas nas mesmas disciplinas de “1”

DCC011 - profa. Mirella M. Moro 16

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 matriculadas nas mesmas disciplinas de “1” a. ππππMatr,DiscM ÷÷÷÷ ππππDiscσσσσMatr=1 (M)

Agora, no mesmo semestre b. ππππMatr,DiscM ÷÷÷÷ ππππDisc,SemσσσσMatr=1 (M)

NÃO FUNCIONA (sem denominador comum)

c. ππππMatr,Disc,SemM ÷÷÷÷ ππππDisc,SemσσσσMatr=1 (M)

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) Esquema: MATRICULAS (matr, disc, sem) ALUNOS (matr, nome, curso)

1.(πmatr, discMATRICULAS) ÷ (πdiscσsem=20172MATRICULAS) número

de matrícula dos alunos matriculados em todas as disciplinas oferecidas no semestre de 20172

2.((πmatr, disc(MATRICULAS (σcurso=CCALUNOS))) ÷

discσsem=20172MATRICULAS) número de matrícula

dos alunos da Computação matriculados em todas as

2. Regras de Precedência

• Precedência dos operadores relacionais:

1.[σ, π, ρ] (mais alta)

2.[

Χ

, ⋈]

3.∩

4.[∪, —]

4.[∪, —]

(4)

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”

• Também chamada de “Join”

DCC011 - profa. Mirella M. Moro 19

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

• Notação: R ⋈ S

DCC011 - profa. Mirella M. Moro 20

Junção Natural

R ⋈ S

DCC011 - profa. Mirella M. Moro 21

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

• Notação: R ⋈

R.nome1=S.nome2

S

• Resultado: nome1 e nome2 estarão no esquema

final

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 fora da 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 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)

DCC011 - profa. Mirella M. Moro 23

Junção Natural, EquiJoin, OuterJoin

A B X 1 Y 2 Z 3 B C 1 D 5 E 6 F C D D a E b G c T1 T2 T3

(5)

Junção Natural, EquiJoin, OuterJoin

A B X 1 Y 2 Z 3 B C 1 D 5 E 6 F C D D a E b G c T1 T2 T3 A B C X 1 D A B B C X 1 1 D

DCC011 - profa. Mirella M. Moro 25

A B C X 1 D Y 2 Z 3 A B C X 1 D 5 E 6 F A B C X 1 D Y 2 Z 3 5 E 6 F A B C D X 1 D a Y 2 Z 3 5 E b 6 F G c Todas as tuplas de T1 que satisfazem ou não a junção Todas as tuplas de T2 que satisfazem

ou não a junção Ambos os lados também é possível

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

S (bar,beer1,price)

Sells

σ

beer<>beer1

(S Sells)

A junção natural de Sell e 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

Adaptado de Jeff Ullman – CS145, aut07

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

operando

• Projeção

• A lista de atributos informa o esquema

DCC011 - profa. Mirella M. Moro 27

Adaptado de Jeff Ullman – CS145, aut07

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

• Natural join

• União dos atributos das duas relações

• Renaming

• O operador define o esquema

DCC011 - profa. Mirella M. Moro 28

Adaptado de Jeff Ullman – CS145, aut07

Paciente PacientePaciente

Paciente (CodPac,NomePac,DataNascPac) Internação

InternaçãoInternação

Internação (CodPac,NumeroIntern, DtHBaixa,DtHAlta) CodPac referencia Paciente Leito

Leito Leito

Leito (NoLeito,CodigoQuarto,TipoLeito) OcupaLeito

OcupaLeito OcupaLeito

OcupaLeito (CodPac, NumeroIntern, NoLeito, DataHoraInic, DataHoraFim) (CodPac,NumeroIntern) referencia Internação; NoLeito referencia Leito Parto

Parto Parto

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 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).

Primeiro de tudo

P ← Paciente

I ← Internação

L ← Leito

O ←OcupaLeito

O ←OcupaLeito

A ← Parto

(6)

1

1

1

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.

DCC011 - profa. Mirella M. Moro 31

P ← Paciente I ← Internação L ← Leito O ←OcupaLeito A ← Parto

2

2

2

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 32

P ← Paciente I ← Internação L ← Leito O ←OcupaLeito A ← Parto

3

3

3

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.

DCC011 - profa. Mirella M. Moro 33

P ← Paciente I ← Internação L ← Leito O ←OcupaLeito A ← Parto

4

4

4

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 34

P ← Paciente I ← Internação L ← Leito O ←OcupaLeito A ← Parto

5

5

5

5 Obter os nomes dos pacientes que nunca foram internados.

DCC011 - profa. Mirella M. Moro 35

P ← Paciente I ← Internação L ← Leito O ←OcupaLeito A ← Parto

Referências

Documentos relacionados

O capítulo 4 foi reservado para a análise de questões referentes à Estatística presentes no Exame Nacional do Ensino Médio (ENEM) no período de 2015 a 2018. A análise

Banco de dados, Álgebra Relacional, SQL, Compilador, Projeção, Seleção, Produto Cartesiano, Junção, União, Interseção, Diferença, Inclusão, Exclusão, Divisão.. 1

Caso exista, as tuplas s˜ao combinadas para a formac¸˜ao de uma ´unica tupla com os valores dos atributos das duas relac¸˜oes, caso contr´ario ´e criada uma tupla com os valores

Disponibilizar um editor gráfico para construção de árvores de expressões algébricas.. Fazer a conversão das árvores de expressões algébricas em

A enxertia proporcionou aumentos da matéria seca da parte aérea (MSPA), e total (MST) das combinações H514/Apoatã e H514/M.Novo, mas acarretou decréscimos nas combinações

tabela.nome_colula. Optou-se então por construir um template que expressa um comando SQL, e com o auxílio de uma pilha o mesmo é preenchido durante a visitação da

2) Buscar o nome e o endereço dos pacientes que não residem na Rua I.. 3) Mostre todos os médicos que não preencheram a data

Embora a equação mínima em soma de produtos apresente menor número de operações Booleanas que a representação na forma canônica, as vezes pode ser possível reduzir-se ainda mais