• Nenhum resultado encontrado

ROTEIRO. Operações da Álgebra Relacional Operadores Binários da Álgebra Relacional Produto Cartesiano

N/A
N/A
Protected

Academic year: 2021

Share "ROTEIRO. Operações da Álgebra Relacional Operadores Binários da Álgebra Relacional Produto Cartesiano"

Copied!
37
0
0

Texto

(1)

BANCO DE DADOS

Universidade do Estado de Santa Catarina Centro de Ciências Tecnológicas

Departamento de Ciência da Computação Prof. Alexandre Veloso de Matos

alexandre.matos@udesc.br

(2)

ROTEIRO

Operações da Álgebra Relacional

Operadores Binários da Álgebra Relacional

Produto Cartesiano

Operadores Especiais da Álgebra Relacional

Atribuição

Introdução a SQL [Parte 2]

(3)

ÁLGEBRA RELACIONAL

Operações que permitem ao usuário especificar solicitações de recuperação de dados, cujo resultado será uma nova relação.

Uma sequência de operações que utilizem operadores algébricos forma

uma expressão de álgebra relacional.

(4)

OPERAÇÕES DA ÁLGEBRA RELACIONAL

Operações da AR desenvolvidas especificamente para os bancos de dados relacionais:

Seleção.

Projeção.

Produto Cartesiano.

Junção.

Renomear.

União.

...

(5)

OPERADORES NA ÁLGEBRA RELACIONAL

Classificação dos operadores:

Fundamentais:

Unários: seleção, projeção;

Binários: produto cartesiano, união e diferença.

Derivados:

Binários: intersecção, junção e divisão.

Especiais

Renomeação (unário) e atribuição Operador de alteração (unário)

(6)

PRODUTO CARTESIANO

Retorna todas as combinações de tuplas de duas relações R

1

e R

2

; Grau do resultado (número de colunas):

grau(R

1

) + grau(R

2

)

Cardinalidade do resultado (número de linhas):

cardinalidade(R

1

) * cardinalidade(R

2

)

Notação: relação 1 Χ relação 2

(7)

EXEMPLO

Exemplo:

x y z

1 1 1

2 2 2

3 3 3

w y

1 1

2 2

R1 R2

2

1 R

R Χ

x R1.y z w R2.y

1 1 1 1 1

1 1 1 2 2

2 2 2 1 1

2 2 2 2 2

3 3 3 1 1

3 3 3 2 2

2

1 R

R Χ

(8)

MAPEAMENTO PARA SQL

π a1, ..., an ( σ c (tab 1 X ... X tab m ))

SELECT a

1

, ..., a

n

FROM tab

1

, ..., tab

m

WHERE c

(9)

EXEMPLOS

Considerando as seguintes tabelas:

Medico(#cdMedico, nmMedico, dtAdm, dtNasc, deEspecializacao) Convenio(#cdConvenio, deRazaoSocial, nuTelefone, deEndereco)

Paciente(#cdPaciente, nmPaciente, deEndPaciente, deTelPaciente, dtNasc, &cdPlanoSaude)

Consulta(#cdConsulta, &cdMedico, &cdPaciente, deConsulta, dtConsulta, hrConsulta, deMedicacao, deDiagnostico, nuValor)

Medico_Convenio(#&cdMedico, #&cdConvenio) Laboratorio(#cdLabo, deLabo)

Plano_Saude(#cdPlanoSaude, dePlanoSaude)

Onde: “cd” – código, “dt” – data, “de” – descrição, “hr” – hora, “nm” – nome, “nu” - número

(10)

EXEMPLOS

Álgebra SQL

(paciente X consulta)

SELECT * FROM paciente, consulta

π

nmPaciente, dtConsulta

(

σ

hrConsulta > “12:00”

(paciente X consulta) )

paciente.cdPaciente=consulta.cdPaciente

SELECT nmPaciente, dtConsulta FROM paciente, consulta

WHERE hrConsulta > “12:00”

AND paciente.cdPaciente = consulta.cdPaciente

π

m2.nmMedico

(

σ

m1.nmMedico = “Joao” m1.deEspecializacao = m2.especializacao

(( ρ

m1

(medico)) X ( ρ

m2

(medico))))

SELECT m2.nmMedico

FROM medico m1, medico m2 WHERE m1.nmMedico = “João”

AND m1.deEspecializacao = m2.especializacao

(11)

ATRIBUIÇÃO

Armazena o resultado de uma expressão algébrica em uma variável de relação;

Permite o processamento de uma consulta por etapas.

Notação: A

g l b é i r a c x e

r p s e ã s o l e o n

e m a V i r v á

(12)

EXEMPLO

Exemplo: Produto cartesiano de médicos e consultas

)

,dtConsulta

( Consulta

cdMedico

π

R ←

1

)

,nmMedico

( Medico

cdMedico

π

R ←

2

)) 2 1

(

(

1. 2.

,dtConsulta R cdMedico R cdMedico

R R

nmMedico

Χ

← π σ

=

e r

p s

(13)

INTRODUÇÃO A SQL

[PARTE 2]

(14)

SQL: CONSULTAS BÁSICAS

Consultar dados de uma tabela:

SELECT lista_atributos FROM tabela

[WHERE condição]

Exemplos:

SELECT * FROM paciente;

SELECT nmPaciente, dtNasc FROM paciente

WHERE cdPlanoSaude = 1;

(15)

SQL: SELECT

Facilidades para projeção de informações:

Não há eliminação de duplicatas no SELECT;

Retorno de valores calculados:

Uso de operadores aritméticos (+,-,*,/).

(16)

SQL: SELECT

Facilidades para projeção de informações:

Invocação de funções de agregação

COUNT: contador de ocorrências [de um atributo];

MAX / MIN: valores máximo / mínimo de um atributo;

SUM: somador de valores de um atributo;

AVG: média de valores de um atributo.

(17)

SQL: SELECT

Eliminação de duplicatas:

SELECT [DISTINCT] lista_atributos ...

Exemplo:

Buscar as especializações dos médicos

SELECT DISTINCT deEspecializacao

FROM medico

(18)

SQL: SELECT

Retorno de valores calculados, exemplos:

Qual o salário líquido dos médicos (desc. 10%)?

SELECT cdMedico,nuSalario – (nuSalario * 0.1) AS liquido

FROM medico

(19)

SQL: SELECT

Função COUNT, exemplos:

Informar o total de médicos geriatras:

SELECT COUNT(*) AS total_geriatras FROM medico

WHERE deEspecializacao = “Geriatra”

Quantos pacientes tem plano de saúde:

SELECT COUNT(cdPlanoSaude) FROM paciente

não conta nulos

(20)

SQL: SELECT

Função SUM, exemplo:

Informar o valor total das consultas do médico 1:

SELECT SUM(nuValor) FROM consulta

WHERE cdMedico = 1;

(21)

SQL: SELECT

Função AVG, exemplo:

Informar o valor médio das consultas dos médicos:

SELECT AVG(nuValor)

FROM consulta

(22)

SQL: SELECT

Função MAX/MIN, exemplo:

Informar o menor e o maior valor de consulta:

SELECT MIN(nuValor) AS minimo,

MAX(nuValor) AS maximo

FROM consulta

(23)

SQL: SELECT

Funções de Agregação com DISTINCT:

Valores duplicados não são computados;

Exemplos:

SELECT COUNT(DISTINCT cdGerente) FROM funcionario

SELECT AVG(DISTINCT nuValor)

FROM consulta

(24)

SQL: CLÁUSULA WHERE

Facilidades para seleção de dados:

Busca por padrões:

Cláusula [NOT] LIKE

Teste de existência de valores nulos:

Cláusula IS [NOT] NULL

Busca por intervalos de valores:

Cláusula [NOT] BETWEEN valor1 AND valor2

Teste de pertinência elemento-conjunto:

Cláusula [NOT] IN

(25)

SQL: CLÁUSULA WHERE

Busca por padrões:

where atributo like “padrão”

% : casa com qualquer cadeia de caracteres

‘_’ : casa com um único caractere

Exemplo:

Buscar nome e data de nascimento dos médicos com inicial M:

SELECT nmMedico, dtNasc FROM medico

WHERE nmMedico LIKE ‘M%’

(26)

SQL: CLÁUSULA WHERE

Exemplo:

Buscar nomes e endereço de pacientes cujo endereço termine com ‘H’ ou ‘B’:

SELECT nmPaciente, deEndPaciente FROM paciente

WHERE deEndPaciente LIKE “%H”

OR deEndPaciente LIKE “%B”

Observações:

Não é possível testar padrões em atributos DATETIME.

(27)

SQL: CLÁUSULA WHERE

Teste de valores nulos, exemplo:

Buscar nome dos pacientes que não possuem plano de saúde:

SELECT nmPaciente FROM paciente

WHERE cdPlanoSaude IS NULL

(28)

SQL: CLÁUSULA WHERE

Busca por intervalos de valores, exemplo:

Buscar as consultas com datas entre os anos de 2005 e 2006:

SELECT *

FROM consulta

WHERE dtConsulta BETWEEN “2005-01-01”

AND “2006-12-31”

(29)

SQL: CLÁUSULA WHERE

Teste de pertinência elemento-conjunto:

Exemplo:

Buscar os dados dos pacientes que moram na “Rua I” e que tenham plano de sáude com código 1 ou 2.

SELECT *

FROM paciente

WHERE deEndPaciente = “Rua I”

AND cdPlanoSaude IN(1,2)

(30)

EXERCÍCIOS DE SQL

1) Crie um BD com nome clinica.

2) Crie as seguintes tabelas neste BD:

Medico(#cdMedico, nmMedico, dtAdm, dtNasc, deEspecializacao) Convenio(#cdConvenio, deRazaoSocial, nuTelefone, deEndereco)

Paciente(#cdPaciente, nmPaciente, deEndPaciente, deTelPaciente, dtNasc,

&cdPlanoSaude)

Consulta(#cdConsulta, &cdMedico, &cdPaciente, deConsulta, dtConsulta, hrConsulta, deMedicacao, deDiagnostico, nuValor)

Medico_Convenio(#&cdMedico, #&cdConvenio) Laboratorio(#cdLabo, deLabo)

Plano_Saude(#cdPlanoSaude, dePlanoSaude)

(31)

EXERCÍCIOS DE SQL – DICIONÁRIO DE DADOS

Atributo Domínio Tamanho Restrição

cdMedico Numérico Não Nulo

Chave Primária

nmMedico Texto 50 Não Nulo

dtAdm Data Não Nulo

dtNasc Data

deEspecialização Texto 50 Não Nulo

Médico

Atributo Domínio Tamanho Restrição

cdConvenio Numérico Não Nulo

Chave Primária

deRazaoSocial Texto 30 Não Nulo

nuTelefone Texto 12 Não Nulo

deEndereco Texto 100 Não Nulo

Convênio

(32)

EXERCÍCIOS DE SQL – DICIONÁRIO DE DADOS

Atributo Domínio Tamanho Restrição

cdPaciente Numérico Não Nulo

Chave Primária

nmPaciente Texto 50 Não Nulo

deEndPaciente Texto 50 Não Nulo

deTelPaciente Texto 10 Não Nulo

dtNascimento Data Não Nulo

cdPlanoSaude Numérico Não Nulo

Paciente

(33)

EXERCÍCIOS DE SQL – DICIONÁRIO DE DADOS

Atributo Domínio Tamanho Restrição

cdConsulta Numérico Não Nulo

Chave Primária Auto Incrementado

cdMedico Numérico Não Nulo

cdPaciente Numérico Não Nulo

deConsulta Texto 50 Não Nulo

dtConsulta Data

hrConsulta Horario

deMedicação Texto 100

deDiagnostico Texto 200

nuValor Numérico 10,2

Consulta

(34)

EXERCÍCIOS DE SQL – DICIONÁRIO DE DADOS

Atributo Domínio Tamanho Restrição

cdMedico Numérico Não Nulo

Chave Primária

cdConvenio Numérico Não Nulo

Chave Primária

Médico_Convenio

Atributo Domínio Tamanho Restrição

cdLabo Numérico Não Nulo

Chave Primária

deLabo Texto 50 Não Nulo

Laboratorio

Atributo Domínio Tamanho Restrição

cdPlanoSaude Numérico Não Nulo

Chave Primária

dePlanoSaude Texto 50 Não Nulo

Plano_Saude

(35)

EXERCÍCIOS DE SQL

Popule as tabelas, conforme os seguintes dados:

cdMedico nmMedico dtAdm dtNasc deEspecializacao

1 Pedro Antônio 10/10/1999 09/09/1955 Cirurgião Plástico

2 Maria da Luz 12/01/1987 01/01/1945 Ginecologista

3 Antonia Menezes 10/12/1979 29/05/1935 Geriatra

Medico

cdPlanoSaude dePlanoSaude

1 PlanoSaude 1

2 PlanoSaude 2

3 PlanoSaude 3

Plano_Saude

cdConvenio deRazaoSocial nuTelefone deEndereco cdLabo

1 Sul América Seguros 34556778 Rua H 1

2 Unimed Seguros 34545645 Rua B 2

3 Bradesco Seguros 45324524 Rua Y 3

Convenio

cdPaciente nmPaciente deEndPaciente deTelPaciente dtNasc cdPlanoSaude

1 José Santos Rua H 32223333 11/11/2000 NULL

2 Marcos Freitas Rua B 32224444 22/10/1956 1

3 Alberta Daltro Rua I 32225555 01/03/1999 NULL

4 Antonio dos

Santos

Rua I NULL NULL 2

Paciente

cdMedico cdConvenio

1 1

2 2

3 2

1 3

1 2

Medico_Convenio

cdLabo deLabo 1 Laboratório 1 2 Laboratório 2 3 Laboratório 3

Laboratorio

(36)

EXERCÍCIOS DE SQL

cdConsulta cdMedico cdPaciente deConsulta dtConsulta hrConsulta deMedicacao deDiagnostico nuValor

1 1 1 Consulta Básica 11/11/2005 14:00 Loratadina Inflamação na

garganta

143

2 2 3 Consulta

Especialista

01/10/1997 16:00 AAS Gripe 255

3 3 2 Consulta

Especialista

21/12/2006 13:00 Tylenol Febre 156

4 1 1 Consulta

Especialista

01/10/2007 15:00 Veroxitatina Amidalite 103

5 1 2 Consulta Básica 21/12/1965 13:00 Tylenol Febre 83

6 2 1 Consulta Básica 12/03/1998 16:00 Novalgina Febre 115

7 1 1 Consulta Básica 15/07/2011 15:00 150

8 2 1 Consulta Básica 18/03/2011 20:00 230

9 3 2 Consulta

Especialista

13/05/2011 19:30 100

10 1 3 Consulta Básica 20/07/2011 17:00 200

11 1 2 Consulta Básica 20/07/2011 18:00 300

Consulta

(37)

EXERCÍCIOS DE FIXAÇÃO - SQL

1) Selecione as consultas que tenham valor superior a 100,00 reais.

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 de nascimento.

4) Buscar o nome dos médicos que têm consulta marcada e as datas das suas consultas.

5) Qual o total de convênios que cada médico atende?

6) Buscar os códigos dos pacientes que tiveram como indicação de medicação Tylenol, Veroxitatina ou AAS.

Envie os scripts SQL das consultas (até 06/05) para alexandre.matos@udesc.br

Referências

Documentos relacionados

de software, Qualidade de software; Banco de dados relacional: Modelo de dados relacional: conceitos, álgebra de relações, dependência funcional e formas normais.. Sistema

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

No que se refere ao cometimento de crimes, o espaço de fronteira por sua vez não incide apenas na questão da possibilidade de fuga e impunidade de um criminoso,

UNIP – SBD – Álgebra Relacional – Prof.Antonio A.Palladino Notamos que como nossa operação é um produto cartesiano temos como resultado o produto das linhas das duas tabelas,

Para ilustrar isso, vamos revisitar uma consulta apresentada no capítulo 3, na álgebra relacional, cujo objetivo era produzir a lista de disciplinas cursadas por todos os alunos

Para obter os alunos que não têm inscrições basta fazer a diferença entre o conjunto completo de alunos e o conjunto de alunos que têm alguma inscrição.. Ou seja, se retirarmos do

• A Álgebra Relacional é coleção de operações utilizadas para manipular relações;.. • Essas operações são

Uma vez definida a sequenciação e a decomposição das operações constituintes do modelo lógico apresentado para um processo de ETL, torna-se essencial prosseguir para