Title: Padr
1Padrões em BDOO e Projeto Lógico
2Padronização
- ODMG Object Database Management Group
- Consórcio formado por fabricantes de SGBD OO
- Integrar de forma transparente as funcionalidades
de BD e LP OO. - Interoperabilidade
3O Padrão ODMG
- Modelo de Dados
- Linguagem de Definição de objetos
- ODL Object Definition Language
- Linguagem de Consulta
- OQL Object Query Language
- Acoplamentos
- Ligações com LP OO
- Não tem linguagem de manipulação (atualização)
- Isto é feito pela linguagem de programação OO
4Definição de Classes, atributos e métodos
Funcionario
nome endereco sexo salario
Departamento
Alocado possui
nome
1..n 1..1
calculaSalario()
class Funcionario (extent funcionarios)?
attribute string nome attribute string
endereco attribute string sexo
attribute float salario void
calculaSalario()
class Departamento (extent departamentos)?
attribute string nome
5Chaves
- OID
- identificador do objeto
- Chave
- uma ou mais propriedades cujos valores devem ser
únicos
class Departamento (extent departamentos KEY
nome)? attribute string nome
6Definição de Relacionamentos (Associação)
Funcionario
nome endereco sexo salario
Departamento
Alocado possui
nome
1..n 1..1
calculaSalario()
- class Departamento
- (extent departamentos)?
-
- attribute string nome
- relationship set Funcionario possui
- inverse Funcionario alocado
class Funcionario (extent funcionarios)?
attribute string nome attribute string
endereco attribute string sexo
attribute float salario relationship
Departamento alocado inverse
Departamento possui void
calculaSalario()
Vários funcionários em um Departamento
Relacionamento 1..n
7Herança
class Funcionario (extent funcionarios)?
attribute string nome attribute string
endereco attribute string sexo
attribute float salario void
calculaSalario()
Funcionario
nome endereco sexo salario
calculaSalario()
Gerente
Vendedor
class Gerente extends Funcionario (extent
gerentes)? attribute float bonus attribute
Date dataInicio void calculaSalario()
bonus dataInicio
percentualComissao
calculaSalario()
calculaSalario()
8OQL Object Query Language
- Linguagem de consulta declarativa
- Extensão da linguagem SQL com suporte p/
- objetos complexos
- invocação de métodos
- buscas em hierarquias de herança
- Oferece primitivas para manipular coleções
9OQL Object Query Language
SELECT resultado FROM operando WHERE predicado
resultado objetos operando coleções predicado
expressões de caminho.
10Consultas
- Ponto de partida de uma consulta
- select e.
- from e in Empregados
- Uma consulta não precisa seguir a estrutura
selectfromwhere - A referência a um objeto persistente já é uma
consulta - Q1 empregados
11Consultas Expressões de caminho
Funcionario
nome endereco sexo salario
Departamento
Alocado possui
nome
1..n 1..1
calculaSalario()
Retorna vários objetos
Departamento d d.departamento.possui Funcionario
f f.departamento.alocado.nome
Todos os func dos deptos Nome do depto onde
o Funcionario esta alocado
12Consultas Expressões de caminho
- Permitem a navegação em estruturas complexas e
objetos associados - atributos de referência e relacionamentos
- utiliza-se a notação de ponto (.)?
- Exemplo
- select p.nome, p.titulacao
- from p in Professores
- where p.departamento.codigo DCT
Atributo de professor
13Consultas novas estruturas
- novas estruturas (struct)
- select struct (
- nome d.nome,
- altoEscalao (select f.
- from f in Funcionario
- where f.salário gt 15.000))
- FROM d in Departamento
14BDOO
- Muita teoria e poucos BD comerciais
- Por isso surgiram os BD objeto-relacionais
15Banco de Dados Objeto-Relacional
16O Modelo Objeto Relacional
- Os SGBDOR
- são desenvolvidos com base no SGBDR e
- são capazes de suportar grande parte dos
conceitos de orientação a objetos (pertencentes
ao SGBDOO).
17O Modelo Objeto Relacional
- Estende o modelo relacional
- Sistema de tipos mais rico (característica OO)
- Novas construções de linguagem (SQL) para
manipular os novos tipos de dados -
18SGBD Objeto Relacional (OR)?
- Combina as melhores características do modelo de
objetos no modelo relacional - Modelo rico eficiência no gerenciamento de
dados - Tecnologia relativamente nova - SQL3
Exemplos comerciais Oracle DB2 PostgreSQL SQL
Server
19Modelo de dados Objeto Relacional
- Extensões do modelo Relacional
- Definição de novos tipos de dados
- Tipos de dados complexos
- Incorporação de novas funcionalidades ao SGBD
- Manipulação dos novos tipos de dados
- Suporte a herança
- Extensões ao SQL para manipular e consultar
objetos
20Padrão SQL3 (SQL 99)?
- Suporte ao tratamento de objetos
- Tabelas aninhadas (objetos linha)?
- Tipos abstratos de dados (TAD)? (estruturas
especificamente construídas para armazenar
determinados tipos de dados) - Referências e OIDs
- Objetos complexos
- Definição de comportamento
- Herança
21Definição de Objetos Abstratos
- Tipo de Objeto Linha (row type)?
- Define uma estrutura de tupla
- Atributos podem conter outras tuplas
- Tipo Abstrato de dado (TAD)?
- Define uma estrutura complexa
- Define comportamento e herança
22Tipo de Objeto Linha
- Definição
- CREATE ROW TYPE (ltdeclaração componentesgt)?
- Exemplos
CREATE ROW TYPE TEndereco( ruaNro
VARCHAR(60), cidade VARCHAR(40), CEP INTEGER
) CREATE ROW TYPE TFornec( codFornec
CHAR(4), nomeFornec VARCHAR(40), endFornec
TEndereco )
23Criação de Tabelas
- Indicação do tipo a que pertence
- Várias tabelas podem ser de um mesmo tipo
- Exemplos
- CREATE TABLE Fornecedores OF TYPE TFornec
- CREATE TABLE FornAntigos OF TYPE TFornec
24Tipo Abstrato de Dados (TAD)?
- Define comportamento para os objetos
- Encapsulamento de atributos e métodos
- Permite herança de um tipo para um subtipo
- Definição
CREATE TYPE ltnomeTADgt ( ltlistaAtributosgt ltdeclara
çãoAssinMétodosgt )? INSTANTIABLE NOT FINAL
pode gerar tabela pode ou não ser especializado
25Exemplo
- CREATE TYPE TEmpregado (
- RG INTEGER,
- nome VARCHAR(40),
- endereço Tend,
- gerente REF(TEmpregado),
- salárioBase DECIMAL (7,2),
- comissão DECIMAL (7,2),
- METHOD salário() RETURNS DECIMAL (7,2)
- ... )?
- INSTANTIABLE
- NOT FINAL
- CREATE TABLE Empregados OF TYPE TEmpregado
26Herança
- Só permite herança simples
- Definição
- CREATE TYPE ltnomeTADgt UNDER ltnomeTADgt(...)?
- CREATE TABLE ltnomeTabgt UNDER ltnomeTabgt (...)?
CREATE TYPE Tprofessor UNDER Tempregado
( titulação VARCHAR(15), gratificação DECIMAL
(7,2)? ...)? INSTANTIABLE NOT FINAL
27Consultas (SQL3)
SEÇÕES
FUNCIONÁRIOS
Expressão de caminho em SQL3 utiliza 2 pontos
para referência de componentes de tuplas
SELECT data..dia FROM funcionarios
28Consultas (SQL3)
- Permite fazer laços
- Suporta comandos como begin/end, loop/end-loop,
while/end_while, etc