Gerando Esquemas Objeto
Relacionais (Oracle 9i) a
partir do Diagrama de
Classes da UML
Vânia Maria Ponte Vidal
ROTEIRO





IDENTIFICANDO COLEÇÕES GLOBAIS
CRIAÇÃO DOS TIPOS
CRIAÇÃO DAS TABELAS
CRIAÇÃO DAS VISÕES
CRIAÇÃO DOS TRIGGERS
2
IDENTIFICANDO
COLEÇÕES GLOBAIS
Devem ser criadas coleções Globais para :
Classes que são pontos de entrada do Banco
 Classes cujas instâncias são compartilhadas,
i.e., podem ser referenciadas por mais de um
objeto.
3
CRIAÇÃO DOS TIPOS

Para cada classe do diagrama cria-se um tipo de
objeto (inicialmente incompleto).
 Classes Plenas



Mapeamento de Atributos
Mapeamento de Relacionamentos (Ligações)
Classes de Associação
6
Mapeamento de Atributos

Monovalorado :

Gera um atributo monovalorado (o tipo do atributo é
mapeado no tipo do Oracle 9i correspondente; caso
este não exista deve ser criado)
7
Mapeamento de Atributos

Multivalorado :


cria um tipo Ta Nested Table ou Varray C. O tipo dos
“objetos membros” é mapeado no tipo do Oracle 9i
correspondente; caso este não exista deve ser criado.
Cria o atributo a cujo tipo é Ta
8
Mapeamento de Atributos
CREATE TYPE Varfone AS VARRAY(40) OF
VARCHAR(13)
/
CREATE OR REPLACE TYPE CONSUMIDOR_TY
AS OBJECT(
CPF INTEGER,
Name VARCHAR2
Fone Varfone )
/
9
Mapeamento de
Relacionamentos
Para cada direção de navegação em um relacionamento
(Associação, Agregação ou Composição) é associada uma
ligação ou papel (l : A B)


Ligação de Valor : A classe destino (B) não tem associada
uma coleção Global (Objetos não têm Oid, logo não podem
ser referenciados)
Ligação de Referência : A classe destino (B) tem
associada uma coleção Global (Objetos têm Oid, logo
podem ser referenciados)
10
Mapeamento de
Relacionamentos

Ligação De Valor (l : A B):

Monovalorada : cria um atributo cujo Tipo é B.
Endereço: Consumidor_Ty  Endereço_Ty
11
Mapeamento de
Relacionamentos
CREATE OR REPLACE TYPE CONSUMIDOR_TY
AS OBJECT(
CPF INTEGER,
Name VARCHAR2(30),
Endereço Endereço_TY
)
/
12
Mapeamento de
Relacionamentos

Ligação De Valor (l : A B):

Multivalorada :


Cria um tipo Tl (Nested Table ou Varray C) com “objetos membros”
do tipo B.
Cria um atributo l de tipo Tl
13
Mapeamento de
Relacionamentos
CREATE TYPE Fone_NT AS TABLE OF Fone_TY
/
CREATE OR REPLACE TYPE Funcionario_TY AS
OBJECT
( CPF INTEGER,
Name VARCHAR2(30),
foneDe Fone_NT
)
14
Mapeamento de
Relacionamentos

Ligação De Referência (l : A B):

Monovalorada :

Cria um atributo l em A cujo tipo é REF B.
depto: FUNCIONÁRIO_TY DEPARTAMENTO_Ty
15
Mapeamento de
Relacionamentos
CREATE OR REPLACE TYPE Funcionario_TY AS OBJECT
(
CPF INTEGER,
Name VARCHAR2(30),
depto REF Departamento_TY
)
16
Mapeamento de
Relacionamentos

Ligação De Referência (l : A B):

Multivalorada :


Cria um tipo Tl Nested Table ou Varray C. O tipo dos “objetos
membros” de Tl é REF B.
Cria um atributo l em A cujo tipo é Tl
17
Mapeamento de
Relacionamentos
Multivalorada
Member_of: PERSON_TY CAMPUSCLUB_Ty
18
Mapeamento de
Relacionamentos
CREATE TYPE Clubs_Member_NT AS TABLE OF
REF CampusClub_TY
/
CREATE OR REPLACE TYPE Person_TY AS
OBJECT
( PID INTEGER,
FirstName VARCHAR2(30),
Member_of Clubs_Member_NT, ...
)
19
Mapeamento de
Classes de Associação


Uma classe de Associação tem uma ligação de
Referência monovalorada para cada uma das
classes participantes.
Cada ligação deve ser mapeadas em atributos da
classe de associação seguindo as regras de
mapeamento descritas anteriormente.
20
Mapeamento de
Classes de Associação
21
TABELAS DE OBJETOSS

Deve ser criada uma tabela de Objetos para cada coleção
Global Identificada e que não estejam associadas a
subtipos (estas coleções são tratadas em seguida)
CREATE TABLE collection OF Object_Type
(
... Restrições ...
);
22
TABELAS DE OBJETOSS
Restrições



Restrição de Chave
Restrição de Nulidade
Restrição Referencial
23
TABELAS DE OBJETOS
Restrição de Chave


Classe Plena : Chave Primária
Classe de Associação : Todas as
ligações às classes participantes
formam uma chave concatenada
24
TABELAS DE OBJETOS
Restrição NOT NULL

Se a ligação tem multiplicidade maior ou igual
a 1, o atributo que representa tal ligação deve
possuir a restrição NOT NULL
Create Table Pessoas of Pessoa_TY
(
Endereço NOT NULL
)
25
TABELAS DE OBJETOS
Restrição Referencial

Ligação de Referência Monovalorada : o
atributo que representa essa ligação deve
possuir a restrição
REFERENCES Collection_Alvo
CREATE TABLE Pessoas OF Pessoa_TY(
Depart REFERENCES Departamentos
)
26
TABELAS DE OBJETOS
Restrição Referencial

Ligação de Referência Multivalorada com
Nested Table:



para cada atributo que representa esse tipo de ligação
devemos definir onde se deve armazenar a Nested
Table.
Após a criação da tabela de objeto, deve-se executar
um Alter Table na Nested Table para informar a coleção
referenciada pelos elementos da Nested Table (ADD
SCOPE).
Essa restrição de escopo só funciona na adição de
elementos.
27
TABELAS DE OBJETOS
Restrição Referencial
CREATE TABLE Persons OF Person_TY
NESTED TABLE Member_of STORE AS
Member_of_TAB
\
ALTER TABLE Member_of_TAB
ADD SCOPE FOR (COLUMN_VALUE) IS
CampusClubs
\
28
Diagrama de Classes Estendido
29
CRIAÇÃO DAS VISÕES


Criar uma Visão de Objeto para cada
Tabela de Objetos
Criar um Tipo para cada coleção
derivada e depois uma visão
30
CRIAÇÃO DAS VISÕES
31
CRIAÇÃO DAS VISÕES
CREATE TYPE Faculty_TY AS OBJECT
( Pid INTEGER,
DOB DATE,
FirstName VARCHAR2(10),
LastName VARCHAR2(10),
Rank VARCHAR2(10),
AdvisorOf ClubsAdvisor_NT,
WorksIn REF Department_TY
)
/
CREATE VIEW VFACULTY OF Faculty_TY AS
SELECT P.Pid, P.DOB, P.FirstName, P.LastName,
P.Rank, P.AdivisorOf, p.WorksIn
FROM PERSONS P
WHERE P.IsPerson = 1 AND P.Isfaculty=1 ;
/
32
CRIAÇÃO DOS TRIGGERS


Para cada visão, criar instead of triggers.
Deve-se considerar os seguintes aspectos:




Manutenção de Ligações Inversas
Multiplicidade das ligações
Restrição referencial em atributos multivalorados
de referência
Manutenção das restrições existenciais de coleção
33
Download

MAPEAMENTO DE DIAGRAMAS DE CLASSE UML PARA O