Modelo Relacional Álgebra Relacional

Documentos relacionados
Introdução a Banco de Dados

Álgebra Relacional. Linguagens de consultas relacionais

Aula 2 BD Introdução. Profa. Elaine Faria UFU

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

Conceitos de Sistemas de Banco de Dados INE 5323

O Modelo e a Álgebra Relacional

Banco de Dados - Conceitos. Baseado no material da Profa. Vania Bogorny (UFSC)

DDL). O resultado da compilação dos parâmetros DDLs é

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Banco de Dados Relacional

Sistemas da Informação. Banco de Dados I. Edson Thizon

Curso: Banco de Dados I. Conceitos Iniciais

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

ara entender os Sistemas Gerenciadores de Banco de Dados é importante conhecer

Conceitos Básicos Sistemas de banco de dados; Sistemas de gerência de banco de dados.

Aula 9 BD 1 SQL Parte 1. Profa. Elaine Faria UFU

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

LINGUAGEM, TIPOS DE USUÁRIOS DE SGBD E MODELOS DE DADOS

Banco de Dados. SGBDs. Professor: Charles Leite

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

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 2. Prof. Leonardo Vasconcelos

Universidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados. Aula 1 Introdução a Banco de Dados

Aula 01 Revisão Geral Banco de Dados I Conceito de Banco de Dados e SGBD

Prof. Fabiano Taguchi

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

Modelagem Conceitos e arquitetura do SBD; Modelo de dados entidade-relacionamento modelo ER; Modelo de dados relacional; Mapeamento ER para o

Banco de Dados. Aula 2 - Prof. Bruno Moreno 19/08/2011

Banco de Dados. Banco de Dados II. Característica fundamental de SGBDs. Abordagem SGBD x Processamento de Arquivos Tradicional

UTFPR - Universidade Tecnológica Federal do Paraná. Processamento e otimização de consultas

ÁLGEBRA E CÁLCULO RELACIONAL

Resolução dos exercícios da lista BD01

Aula 01 Conceito de Banco de Dados e SGBD

INE 5423 Banco de Dados I

BANCO DE DADOS. Araújo Lima. Jan / Araújo

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

Introdução a B anco de Dados. INE5206 Introdução à Informática INE/CTC/UFSC Prof. Roberto Willrich

Rápida revisão do Modelo Relacional

Korth Silberschatz Sundarshan. Sistema de Banco de Dados, 5/E

Introdução ao Banco de Dados. Banco de Dados

MODELAGEM DE DADOS UNIDADE 1 Visão Geral. Luiz Leão

Introdução à Banco de Dados

Banco de Dados e Aplicações em Negócios: Introdução.

Banco de Dados. Introdução e Definições

Universidade Veiga de Almeida

Introdução. O que é um Banco de Dados (BD)?

2. Conceitos e Arquiteturas de um SGBD

Introdução a Bancos de Dados

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

PLANO DE ENSINO. PRÉ-REQUISITO: Modelagem e Programação Orientada a Objetos. PROFESSORA RESPONSÁVEL: Roberta Macêdo Marques Gouveia

Parte SISTEMAS DE GERÊNCIA DE BANCO DE DADOS 2.1 CARACTERÍSTICAS DE UM BANCO DE DADOS

Introdução. Bases de Dados (CC2005) Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto

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

Prof. Marcelo Machado Cunha

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

Sistema Gestor de Bancos de Dados (SGBD)

O Modelo Relacional. Criando relações em SQL

BCD29008 Banco de dados

BCD29008 Banco de dados

Arquiteturas para SGBD. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

MATA60 BANCO DE DADOS Aula 2- Sistema Gerenciador de Banco de Dados. Prof. Daniela Barreiro Claro

Sistemas de Banco de Dados

O Modelo Relacional. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento)

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

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

Faculdade Ieducare 4º Semestre Sistemas de Informação Professor: Rhyan Ximenes

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

Sistema de Banco de Dados. UNIDADE 1 Introdução aos Sistemas de Bancos de Dados Professor: Armando Hage

INE 5423 Banco de Dados I

Bancos de Dados Distribuídos

Adriano Maranhão PROFISSIONAIS E ATIVIDADES ENVOLVIDAS EM UM SGBD

Livro texto: Capítulo 1

Bacharelado em Ciência da Computação UFU Disciplina GBC053 Gerência de Banco de Dados Profa. Sandra de Amo

Arquitetura dos SBDs Características e Benefícios Visão Geral de Projeto de BD MER: Entidades e Atributos Atividade.

1. Conceitos de Bancos de Dados

modelo introduzido por E. F. Codd Meados da década de 70: protótipos. INGRES (UC Berkeley, 73 77) System R (IBM Research at San Jose, 74 78)

Introdução a Banco de Dados Prof. Msc Denival A. dos Santos

Banco de Dados. Professor: Marcelo Machado Cunha IFS Campus Aracaju

Prof.: Clayton Maciel Costa

Arquitetura Genérica do SGBDD

Banco de Dados. Introdução. Profa. Flávia Cristina Bernardini

Banco de dados. Objetivo: Reter os dados de forma que possam ser utilizados em outros momentos

Banco de dados. Objetivo: Reter os dados de forma que possam ser utilizados em outros momentos

Transcrição:

Modelo Relacional Álgebra Relacional Aulas 1 e 2 12/11/2012 e 13/11/2012 Material original: Raghu Ramakrishnan Tradução : Mario Nascimento University of Alberta (Canada) Alguns slides de autoria de Sandra de Amo foram inseridos no material original traduzido.

O que é SGBD? Uma grande coleção integrada de dados. Modelos do mundo real (enterprise) Entidades ( ex. estudantes, cursos) Relacionamentos (ex., Madonna está tendo CS564) Um Sistema de Gerenciamento de Banco de Dados (SGBD) é um pacote de software designado para guardar e gerenciar banco de dados. 4

Porque usar um SGBD? Acesso independente e eficiente a dados. Redução no tempo de desenvolvimento da aplicação. Integridade e segurança dos dados. Administração uniforme dos dados. Acesso concorrente, recuperação de crashes. 5

Porque estudar Banco de Dados? Mudança da computação para a informação. Em uma ponta: webspace (confuso!) Na outra ponta: aplicações científicas Conjuntos de dados aumentando em diversividade e volume.. Bibliotecas digitais, videos interativos, Projeto de Genoma Humano, projeto EOS,... Necessidade de SGBD cada vez maior SGBD permeia a maior parte da Computação. SOs, linguagens, teoria, IA, multimidia... 6

Usuários leigos (clientes, agentes de viagens) Formulários Internet Front Ends de Aplicações Usuários especializados Interface SQL COMANDO SQL Executor de planos Cálculo dos operadores Parser Otimizador Processador de Consultas Gerenciador de Transações Gerenciador de Lock Controle Concorrência Métodos de Acesso Gerenciador de Buffer Gerenciador de Espaço em Disco Gerenciador de Recuperação De Falhas Arq. de indices Arq. Dados Catálogo Banco de Dados

Modelos de Dados Um modelo de dados é uma coleção de conceitos para descrever dados. Um esquema é uma descrição de uma coleção particular de dados, usando algum modelo de dados. O modelo de dado relacional é o modelo mais usado hoje. Principal conceito: relação, basicamente uma tabela com linhas e colunas. Toda relação tem um esquema, que descreve as colunas, ou campos. 7

Níveis de Abstrações Muitas visões simples, esquema conceitual (lógico)e esquema físico. Visões descreve como usuários vêem o dado. Esquema conceitual define estrutura lógica. Esquema físico descreve o arquivo e indices usados. Visão 1... Visão N Esquema Conceitual Esquema Físico Esquemas são definidos usando uma DDL; Dados são modificados / consultados usando uma DML. 8

Ex.: Banco de Dados de uma Escola Esquema conceitual: Students(sid: string, name: string, login: string, age: integer, gpa:real) Courses(cid: string, cname:string, credits:integer) Enrolled(sid:string, cid:string, grade:string) Esquema Físico: Relações guardadas como arquivos desordenados. Índices na primeira colunas de estudantes. Esquema externo (Visão): Course_info(cid:string,enrollment:integer) 9

Independência dos Dados Uma das maiores vantagens de um SBBD Os 3 níveis de abstração permitem independência lógica e física dos dados. O SGBD isola os programas de aplicações da maneira como os dados são estruturados e armazenados. Independência lógica O nível externo (visões) possibilita que usuários não autorizados não tenham acesso à estrutura lógica global dos dados (esquema conceitual). Independência física O nível conceitual possibilita que usuários não tenham acesso à estrutura física dos dados. Maneira como os dados são armazenados é transparente para estes usuários.

Controle da Concorrência. Execução da concorrência de processos é essencial para uma boa performance do SGBD. Acessos a discos são frequentes e lentos, é importante deixar a CPU alocada a diversos processos concorrentemente. Executar ações de diferentes processos pode levar a contradições: p.ex., o cheque compensado enquanto o saldo é computado. O SGBD evita tais problemas: usuários podem fingir que estão usando um sistema único. 11

Transação: Execução de um programa de BD O conceito chave é transação, uma seqüência atomica de ações no BD (leituras/gravações). Cada transação, executada completamente, deve deixar o BD num estado consistente (se o BD é consistente quando a transação começa). Usuários podem especificar algumas restrições de integridade, e o SGBD reforçará estas restrições. O SGBD não entende a semântica dos dados. Assim, assegurar que a transação preserve a consistência é definitivamente de responsabilidade do usuário! 12

Escalonando Transções Concorrentes SGBD garante que a execução de {T1,..., Tn} é equivalente a alguma execução em série T1...Tn. Antes de ler/escrever um objeto, uma transação requer um lock neste objecto, e espera até o SGBD retornar o lock. Todos os locks são liberados no final da transação. (protocolo 2PL estrito.) Idéia: Se uma ação de Ti, escrevendo X, afeta Tj, que lê X, um deles, digamos Ti, obterá o lock em X primeiro e Tj é forçado a esperar até Ti completar; isto efetivamente ordena as transações. E se Tj já tem um lock em Ye Ti mais tarde requer um lock em Y? (Deadlock!) Ti ou Tj é abortada e reiniciada. 13

BDs fazem estas pessoas felizes... Usuários e fabricantes de BDs Programadores de aplicações em BD Administrador de BD (DBA) Projeta esquema logico e físico Gerencia segurança e autorizações Disponibilidades de dados, recuperação de desastres (crashes) Acerto do BD com o passar do tempo Tem que entender como um SGDB funciona! 16

Resumo SGBD usados para preservar, consultar grande conjuntos de dados. Benefícios: recuperação de crashes, acesso concorrente, agilidade no desenvolvimento, integridade e segurança dos dados, etc. Níveis de abstração independentes dos dados. Um SGBD típico tem uma arquitetura de camadas. Bons DBAs podem ganhar bem! Bastante P&D feita e a se fazer. 18

Álgebra Relacional 1

Linguagens de consultas relacionais Linguagens de consultas: Permitem manipulação e recuperação de dados de um BD. O modelo relacional suporta LCs simples e poderosas: Forte fundamentação teórica baseada em lógica. Permite otimizações. Ling. de consulta ling. de programação LCs não tem a intenção de suportar cálculos complexos. LCs suportam acesso fácil e eficiente a grandes conjuntos de dados. 2

LCs relacionais formais Duas LCs matemáticas formam a base para as LCs reais (p.ex., SQL), e p/ implementação: ❶ Álgebra relacional: Predominantemente operacional, útil para representar planos de execução. ❷ Cálculo Relacional : Permite usuários descreverm o que querem, ao invés de como querem. (nãooperacional, declarativa.) Entender álgebra e cálculo e uma chave para entender SQL e processamento de consultas. 3

Preliminares Uma consulta é aplicada para instâncias de relação, e o resultado de uma consulta é também uma instância de relação. Esquemas de relações para uma consulta são fixadas (mas consultas rodarão independente de exemplos!) O esquema para o resultado de uma propensa consulta é também fixada! Determinada por definição de construção de linguagem de consulta. 4

Esquema de BD dos exemplos Sailors(sid,sname,rating,age) Boat(bid, bname, color) Reserve(sid, bid, day) sid sname bid Sailor Reserve Boat bname age rating day color

Example Instances Relações Sailors e Reserves para nossos exemplos. Usaremos positional ou named field notation, assume que nomes de campos em resultados de consulta são `herdados de nomes de campos em relações de consulta. S1 S2 R1 sid bid day 22 101 10/10/96 58 103 11/12/96 sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0 sid sname rating age 28 yuppy 9 35.0 31 lubber 8 55.5 44 guppy 5 35.0 58 rusty 10 35.0 5

Algebra Relacional Operações Básicas: σ Selection ( ) Seleciona em sub-conjunto de fileiras da relação. Projection ( π ) Deleta colunas indesejadas da relação. Cross-product ( ) Permite-nos combinar duas relações. Set-difference ( ) Tuplas em reln. 1, mas não em reln. 2. Union( ) Tuplas em reln. 1 e em reln. 2. Operações Adicionais: Intersecção, junção, divisão, renomear Desde que cada operação retorna uma relação, operações podem ser compostas! 6

Projeção Deleta atributos que não estão na lista de projeção. Esquema de resultado contem exatamente o campo na lista de projeção, com os mesmos nomes que eles tinham na (somente) relação gasto. Operador de projeção tem eliminar duplicadas! (Porque??) Note: sistemas reais tipicamente não fazem eliminação duplicada a menos que o usuário explicitamente peça isso.(porque não?) sname rating yuppy 9 lubber 8 guppy 5 rusty 10 π ( S2) sname, rating age 35.0 55.5 π age ( S2) 7

Seleção Seleciona fileiras que satisfazem condição seleção. Não duplica no resultado! (Porque?) Esquema de resultado idêntico para esquema de (somente) relação gasto. Relação de Resultado pode ser usado para outra operação de algebra relacional! π sid sname rating age 28 yuppy 9 35.0 58 rusty 10 35.0 σ rating S >8 ( 2) sname rating yuppy 9 rusty 10 σ ( ( S )) sname, rating rating>8 2 8

União, Intersecção, Diferença de Conjuntos Todas estas operações tomam duas relações de gastos, com os quais tem ser union-compatible: Mesmo número de campos. Campos `correspondentes tem o mesmo tipo. O que é o esquema de resultado? sid sname rating age 22 dustin 7 45.0 S1 S2 sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0 44 guppy 5 35.0 28 yuppy 9 35.0 S1 S2 sid sname rating age 31 lubber 8 55.5 58 rusty 10 35.0 S1 S2 9

Produto Cartesiano Cada fileira de S1 é combinada com cada fileira de R1. Esquema resultante tem um campo por campo S1 e R1, com nomes campos`herdados se possível. Conflito: Ambos S1 e R1 tem um campo chamado sid. (sid) sname rating age (sid) bid day 22 dustin 7 45.0 22 101 10/10/96 22 dustin 7 45.0 58 103 11/12/96 31 lubber 8 55.5 22 101 10/10/96 31 lubber 8 55.5 58 103 11/12/96 58 rusty 10 35.0 22 101 10/10/96 58 rusty 10 35.0 58 103 11/12/96 Operador renomear: ρ ( C( 1 sid15, sid2), S1 R1) 10

Renomear ρ(r(f), E) E: expressão da álgebra relacional F: um conjunto de especificações do tipo NomeAtributoAntigo NomeAtributoNovo R(F): relação com mesmo esquema de E, exceto para os atributos com NomesAntigos que passam a ter NomesNovos (dados pela especificação F) Exemplo : ρ(r(a C), Π A S x Π B S ) (onde S(A,B)) resulta numa relação com esquema {C,B} e com o mesmo conteúdo que Π A S x Π B S

Junções Condição Junção: R c S = σ c ( R S) (sid) sname rating age (sid) bid day 22 dustin 7 45.0 58 103 11/12/96 31 lubber 8 55.5 58 103 11/12/96 S1. sid < R1. sid S 1 R 1 Result schema o mesmo que do produto cartesiano Poucas tuplas do que produto cartesiano, tem que estar disponíveis para computar mais eficientemente. Algumas vezes chamada um theta-join. 11

Joins Equijoin: Um caso especial de condição junção onde a condição c contem somente igualdades. sid sname rating age bid day 22 dustin 7 45.0 101 10/10/96 58 rusty 10 35.0 103 11/12/96 S1 R1 sid Result schema parecido com produto cartesiano, mas somente uma copia de campos para o qual igualdade é especificada. Natural Join: Equijoin em todos campos iguais. 12

Division Não suportado como um operador primitivo, mas útil para expressar consultas como: Find sailors who have reserved all boats. Seja A com dois campos, x e y; e B com apenas y: A/B = { x x, y A y B} i.e., A/B contém todas as tuplas (sailors) tais que para cada tupla y (boat) em B, há uma tupla xy em A. Ou: Se o conjunto de valores y (boats) associados com um valor x (sailor) em A contem todos os valores y em B, o valor x está em A/B. Em geral x e y podem estar em qualquer listas de campos; y é a lista de campo em B, e x é a lista de campos de A. 13

Examples of Division A/B sno s1 s1 s1 s1 s2 s2 s3 s4 s4 A pno p1 p2 p3 p4 p1 p2 p2 p2 p4 pno p2 B1 sno s1 s2 s3 s4 pno p2 p4 B2 sno s1 s4 pno p1 p2 p4 B3 sno s1 A/B1 A/B2 A/B3 14

Expressando A/B Usando Operadores Básicos Divisão não é operador essencial; só uma útil taquigrafia. Também é o caso de joins, mas joins são tão comuns que muito sistemas o implementam. Idéia: Para A/B, calcule todos valores x que não são disqualificados por algum y em B. x é disqualificado se ao juntar um y de B, obtemos uma tupla xy que não está em A. Disqualified x values: A/B: π x (( π x ( A) B) A) π x ( A) all disqualified tuples 15

Encontre os nomes dos sailors que reservaram o barco # 103 Solução 1: π (( σ Re serves) Sailors) sname bid =103 Solução 2: ρ ( Temp1, σ Re serves) bid =103 ρ ( Temp2, Temp1 Sailors) π sname ( Temp2) Solução 3: πsname( σ (Re serves Sailors)) bid =103 16

Encontre nomes dos sailors que reservaram um barco vermelho Informação sobre cor disponível somente em barcos; assim precisa de uma junção extra: π sname (( σ color = ' red' Boats) Re serves Sailors) Uma solução mais eficiente: π sname ( π π σ sid (( bid color = ' red ' Boats) Re s) Sailors) Um otimizador de consulta pode fazer isso a partir da primeira solução! 17

Encontre nomes dos sailors que reservaram um barco vermelho ou verde Pode identificar todos os barcos vermelhos ou verdes, então achar sailors que tenham reservado um destes barcos: ρ ( Tempboats,( σ )) color = ' red ' color = ' green' Boats π sname ( Tempboats Re serves Sailors) Também pode-se definir Tempboats usando união (?) E se é substituido por nesta consulta? 18

Encontre os sailors que reservaram um barco vermelho e um barco verde Idéia anterior não funciona! Deve-se identificar os sailor que reservaram barcos vermelhos, aqueles que reservaram barcos verdes e encontrar a interseção destes: ρ ( Tempred, π (( σ sid color = ' red ' ρ ( Tempgreen, π (( σ sid color = ' green' Boats) Re serves)) Boats) Re serves)) π sname (( Tempred Tempgreen) Sailors) 19

Encontre sailors que reservaram todos os barcos Usando divisão, esquemas a serem divididos devem ser cuidadosamente escolhidos: ρ ( Tempsids,( π Re serves) / ( π )) sid, bid bid Boats π sname ( Tempsids Sailors) P/ encontrar sailors que reservaram os barcos Interlake :... / π ( σ ) bid bname= ' Interlake' Boats 20