Linguagens relacionais

Slides:



Advertisements
Apresentações semelhantes
Introdução a Lógica Matemática
Advertisements

AULA 5 PGC Sistemas de Banco de Dados Profa. Sandra de Amo
Álgebra Relacional Marcelo Mendes Manaus
Algoritmo I Aula 04 Expressões Lógicas.
Modelo Relacional.
SQL Structured Query Language (continuação)
Evolução dos SGBD’s (2ª Parte).
Lógica Matemática e Computacional 7 – Introdução à Programação Lógica
Prof.: Bruno Rafael de Oliveira Rodrigues
Manipulação algébrica
Modelos de Preferências em Inteligência Artificial CP-Nets
Otimização de Consultas em SQL Parte I - Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 19 Profa. Sandra de Amo Programa.
Cálculo Relacional Datalog não-recursivo
Modelos de Preferências AULA 15 DATA MINING Sandra de Amo.
Algebra relacional nomeada e não-nomeada
Otimização de Consultas em SQL Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 24 Profa. Sandra de Amo GBC053 – BCC
Subconsultas ou Consultas Aninhadas
Márcia Jacyntha Nunes Rodrigues - DIMAP/UFRN
Modelo Relacional parte 1
ÁLGEBRA RELACIONAL Cada operador da álgebra relacional toma uma ou duas relações como sua entrada e gera uma nova relação como saída. São oito os operadores.
Álgebra Relacional – Parte 2
Álgebra Relacional – Parte 3
Métodos Quantitativos
O que você deve saber sobre
FLG Análise Espacial e Geoprocessamento
Lógica para Computação
Linguagem de 1ª ordem da teoria de conjuntos
A Lógica das Sentenças Abertas Profa. Ana Florencia Aula 9
INF 1771 – Inteligência Artificial
Conceitos Básicos.
Unidade 5 – Exploração de uma base de dados em ambiente Windows
Folha de Cálculo Como Dar Nome a Uma ou mais Células?
Capítulo 13 Funções compostas slide 1
Otimização de Consultas em SQL Planos Alternativos AULA 24 Profa. Sandra de Amo GBC053 – BCC
Produto cartesiano Mais parâmetros dos dados Algoritmo
Principais fórmulas de Cálculo
Introdução a Lógica Prof. Luiz Carlos Gabi.
Otimização de Consultas em SQL Planos de Execução
Construção Tabela-verdade
Modelo de Dados Relacional
Cálculo relacional Lílian Simão Oliveira.
Bags n Servem para armazenar a repetição de elementos n Tal qual conjuntos, a ordem dos elementos não importa n Por isso, também recebem a designação de.
Programação e Sistemas de Informação
André Luiz da Costa Carvalho
©Silberschatz, Korth and Sudarshan (Modificado)3.3.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.
A abordagem de banco de dados para gerenciamento de dados
Definições de Esquemas, Restrições básicas e buscas
Planilha Eletrônica - Excel
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
Cálculo Relacional.
©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.
Fundamentos de linguagens de programação
1 24/4/ :29 FMU – 1. Semestre – Tecnologia – Analise e Desenvolvimento de Sistemas Professor: Eduardo Silvestri Aluno:Clóvis de Oliveira- RA
©Silberschatz, Korth and Sudarshan (modificado)4.2.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
AOBD 07/08 Mini-Projecto 2 Soluções. 1) Considere que existem três relações R1=(A,B,C), R2=(C,D) e R3=(D,E) com chaves primárias A, C e D, respectivamente.
Optimização - 1 Optimização de perguntas 1 Processamento de selecções 2 Processamento de junções 3 Manipulação algébrica.
Sumário 1 SQL Embutida 2 Processamento de Consultas
Objetos em Bancos de Dados Relacionais Alcides Calsavara.
Arnaldo Rocha1995 BANCO DE DADOS Modelo Relacional.
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
Prof. Christiano Lima Santos
tópicostópicos itens 01. Terminologia 02. Operações básicas 03. Representação de linguagens 04. Formalização de gramáticas 05. Processo de derivação 06.
UCSal – Bacharelado em Informática
©Silberschatz, Korth and Sudarshan (Modificado)3.2.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.
Colégio da Imaculada Colégio da Imaculada Curso Técnico em Informática
Modelo Relacional, Chaves e Relacionamentos
Tema 1 – Lógica e Teoria dos Conjuntos
Distribuição de freqüências
Modelagem de Dados Aula 3.
Universidade de Passo Fundo Tecnologia em Sistemas de Informação TSI109- Fundamentos de Banco de Dados (Restrições de Integridade) Prof. Alexandre Tagliari.
Transcrição da apresentação:

Linguagens relacionais Notações para expressar perguntas: algébrica – aplicação de operadores a relações lógica (cálculo relacional) – fórmula que os tuplos da resposta devem satisfazer equivalentes em poder expressivo. Limitações: independência física dos dados linguagem só com construções relativas ao modelo de dados (operações sobre relações) que não dependam da implementação não se pode aceitar programas genéricos optimização das perguntas restrição no poder expressivo: sem recursão (incapaz de computar o fecho transitivo) relações finitas complementação proibida

Operações Básicas 1 - Reunião R  S 2 - Diferença R – S é o conjunto dos tuplos que estão em R, em S, ou em ambas R e S da mesma aridade nomes dos atributos a especificar 2 - Diferença R – S tuplos de R que não estão em S

Operações Básicas 3 - Produto cartesiano RS aridades de R e S são k1 e k2  aridade de RS é k1 + k2 contém todos os tuplos tais que os primeiros k1 componentes formam um tuplo de R e os restantes k2 componentes formam um tuplo em S

Operações Básicas 4 - Projecção i1, i2, ..., im(R) para cada tuplo em R existe um tuplo na projecção com os componentes (e pela ordem) indicados pelos ij se aridade de R for k então os ij  1, ..., k e são distintos; aridade da projecção é m números de componentes podem ser substituídos por atributos, se existirem: 1,3 (R) = A,C (R) Projecção escolhe colunas da tabela

Operações Básicas 5 - Selecção F (R) contém os tuplos de R que satisfazem F a fórmula F pode envolver  operandos constantes ou número de componente ( $i )  operadores aritméticos de comparação ( , , , , ,  )  operadores lógicos ( , ,  ) ( e, ou, não ) Números de componentes podem ser substituídos por atributos, se existirem: $2=b(R) = B=b(R) Selecção escolhe linhas da tabela

Operações Compostas 6 - Intersecção R  S contém os tuplos que pertencem a R e a S simultaneamente R e S da mesma aridade R  S = R - (R-S)

Quociente 7 - Quociente R / S / =  = 7 3 2  3 + 1 = 7 1 2 aridade de R é r e de S é s, rs, S contém os (r-s)-tuplos (a1, ..., ar-s) tais que, para todos os s-tuplos (ar-s+1, ..., ar) em S, o tuplo (a1, ..., ar) está em R / =   = 7 3 2  3 + 1 = 7 1 2

Explicação alternativa Forma de proceder à divisão reordenar as colunas de forma a que as últimas correspondam ao quociente ordenar a tabela pelas primeiras colunas cada subtuplo das primeiras colunas pertence ao resultado se o conjunto de subtuplos das últimas colunas que lhe corresponde contiver o quociente / =

Expressão do quociente T = 1, ..., r-s (R) = universo dos tuplos possíveis no resultado W = (TS) - R = todas as linhas T combinadas com S mas que não estão em R, i.e., em que a condição falha V = 1, ..., r-s (W) = tuplos que não interessam R / S = T - V = tuplos que interessam reunindo numa só expressão algébrica R / S= 1, ..., r-s (R) - 1, ..., r-s  1, ..., r-s (R)  S - R

Quais as frases verdadeiras? a – ( R-S )  S = R b – ( R-S )  S  R c – ( R-S )  ( RS ) = R d – ( R-S )  ( S-R ) = ( RS ) - ( RS ) e – ( R/S )  S = R f – ( R/S )  S  R Respostas Erradas - a e e Correctas - b, c, d e f

Junção 8 - -Junção R ⋈ S ij Expressão da -junção se a aridade de R for r e a de S, s a aridade da -junção é r+s contém os tuplos do produto cartesiano de R por S tais que o componente i está na relação  com o componente r+j (i.e., o correspondente ao j em S). Expressão da -junção R ⋈ S= $i  $(r+j) (R  S) se  for =, a operação designa-se equijunção ( 7, 8, 9 ) é um tuplo pendente de R pois não aparece na -junção ij ij R ⋈ S = R ⋈ S 2<1 B<D

Junção natural 9 - Junção natural R ⋈ S só é aplicável se os componentes dos tuplos em R e S forem designados por atributos. a operação implícita na junção natural é a igualdade dos atributos com o mesmo nome. cada par de atributos iguais dá origem a um único atributo, com o mesmo nome, no resultado expressão: R⋈S = i1, ..., im ( R.A1= S.A1.....R.Ak= S.Ak ( R  S )) k é o número de atributos comuns a R (aridade r) e S (aridade s) e m= r+s-k R ⋈ S tuplo pendente 

Junção externa tuplos pendentes, isto é desemparelhados, quer em R quer em S, desaparecem na -junção e na junção natural a junção externa (- ou natural) inclui os tuplos pendentes de R ou S completados a nulos ( 7, 8, 9 ) é um tuplo pendente de R pois não aparece na -junção ( b, b, f ) idem, na junção natural R ⋈ S + R ⋈ S + B<D

Semi-junção 10 - Semi-junção R⋉S projecção nos atributos de R da junção natural de R e S R⋉S = R( R⋈S ) R em R representa os atributos de R (o seu esquema); em R⋈S R representa a relação (a instância) outra expressão: R⋉S = R⋈RS(S) dá os tuplos de R que têm par em S R⋉S

Relações com atributos na junção natural e na semi-junção os atributos são importantes; para os tornar explícitos escreve-se R(A1, ..., An) é possível renomear colunas e fazer junções naturais como: uma junção natural entre duas relações sem atributos comuns redunda num produto cartesiano porque, após este, não há nenhuma selecção a fazer (equivalente a fazer uma selecção com a condição True) R( A,B,C ) ⋈ S( G,H,I ) = R  S S = S(B,C,D) S( E,F,G ) ⋈ S( G,H,I )

Leis algébricas Reunião Produto cartesiano Junção natural  - junção associativa: R  ( S  T ) = ( R  S )  T comutativa: R  S = S  R Produto cartesiano associativo: R  ( S  T ) = ( R  S )  T não comutativo: R  S  S  R Junção natural associativa e comutativa (independência da ordem das colunas devida aos atributos): R ⋈ S = S ⋈ R Por isso ⋈ generaliza facilmente: R = R1 ⋈ ... ⋈ Rn R contém os tuplos  tais que, para 1 i  n,  restringido aos atributos de Ri é um tuplo de Ri  - junção não é comutativa mas é associativa (no caso de os índices serem válidos) R ⋈ ( S ⋈ T ) = ( R ⋈ S ) ⋈ T i 1 j k 2 l i 1 j (r+k) 2 l

Linguagem de Interrogação Álgebra Relacional pode ser usada como linguagem de interrogação à BD P1 - Relativamente à BD “Cursos” (ver p.17), quais os nomes dos professores do 12º grupo? Πnome  grupo = ‘12’ ( Professor )  P2 - Quais os nomes e datas de nascimento dos alunos do curso ‘CG1’ nascidos antes de 1983? Πnome, data_nasc  codcurso = ‘CG1’  data_nasc < 1983-01-01 ( Aluno ) 

Perguntas com junção P3 - Nomes dos alunos inscritos à disciplina 327? nenhuma relação contém nomes de alunos e códigos de disciplina mas a junção Aluno ⋈ Inscrito = R contém: R (bia, nome, morada, telefone, data_nasc, codcurso, ano, letra, coddis, resultado) ( i ) - Πnome  coddis = 327 ( Aluno ⋈ Inscrito )  ( ii ) - Πnome  Aluno ⋈ coddis = 327 ( Inscrito )  esta maneira de ligar informações no modelo de dados dá muita liberdade para exprimir perguntas arbitrárias mas exige uma fase de optimização para executar ( ii ) mesmo que a pergunta seja ( i ) Núcleo da álgebra relacional : Π, , ⋈

Extensões à Álgebra renomeação de atributos R ( A, B, C ) R’( X,Y, Z ) = ΠX = A, Y = B, Z = C  R( A, B, C )  onde não houver ambiguidades, a simples menção dos atributos, em conjunto com o nome da relação, faz a renomeação OU R’ ( X, Y, Z ) = R ( A, B, C ) R’ = ΠX = A, Y = B, Z = C ( R ) expressões aritméticas ( +, -, *, / ) este mecanismo serve para dar nomes a expressões S = ΠW = A * B – C, U = C/B,A ( R ) S ( W, U, A )= ΠA * B – C, C/B, A ( R )

Expressões aritméticas P4 - Obtenha uma relação de inscrições com as classificações inflaccionadas de 20%. Πcoddis, bia, resultado, novo = resultado*1.2 ( Inscrito ) Πcoddis, bia, resultado, novo = resultado + (20-resultado)/10 ( Inscrito ) nos parâmetros da projecção: no membro direito só podem ser usados nomes de atributos do argumento de Π; no esquerdo só pode estar um atributo (novo...)

Agregações Operadores de agregação S = ΠV = CNT (B) ( R ) CNT (contagem), SUM (adição), AVG (média), MAX (máximo), MIN (mínimo) S = ΠV = CNT (B) ( R ) S( V ) tem um único valor, o número de tuplos de R com valor não nulo no atributo B ( CNT (*) conta todas as linhas )  toda a relação agregada T = ΠA, M = MAX (B) ( R ) T ( A, M ) tem tantos pares quantos os valores diferentes de A, sendo indicado para cada A o respectivo valor máximo de B (não nulo ... ); é feita uma partição segundo os atributos de projecção sem operadores de agregação e cada classe é agregada num só tuplo; é possível misturar agregações e aritmética

Perguntas com agregação P5 - Qual o número de inscrições, nota média das inscrições, soma de todas as notas e número de resultados não nulos ? R( NI, M, T, NR ) = ΠCNT(*), AVG( resultado), SUM( resultado ), CNT( resultado) ( Inscrito ) pode ser M  T/NI se houver inscrições ainda sem resultado (valor nulo); tem que ser M = T/ NR Inscrito R

Agregação com partição P6 - Quais as notas mínima, média e máxima de cada disciplina (independentemente do aluno)? R = Πcoddis, MI = MIN( resultado ), ME = AVG(resultado ), MA = MAX(resultado) (Inscrito) Inscrito R

Quantificação existencial P7 - Obtenha os códigos dos alunos com inscrição a pelo menos uma das disciplinas do curso LEEC. ΠBIA (INSCRITO ⋈ CODCURSO= ‘LEEC’ ( PLANO ))

Quantificação universal FEUP/LEEC Sistemas de Informação Quantificação universal P8 - Obtenha o código dos alunos com inscrição a todas as disciplinas do curso LEEC. A = ΠBIA ( ALUNO ) conjunto dos alunos D = ΠCODDIS  CODCURSO= ‘LEEC’ (PLANO) conjunto das disciplinas do curso LEEC AD conjunto de todos os pares (aluno, disciplina da LEEC) NI = AD – ΠBIA, CODDIS ( INSCRITO ) pares (aluno, disciplina da LEEC) tais que o aluno não tem inscrição à disciplina R = A – ΠBIA ( NI ) resultado (notar a dupla subtracção) R = ΠBIA, CODDIS( INSCRITO ) / D Gabriel David