Sistemas de Gerência de Bancos de Dados - ufpa.br · PDF fileSQL - Consultas com...
Transcript of Sistemas de Gerência de Bancos de Dados - ufpa.br · PDF fileSQL - Consultas com...
Módulo 0 - Modelos de Dadose Linguagens de Consulta
Sistemas de Gerência de Bancos de Dados
modulo0.PRZ 1 03/08/01
Tópicos
Introdução
Modelo Relacional
Modelo de Objetos
Modelo de Dados Semi-Estruturados
modulo0.PRZ 2 03/08/01
Introdu ção
Revisão do conceito de modelo de dados:
modelo de dados = estrutura + consistência + operações
estrutura:tipos + construtoresinfluencia todos os componentes do SGBD
consistência:assertivas + triggersinfluenciam o controle de consistência
operações:consultas + atualizações influenciam o otimizador
modulo0.PRZ 3 03/08/01
Introdu ção Linguagem de Definição de Dados (LDD):
comandos para definição do esquema lógico e físico do BD
Linguagem de Manipulação de Dados (LMD):comandos para especificação de consultas ao BDcomandos para manipulação dos dados no BD:
inserçãoatualizaçãodeleção
Classificação das linguagens:procedimentais: consultas especificam a ordem de execução
das operações necessárias para obter a respostadeclarativas: consultas especificam a resposta, sem indicar que operações devem ser realizadas para obtê-la
modulo0.PRZ 4 03/08/01
Modelo Relacional estrutura:
tuplas relações1NF x NF2
operações:álgebra / cálculo relacional / SQL
consistência:dependências funcionais (incluindo chaves)dependências de inclusão (sinônimo de integridade referencial)outras dependênciasassertivas + triggers
modulo0.PRZ 5 03/08/01
Modelo Relacional Cálculo Relacional
linguagem declarativaparadigma para as linguagens relacionais
Álgebra Relacional procedimentalmesmo poder de expressão que o Cálculo Relacionalvariantes da Álgebra Relacional são usadas internamente pelos SGBDs relacionais durante a otimização de consultas
SQL - Structured Query Languageoriginária do Cálculo Relacional“semi-declarativa”interface padrão dos SGBDs relacionais
modulo0.PRZ 6 03/08/01
Álgebra Relacional Álgebra Relacional:
operações mapeiam uma ou mais relações em uma nova relaçãoalgumas operações impõem restrições nas relações de entrada
Operações: Básicas:
oriundas da teoria de conjuntos: Produto Cartesiano, União e Diferençaespecíficas para relações: Seleção, Projeção e Renomeção
Adicionaisoriundas da teoria de conjuntos: Interseção específicas para relações: Divisão e Junção
Notas: as operações básicas são suficientes para exprimir as mesmas consultas que o Cálculo Relacionalas operações adicionais ajudam a formular certas consultas que seriam muito complexas de exprimir usando apenas as operações básicas
modulo0.PRZ 7 03/08/01
Álgebra Relacional Expressão Restri ções
E � F , E - F , E � F gr(E)=gr(F) e E e F têm atributos compatíveis
R := Eomite-se a lista de atributos de R quando for possível determiná-los a partir de E
selecione R onde P P é predicado de seleção para R, ou seja, os termos de P só envolvem atributos de R
projete R em A1, ... An A1,...,An são atributos de R
junte R e S onde P
P é predicado de junção para R e S, ou seja,os termos só envolvem expressões da forma R.A, onde A é um atributo de R, ou da forma S.A, onde A é um atributo de Se as comparações são sobre termos de relações diferentes
modulo0.PRZ 8 03/08/01
Álgebra Relacional
Exemplos:
Esquema Relacional do Banco de Dados:
Disc[Cod, End, Matr, Nível] Prof[Matr, Nome, Idade]
Estado do Banco de Dados:
Matr Nome Idade
15315 Pedro 46
11239 Manuel 33
24217 José 66
ProfCod End Matr Nível
inf1731 L520 15315 GR
inf1732 L510 11239 GR
inf1732 L520 15315 GR
inf2324 L520 24217 PG
Disc
modulo0.PRZ 9 03/08/01
Álgebra Relacional
Exemplos (cont.):
Qual o nome dos professores com mais de 45 anos que lecionam disciplinas na GR?
R1 := junte Disc e Prof onde DiscPG.Matr = Prof.Matr;R2 := selecione R1 onde Nível = GR e Idade > 45;R3 := projete R2 em Nome;
ou, equivalentemente:
R1 := selecione Disc onde Nível = GR;R2 := selecione Prof onde Idade > 45;R3 := junte R1 e R2 onde R1.Matr = R2.Matr;R4 := projete R3 em Nome;
modulo0.PRZ 10 03/08/01
Álgebra Relacional
Representação de expressões por árvores:
R1 := junte Disc e Prof onde DiscPG.Matr = Prof.Matr;
R2 := selecione R1 onde Nível = GR e Idade > 45;R3 := projete R2 em Nome;
R1 := selecione Disc onde Nível = GR;R2 := selecione Prof onde Idade > 45;R3 := junte R1 e R2 onde R1.Matr = R2.Matr;R4 := projete R3 em Nome;
Disc Prof
_ Disc.Matr = Prof.Matr
" Nível = GR e Idade > 45
� Nome
Disc Prof
_ Disc.Matr = Prof.Matr
" Nível = GR
� Nome
" Idade > 45
modulo0.PRZ 11 03/08/01
SQL
SQL
linguagem padrão para SGBDs relacionais
derivada do SEQUEL (Structured English QUEry Language)e do Cálculo Relacional
padronizada: um dos principais fatores de sucesso dos modelo relacional sucessão de padrões
modulo0.PRZ 12 03/08/01
SQL
SQL-86 (SQL1)
padrão inicialmente desenvolvido no âmbito da ANSI esubsequentemente aprovado pela ISO
SQL-89
extensão do SQL-86 publicado em89
modulo0.PRZ 13 03/08/01
SQL
SQL-92 (SQL2)
padrão aprovado pela ISO
dividido em:entry level:
define um conjunto mínimo de comandos para ser considerado SQL padrão
intermediate levelfull
SGBDs comerciais implementam:entry levelparte do intermediate level e parte do fulldefinições próprias
modulo0.PRZ 14 03/08/01
SQL
SQL-99 (SQL3):
padrão aprovado no final de 1999 pela ISO
SGBDs comerciais já implementam parte do SQL-99:triggersstored proceduresqueries recursivas
modulo0.PRZ 15 03/08/01
SQL
Consultas em SQL:
estrutura básica da forma select-from-where:
select <lista de resultados> from <lista de tabelas>
where <qualificação>
consultas simples:correspondem diretamente à Álgebra Relacional
consultas com aninhamento:envolvem outras consultas
consultas com agregação:envolvem operadores de agregaçãomodulo0.PRZ 16 03/08/01
SQL - Consultas Simples
Consultas Simples:
consultas da forma select-from-where:
select <lista de resultados> from <lista de tabelas>
where <qualificação>
onde a lista de resultados e a qualificação envolvem apenas valores de atributos
ou combinação de consultas simples, das formas:
(Q1 union Q2) Q1 � Q2
(Q1 except Q2) Q1 - Q2
(Q1 intersect Q2) Q1 � Q2
Nota: divisão é expressa mais facilmente através de consultas aninhadas modulo0.PRZ 17 03/08/01
SQL - Consultas Simples
Consultas Simples (cont.):
a qualificação é uma expressão booleana de comparações
comparações simples:
V � k comparação � entre o valor V de um atributo e uma constante k
V � W comparação � entre dos valores V e W de atributos outras formas de comparação (V é o valor de um atributo) :
V like P V é uma cadeia de caracteresque deve satisfazer o padrão P
(V between N and M) V é um valor numérico no intervalo [N,M]
V in (a, b,c, ...) V deve pertencer ao conjunto {a,b,c,...}
V is null V deve ser nulomodulo0.PRZ 18 03/08/01
SQL - Consultas com Aninhamento
Consultas com Aninhamento:
a qualificação de uma consulta com aninhamento P é uma expressão booleana envolvendo:
termos da Teoria dos Conjuntos:
(Q1 union Q2)
(Q1 except Q2) (a diferença Q1 - Q2)
(Q1 intersect Q2)
(continua na próxima página)
modulo0.PRZ 19 03/08/01
SQL - Consultas com Aninhamento
Consultas com Aninhamento (cont.):
comparações entre o valor V de um atributo e a resposta de Q
V in (Q) V deve pertencer ao resultado de Q
V = some (Q) V é igual a alguma tupla no resultado de QV = any (Q) V é igual a todas as tuplas no resultado de QV � some (Q) generalização para uma comparação �
V � any (Q)
quantificação existencial (ou a sua negação)
exists (Q) o resultado de Q não é vazio
not exists (Q) o resultado de Q é vazio
modulo0.PRZ 20 03/08/01
SQL - Consultas com Agrega ção
Consultas com Agregação:
a lista de resultados ou a qualificação de uma consulta com agregação P contém uma ou mais operadores de agregação, ou seja, operadores que mapeiam conjuntos em valores
a consulta pode conter ainda uma cláusula de agrupamento e uma condição de agrupamento adicionais:
select <lista de resultados> from <lista de tabelas>
where <qualificação> group by <lista de atributos de agrupamento> having <condição de agrupamento>
modulo0.PRZ 21 03/08/01
SQL - Consultas com Agrega ção
Consultas com Agregação (cont.):
operadores de agregação podem ser utilizados na lista de resultados ou na condição de agrupamento
operadores de agregação:
count retorna a cardinalidade do conjunto
sum retorna a soma dos valoresmax retorna o valor máximo (desde que o domínio seja ordenado)min retorna o valor mínimo (desde que o domínio seja ordenado)avg retorna a soma dos valores
o argumento pode conter a opção distinct para filtrar duplicatas
modulo0.PRZ 22 03/08/01
Resumo
Modelo Relacional:tuplas + relaçõesdependências funcionais e outras
1NF x NF2
SQL3:triggersstored proceduresqueries recursivasconceitos de NF2
modulo0.PRZ 23 03/08/01
Modelo de Objetos
Convencionais X OO:
Operações Fixas Operações Estendíveis
EstruturasFixas
Convencional ComportalmenteOrientado a Objetos
EstruturasEstendíveis
EstruturalmenteOrientado a Objetos
CompletamenteOrientado a Objetos
modulo0.PRZ 24 03/08/01
Modelo de Objetos
ODMG - Object Database Management Group:Fundação: setembro de 1991Objetivo: definir um padrão para garantir a portabilidade
das aplicações escritas seguindo o modelo OOPresidente: R. G. G. CattellWeb site: www.odmg.orgVersões: ODMG 1.2 (1993)
ODMG 2.0 (março 1997)ODMG 3.0 (janeiro 2000)
Padrões definidos pelo ODMG:modelo de objetoslinguagem de definição de dados - ODLlinguagem de consulta - OQLacoplamento com C++ , Smalltalk e Java
modulo0.PRZ 25 03/08/01
Modelo de Objetos
Literal = valor + comportamento
Classificação dos literais:
atomic corresponde aos tipos de dados simples
estrutured criado usando o construtor Struct
collection criado com os construtoresSet<t>, Bag<t>, List<t>, Array<t>, Dictionary<k,t> onde t é o tipo de objetos ou literais na coleção
e k é o tipo da chave, no caso de dicionários
(note que t pode ser um tipo de objeto ou literal)
modulo0.PRZ 26 03/08/01
Modelo de Objetos
Objeto = OID + nome + estado + comportamento
OID = identificador internogerado pelo sistema, não sendo visível ao usuário
nome:é opcionaldeverá ser único no BD a que o objeto pertenceos objetos nomeados servirão de pontos de entrada para o BD
estado = valores das propriedades do objeto, incluindo:atributos do objetorelacionamentos (binários) entre o objeto e outros objetos
comportamento = operações permitidas sobre o objeto
modulo0.PRZ 27 03/08/01
Modelo de Objetos
Interface = definição de estrutura + assinaturas de operações
as interfaces não podem ser instanciadas, ou seja, não podem gerar conjuntos de objetos
utilizadas essencialmente para organizar as operações
modulo0.PRZ 28 03/08/01
Modelo de Objetos
Classes = definição de estrutura + assinaturas de operações
as classes podem ser instanciadas, ou seja, podem gerar extensões - conjuntos de objetos - e definir chaves para estas extensões
a definição da estrutura inclui a especificação de:atributos:
simples e complexos de referência, utilizados para representar relacionamentos 1-nentre os objetos da classe e objetos de outra classe
relacionamentos:utilizados para representar relacionamentos binários 1-n ou n-mentre os objetos da classe e objetos de outra classe:permitem especificar o relacionamento inversonão devem ser utilizados quando o relacionamento n-m possui atributos
modulo0.PRZ 29 03/08/01
Modelo de Objetos
Herança Comportamental (via ":")
uma interface pode ser uma especialização de outras interfaces,das quais herda as operações
uma classe pode ser uma especialização de outras interfaces,das quais herda as operações
Herança Comportamental e Estrutural (via Extends )
uma classe pode ser uma especialização de apenas outra classe,da qual herda a estrutura e as operações
modulo0.PRZ 30 03/08/01
Modelo de Objetos
Extensão = conjunto de objetos seguindo a definição de uma classe
uma extensão possui um nome
uma extensão pode ter uma ou mais chaves, definidas por listas de atributos ou relacionamentos da classe
se C é uma especialização de D,então a extensão de C deve ser um subconjunto de D
modulo0.PRZ 31 03/08/01
ODL - Object Definition Language
ODL:
segue o modelo OO definido pelo ODMG, permitindo definir:
interfaces
classes
especializações estruturais e comportamentais
modulo0.PRZ 32 03/08/01
ODL - Object Definition Language
Leilão
Escultura
Lote Obra
Artista
composto-por
OutraPinturaCliente
arremado-por
arremata
inclui incluida-em
compõe
cria
criada-por
(extends)
modulo0.PRZ 33 03/08/01
ODL - Object Definition Language
L1 L2
t1 t2 t3 t4
o1 o2 o3 o4
1-n
n-m
o1 o2 o3 o4
t1 t2 t4t3
incluida-em
o1 o2 o3 o4
t1 t2 t4t3
inclui
Obra
Leilão
Lote
L1 L2 L1 L2
composto-por compõe
modulo0.PRZ 34 03/08/01
ODL - Object Definition Language
class Artista ( extent artistas key nome)(
attribute string nome;attribute date DN;attribute date DN;attribute string bio;relationship set <Obra> cria inverse Obra::criada-por;void cadastra ( in integer nome; in date dn; in date df)
raises (nome_duplicado))
modulo0.PRZ 35 03/08/01
OQL - Object Query Language
Consulta em OQL:
parte dos pontos de entrada do BD (objetos persistentes nomeados)
constrói, como resposta, um objeto (tipicamente uma coleção)
utiliza variáveis de iteração para varrer coleções
utiliza expressões de caminho para chegar aos objetos não nomeados
modulo0.PRZ 36 03/08/01
OQL - Object Query Language
Expressão de caminho:
nome de objeto persistente, ou de variável de iteração,seguido por zero ou mais nomes de atributos ou de relacionamentos,separados por "."
exemplos: seja L uma variável de iteração varrendo leilões
L.data retorna a data do leilão apontado por LL.composto-por retorna o conjunto dos lotes do leilão apontado por L,
ou seja, um objeto do tipo Set<Lote>L.composto-por.inclui retorna o conjunto das obras dos lotes do leilão
apontado por L, ou seja, um objeto do tipo Set<Obra>
L.composto-por.valor não é uma expressão de caminho válida pois o resultado pode ser um objeto do tipo Set<float> ou do tipo Bag<float>
modulo0.PRZ 37 03/08/01
OQL - Object Query Language
Consulta simples:
formulada apenas como uma expressão de caminho,começando pelo nome de um objeto persistente
Consulta associativa:
segue a sintaxe básica do SQL - select-from-where
modulo0.PRZ 38 03/08/01
OQL - Object Query Language
Exemplos de consultas simples:
"Retorne uma referência à coleção de leilões"
leilões;
Suponha que L20000829 seja o nome de um objeto do tipo Leilão
"Retorne uma referência a todos os lotes do leilão L20000829"
L20000829.composto-por;
modulo0.PRZ 39 03/08/01
OQL - Object Query Language
Exemplos de consultas associativas:
"Liste a data dos leilões, com seus lotes e valores arrematados, para os leilões realizados em 2000"
L1
t1
t2
'100'
'101'
'2000829'
leilõescomposto-por
composto-por
numeroL
Nota: leilões = objeto nomeado do BD L = variável de iteração sobre leilões
numero
valor
data
valor
'22K'
'10K'
modulo0.PRZ 40 03/08/01
OQL - Object Query Language
Exemplos de consultas associativas (cont.):
"Liste a data dos leilões, com seus lotes e valores arrematados, para os leilões realizados em 2000"
select struct ( dleilão: L.data, lotes: ( select struct ( num: T.numero, val: T.valor )
from T in L.composto-por ) ) from L in leilõeswhere L.data.year = '2000' ;
modulo0.PRZ 41 03/08/01
OQL - Object Query Language
Exemplos de consultas associativas (cont.):
"Liste a data dos leilões com a média dos valores arrematados, para os leilões realizados em 2000"
select struct ( dleilão: L.data, mleilão:avg (select T.valor
from T in L.composto-por ) ) from L in leilões
where L.data.year = '2000' )
modulo0.PRZ 42 03/08/01
Resumo
Modelo OO:Literal = valor + comportamentoObjeto = OID + nome + estado + comportamentoFábrica = objeto utilizado para gerar ou criar outros objetosInterface = definição de estrutura + assinaturas de operações
não podem gerar conjuntos de objetosClasses = definição de estrutura + assinaturas de operações
as classes podem gerar extensões e definir chavesHerança Comportamental (via ":")Herança Comportamental e Estrutural (via Extends )
ODL - segue o modelo OO definido pelo ODMG
OQL - semelhante a SQL, mas incluindo:objetos arbitrários como respostasvariáveis de iteração para varrer coleçõesexpressões de caminho para chegar aos objetos não nomeadosvisões, pertinência e quantificação
modulo0.PRZ 43 03/08/01
Modelo de Dados Semi-estruturados
Características principais dos dados semi-estruturados:
sem imposição de tipos
auto-descritivos:a descrição da estrutura está implícita nos dados, oua descrição da estrutura acompanha os dados
esquema conceitual:opcionaldescritivo, não prescritivo:
dados podem divergir da descrição do esquema
modulo0.PRZ 44 03/08/01
Modelo de Dados Semi-estruturados
Características principais... (cont.):
dados semi-estruturados:estrutura é interpretada
(a partir da descri ção nos próprios dados)
dados estruturados:estrutura é compilada
(no esquema conceitual)
X
modulo0.PRZ 45 03/08/01
Modelo de Dados Semi-estruturados
Exemplos de modelos para dados semi-estruturados:
listas (como em LISP!)grafos rotulados
exemplo:
�OHLODR��GDWD�������������
�ORWH��QR�������YDORU�����������REUD�HP�
��REUD��&KDOXSD����REUD��9DUDQGD������
Chalupa
20000829
20.0001
Varanda
leilão
data lote
obra-emvalorno
obra obra
modulo0.PRZ 46 03/08/01
Modelo de Dados Semi-estruturados
Aplicações:
dados semi--estruturados facilitam:
integração de fontes de dados:
sintaticamente heterogêneas, mas semanticamente próximasautônomas na organização e na disseminação dos dados:
organização pode mudardisponibilidade da fonte pode mudar
intercâmbio de dados entre aplicações da mesma área:
definição de uma sintaxe comumdefinição de uma semântica comum (ontologia ou modelo de dados)
modulo0.PRZ 47 03/08/01
XML
XML Working Group do World Wide Web Consortium (W3C): Fundação: 1996Presidente: Jon Bosak (Sun Microsystems)Objetivo: definir um subconjunto de SGML com o objetivo de
permitir intercâmbio de documentos na WebWeb site: www.w3.org/XMLVersões: XML 1.0 (February 1998)
XML 1.0 - Second Edition (October 2000)
Padrões definidos pelo XML Working Group:XML - Extensible Markup LanguageXLL - Extensible Linking LanguageXSL - Extensible Style Language SAX - Simple API for XML DOM - Document Object Model
modulo0.PRZ 48 03/08/01
XML
Características principais de XML:
projetada para definir documentos estruturados
conteúdo do documento = descrição da estrutura + dados
não indica forma de apresentação de documentos
descrição da forma de apresentação separada do conteúdo do documento(contrastando com HTML)
modulo0.PRZ 49 03/08/01
XML
Estrutura lógica de um documento XML
Prólogo
Declaração XMLindica a versão do XML e outras informaçõespara a aplicação que processará o documento
DTD - Document type definition:regras estruturais para o documento edeclarações de recursos externos e internos
Corpo do documentolista de elementos aninhados e outros componentes
modulo0.PRZ 50 03/08/01
XML Básico
Elemento:
texto delimitado por uma tag de início e uma tag de fimelementos podem ser aninhadostags não são pré-definidas
exemplo:
�EG!
�OHLODR!
�GDWD!����������GDWD!
�ORWH!
�QR!���QR!
�YDORU!�������YDORU!
�REUD!&KDOXSD $GHUQDGD��REUD!
��ORWH!
��OHLODR!
��EG!
modulo0.PRZ 51 03/08/01
DTD - Document Type Definition
DTD - Document Type Definition::
��'2&7<3( QRPH > ��� @!
tag opcional que, se presente, deverá ocorre imediatamente após à PI �"[PO���!
especifica uma gramática livre de contexto à qual o documento deverá aderir
faz o papel do esquema conceitual para uma coleção de documentos XML
modulo0.PRZ 52 03/08/01
�"[PO YHUVLRQ �����"!
��'2&7<3( EG >
��(/(0(17 EG �OHLODR � !
��(/(0(17 OHLODR �GDWD�ORWH�� !
��(/(0(17 GDWD ��3&'$7$� !
��(/(0(17 ORWH �QR�YDORU�REUD��!
��(/(0(17 QR ��3&'$7$� !
��(/(0(17 YDORU ��3&'$7$� !
��(/(0(17 REUD ��3&'$7$� !
@!
�EG!
�OHLODR!
�GDWD!����������GDWD!
�ORWH!
�QR!���QR!
�YDORU!�������YDORU!
�REUD!&KDOXSD $GHUQDGD��REUD!
��ORWH!
��OHLODR!
��EG!
modulo0.PRZ 53 03/08/01
DTD - Document Type Definition
ELEMENT:
��(/(0(17 QRPH �H[SUHVVmR UHJXODU�!
expressões regulares:
( zero ou mais repetições de E(� uma ou mais repetições de E(" zero ou uma ocorrência de E( _ ) RX ( RX ) RFRUUHP
(�) ( FRQFDWHQDGD FRP )
�(� parentetização de E
a definição de ELEMENTs pode ser recursiva
��(/(0(17 QR �IROKD _ �QR�QR�� !
��(/(0(17 IROKD ��3&'$7$� !
modulo0.PRZ 54 03/08/01
DTD - Document Type Definition
Limitações de DTDs:
DTDs impõe ordem na ocorrência de elementos:limitação decorrente do uso de expressões regulares
DTDs possuem tipos de dados limitados:ID, IDREF, IDREF referências#PCDATA cadeias de caracteres
definição das tags é global à DTD:duas tags que ocorram apenas aninhadas em tags distintasnão podem ter o mesmo nomeproblema contornado através da noção de namespace
não há restrições fortes sobre IDs e IDREFs:os valores dos atributos dos tipos IDREF ou IDREFSnão estão restritos aos elementos do tipo desejado
modulo0.PRZ 55 03/08/01
Resumo
XML:projetada para descrever conteúdo de documentos, e não apresentaçãotags indicam estrutura de documentos
DTD - Document Type Definitiongramática especificando o formato de um conjunto de documentos
Entidades:compõem a estrutura física de um documento XML
XLink e XPointer:permite a declaração de elos entre documentos
Propostas para especificação de tipos em XML:DCD - Document Content Description, XML-schema e XML-data
APIs para XML:SAX - Simple API for XMLDOM - Document Object Model
modulo0.PRZ 56 03/08/01