330 likes | 424 Views
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. IDENTIFICANDO COLEÇÕES GLOBAIS.
E N D
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
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.
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
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)
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
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 ) /
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 : AB) • 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)
Mapeamento de Relacionamentos • Ligação De Valor (l : AB): • Monovalorada : cria um atributo cujo Tipo é B. Endereço: Consumidor_Ty Endereço_Ty
Mapeamento de Relacionamentos CREATE OR REPLACE TYPE CONSUMIDOR_TY AS OBJECT( CPF INTEGER, Name VARCHAR2(30), Endereço Endereço_TY ) /
Mapeamento de Relacionamentos • Ligação De Valor (l : AB): • Multivalorada : • Cria um tipo Tl (Nested Table ou Varray C) com “objetos membros” do tipo B. • Cria um atributo l de tipo Tl
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 )
Mapeamento de Relacionamentos • Ligação De Referência (l : AB): • Monovalorada : • Cria um atributo l em A cujo tipo é REF B. depto: FUNCIONÁRIO_TYDEPARTAMENTO_Ty
Mapeamento de Relacionamentos CREATE OR REPLACE TYPE Funcionario_TY AS OBJECT ( CPF INTEGER, Name VARCHAR2(30), depto REF Departamento_TY )
Mapeamento de Relacionamentos • Ligação De Referência (l : AB): • Multivalorada : • Cria um tipo Tl Nested Table ou Varray C. O tipo dos “objetos membros” de Tl é REFB. • Cria um atributo l em A cujo tipo é Tl
Mapeamento de Relacionamentos Multivalorada Member_of: PERSON_TYCAMPUSCLUB_Ty
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, ... )
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.
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 ... );
TABELAS DE OBJETOSS Restrições • Restrição de Chave • Restrição de Nulidade • Restrição Referencial
TABELAS DE OBJETOSRestrição de Chave • Classe Plena : Chave Primária • Classe de Associação : Todas as ligações às classes participantes formam uma chave concatenada
TABELAS DE OBJETOSRestriçã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 )
TABELAS DE OBJETOSRestriçã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 )
TABELAS DE OBJETOSRestriçã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.
TABELAS DE OBJETOSRestriçã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 \
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
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 ; /
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