Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

33
Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML Vânia Maria Ponte Vidal

description

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. - PowerPoint PPT Presentation

Transcript of Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

Page 1: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de

Classes da UML

Vânia Maria Ponte Vidal

Page 2: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

2

ROTEIRO

IDENTIFICANDO COLEÇÕES GLOBAIS

CRIAÇÃO DOS TIPOS CRIAÇÃO DAS TABELAS CRIAÇÃO DAS VISÕES CRIAÇÃO DOS TRIGGERS 

Page 3: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

3

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.

Page 4: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML
Page 5: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML
Page 6: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

6

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

Page 7: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

7

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)

Page 8: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

8

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

Page 9: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

9

Mapeamento de Atributos

CREATE TYPE Varfone AS VARRAY(40) OF VARCHAR(13)

/CREATE OR REPLACE TYPE CONSUMIDOR_TYAS OBJECT( CPF INTEGER, Name VARCHAR2 Fone Varfone )/

Page 10: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

10

Mapeamento de Relacionamentos

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)

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)

Page 11: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

11

Mapeamento de Relacionamentos

Ligação De Valor (l : A B): Monovalorada : cria um atributo cujo Tipo é B.

Endereço: Consumidor_Ty Endereço_Ty

Page 12: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

12

CREATE OR REPLACE TYPE CONSUMIDOR_TYAS OBJECT( CPF INTEGER, Name VARCHAR2(30), Endereço Endereço_TY)/

Mapeamento de Relacionamentos

Page 13: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

13

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

Page 14: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

14

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)

Page 15: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

15

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

Page 16: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

16

Mapeamento de Relacionamentos

CREATE OR REPLACE TYPE Funcionario_TY AS OBJECT

( CPF INTEGER, Name VARCHAR2(30), depto REF Departamento_TY)

Page 17: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

17

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

Page 18: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

18

Mapeamento de Relacionamentos

Multivalorada

Member_of: PERSON_TY CAMPUSCLUB_Ty

Page 19: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

19

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, ...)

Page 20: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

20

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.

Page 21: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

21

Mapeamento de Classes de Associação

Page 22: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

22

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 ...);

Page 23: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

23

TABELAS DE OBJETOSS Restrições

Restrição de Chave Restrição de Nulidade Restrição Referencial

Page 24: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

24

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

Page 25: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

25

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 )

Page 26: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

26

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)

Page 27: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

27

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. 

Page 28: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

28

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\

Page 29: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

29

Diagrama de Classes Estendido

Page 30: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

30

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

Page 31: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

31

CRIAÇÃO DAS VISÕES

Page 32: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

32

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 ;/

Page 33: Gerando Esquemas Objeto Relacionais (Oracle 9i) a partir do Diagrama de Classes da UML

33

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