Sie sind auf Seite 1von 33

Temario

I. BD Orientadas a Objetos
Tema 1. Bases de Datos Orientadas a Objetos
Tema 2. El modelo de clases de UML
Ejercicios de modelado conceptual OO
Tema 3. El modelo objeto-relacional
Prcticas de BDOR en Oracle
Tema 4. Diseo de BDOR
Ejercicios de diseo de BD (objeto-)relacionales con UML
II. BD Activas
Tema 5. Bases de Datos Activas
Tema 6. Disparadores en Oracle
Prcticas de Disparadores en Oracle

www.kybele.urjc.es

Base de Datos @KYBELE

Diseo de BD Objeto-Relacionales

Bibliografa
Tecnologa y Diseo de Bases de Datos. Piattini, M., Marcos, E.,
Calero, C. y Vela, B. Ra-ma, 2006 (cap. 20).
Bases de Datos Objeto Relacionales. Marcos, E., Vela, B. y Vara
J.M. Dickinson, Septiembre 2005.

SQL: 2003 has been published. A. Eisenberg, J. Melton, K. Kulkarni,


J. Michels, F. Zemke. ACM SIGMOD Record Volume 33 , Issue
1 (Marzo 2004).
SQL:1999, formely known as SQL3. A. Eisemberg and J. Melton.
SIGMOD Record, Vol. 28, No. 1, Marzo 1999, pp. 131-138.
SQL: 1999. Understanding object-relational and other advances
features. Jim Melton Morgan Kauffman, 2002.
SQL99, SQL/MM, and SQLJ: An Overview of the SQL Standards.
Nelson M. Mattos. IBM Database Common Technology, 1999.
www.kybele.urjc.es

Base de Datos @KYBELE

ndice

1. Etapas de diseo
2. Reglas de transformacin
2.1. Clases

2.2. Interrelaciones
2.3. Generalizaciones
2.4. Agregacin/Composicin

3. Ejemplo

www.kybele.urjc.es

Base de Datos @KYBELE

1. Etapas de diseo

Diseo lgico
Diseo conceptual
UML

SQL-92 (BDR)
ODMG (BO)
SQL:2003 (BDOR)

www.kybele.urjc.es

Base de Datos @KYBELE

1. Etapas de diseo

Diseo
Conceptual en
notacin
UML

Diseo estndar
SQL:2003/UML

Diseo especfico
BDOR
(Oracle, DB2...)

www.kybele.urjc.es

Base de Datos @KYBELE

1. Etapas de diseo

Anlisis

Diseo

Implementacin

Diseo Lgico Estndar

Diseo Lgico Especfico

UML

UML

Estereotipos SQL

:2003

Estereotipos Producto

UML
Diagrama de Clases

Diseo Fsico

Especificacin
SQL:2003

www.kybele.urjc.es

Especificacin
en Producto

Implementacin
en Producto con
Optimizacin

Base de Datos @KYBELE

2. Reglas de transformacin

Atributos

Asociaciones

UML

SQL:2003

Oracle10g

Clase

Tipo Estructurado + Tabla


Tipada

Tipo de Objeto + Tabla de Objeto

Multivaluado

Array/Multiset

Varray/Nested Table

Compuesto

ROW/Tipo Estructurado
(Columna)

Tipo de Objeto (Columna)

Calculado

Trigger/Mtodo

Trigger/Mtodo

1a1

Ref/Ref

Ref/Ref

1aN

Ref+ Multiset/Array

Ref+ Nested Table/Varray

NaM

Multiset/Array Multiset/Array

Nested Table/Varray - Nested Table


/Varray

Agregacin

Multiset/Array

Nested Table/Varray of References

Composicin

Multiset/Array

Nested Table/Varray of Objects

Generalizacin

Types/Typed Tables

Types/Typed Tables

www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin

2.1. Clases

1. Tipo estructurado/Tipo objeto


2. Extensin: tabla sobre el tipo

SQL:2003

CREATE TYPE Plano AS


( Plano_Id
Fecha_Fin DATE,
Num_Figuras
Grafico

Plano
<<persistent>>
Plano_Id
Fecha_Fin
Num_Figuras
Grafico

<<udt>>
<<persistent>>

Oracle10g

CREATE TYPE Plano AS OBJECT


( Plano_Id
NUMBER,
Fecha_Fin DATE,
Num_Figuras
NUMBER,
Grafico
BFILE)
/
CREATE TABLE Tabla_Plano OF Plano;

INTEGER,
INTEGER,
BLOB);

CREATE TABLE Tabla_Plano OF Plano;

www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin

2.1. Clases
UML
Atributo
<<PK>>
<<AK>>
<<CA>>
<<MA>>
<<DA>>
Niveles de
visibilidad
<<Mtodo>>

Atributos
SQL:2003
Atributo del tipo
PK en la tabla
UNIQUE en la tabla
Tipo ROW/TO sin extensin
ARRAY/MULTISET
Mtodo / Disparador
---

ORACLE
Atributo del tipo
PK en la tabla
UNIQUE en la tabla
TO sin extensin
VARRAY/NT
Mtodo / Disparador
---

Cabecera del mtodo en el tipo Cabecera del mtodo en el tipo

www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin
2.1. Clases

Claves primarias y alternativas


Figura
<<persistent>>
<<PK>> Figura_Id
<<AK>> Nombre
Color

SQL:2003

CREATE TYPE Figura AS


( Figura_Id
Nombre
Color

INTEGER,
VARCHAR(30),
VARCHAR(15));

CREATE TABLE Tabla_Figura OF Figura


(PRIMARY KEY (Figura_Id),
UNIQUE (Nombre));

www.kybele.urjc.es

Oracle10g

CREATE TYPE Figura AS OBJECT


( Figura_Id
INTEGER,
Nombre
VARCHAR2(30),
Color
VARCHAR2(15))
/
CREATE TABLE Tabla_Figura OF Figura
(PRIMARY KEY (Figura_Id),
UNIQUE (Nombre));

Base de Datos @KYBELE

2. Reglas de transformacin

2.1. Clases

Atributos compuestos
SQL:2003
Linea
<<persistent>>

<<PK>> Linea_Id
<<CA>> Origen
<<CA>> Final
Longitud

Oracle10g

CREATE TYPE T_Coordenada AS


( EjeX INTEGER,
Tipo Estructurado
EjeY INTEGER);
CREATE TYPE Linea AS
( Linea_Id INTEGER,
Origen T_Coordenada,
Destino T_Coordenada,
Longitud Number);
CREATE TABLE Tabla_Linea OF Linea ( PRIMARY
KEY(Linea_Id));

CREATE TYPE T_Coordenada AS OBJECT


( EjeX NUMBER,
Tipo de Objeto
EjeY NUMBER)
/
CREATE TYPE Linea AS OBJECT
( Linea_Id
NUMBER,
Origen
T_Coordenada,
Destino
T_Coordenada,
Longitud
Number)
/
CREATE TABLE Tabla_Linea OF Linea
( PRIMARY KEY(Linea_Id));
www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin
2.1. Clases

Atributos multivaluados

Plano
<<persistent>>
<<PK>> Plano_Id
Fecha_Fin
<<MA>>Arquitectos
Grfico

CREATE TYPE Plano AS


( Plano_Id
INTEGER,
Fecha_Fin
DATE,
Arquitectos
VARCHAR(30) ARRAY[5],
Grfico
BLOB);

SQL:2003

CREATE TABLE Tabla_Plano OF Plano (...);

Diseo estndar
UML

Plano
<<OT>>
<<PK>> Plano_Id
Fecha_Fin
<<Array>>Arquitectos
Grfico

<<udt>>
<<OT>>

Oracle10g

CREATE TYPE Tipo_Nombre


AS VARRAY(5) OF VARCHAR2(30)
/
CREATE TYPE Plano AS OBJECT
( Plano_Id
NUMBER,
Fecha_Fin DATE,
Arquitectos
Tipo_Nombre,
Grfico
BFILE)
/
CREATE TABLE Tabla_Plano OF Plano;

www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin

2.1. Clases

Atributos derivados I

Linea
<<persistent>>
<<PK>> Linea_Id
<<CA>> Origen
<<CA>> Final
<<DA>> Longitud

Diseo estndar
UML

Linea
<<OT>>
<<PK>> Linea_Id
<<CA>> Origen
<<CA>> Final
Longitud
Calc_Longitud

<<udt>>
<<OT>>

SQL:2003

CREATE TYPE Linea AS


( Linea_Id
INTEGER,
Origen
ROW (EjeX INTEGER,EjeY INTEGER),
Destino ROW (EjeX INTEGER,EjeY INTEGER),
Longitud INTEGER,
METHOD Calc_Longitud RETURNS INTEGER);
CREATE METHOD Calc_Longitud FOR Linea
BEGIN
.....
END;

www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin
Atributos derivados II

2.1. Clases
Linea
<<persistent>>
<<PK>> Linea_Id
<<CA>> Origen
<<CA>> Final
<<DA>> Longitud

Diseo estndar
UML

Linea
<<OT>>
<<PK>> Linea_Id
<<CA>> Origen
<<CA>> Final
Longitud
Calc_Longitud

<<udt>>
<<OT>>

Oracle10g

CREATE TYPE T_Coordenada AS OBJECT


( EjeX NUMBER,
EjeY NUMBER)
/
CREATE TYPE T_Linea AS OBJECT
( Linea_Id
NUMBER,
Origen
T_Coordenada,
Destino
T_Coordenada,
Longitud
INTEGER,
MEMBER FUNCTION Calc_Longitud RETURN NUMBER)
/
CREATE OR REPLACE TYPE BODY T_Linea IS
MEMBER FUNCTION Calc_Longitud RETURN NUMBER IS
BEGIN

END Calc_Longitud;
END
/
CREATE TABLE Linea OF T_Linea
( PRIMARY KEY(Linea_Id));
www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin
2.2. Interrelaciones
En OR no es necesario evitar los grupos repetitivos.
Las asociaciones pueden implementarse en uno u otro sentido (o
ambos) independiente de las cardinalidades uso de referencias y
tipos de objetos.

Se pueden representar asociaciones:


oUnidireccionales
mayor tiempo de respuesta en consultas
menor tiempo de mantenimiento
oBidireccionales:
menor tiempo de respuesta en consultas
mayor coste de mantenimiento
www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin
2.2. Interrelaciones

SQL: 2003

1:1

REF en cada tipo de objeto que participa en la relacin.


Cardinalidad mnima 1 NOT NULL
1:N
REF en el tipo de objeto de cardinalidad N + ARRAY/ MULTISET de
REF en el tipo de objeto de cardinalidad 1.
Cardinalidad mnima 1 NOT NULL
N:M
ARRAY/MULTISET de REF en cada tipo de objeto implicado
en la
relacin
ORACLE10g
1:1
REF en cada tipo de objeto que participa en la relacin.
Cardinalidad mnima 1 NOT NULL
1:N
REF en el tipo de objeto de cardinalidad N + VARRAY /NESTED
TABLE de REF en el tipo de objeto de
cardinalidad 1.
Cardinalidad mnima 1 NOT NULL
N:M
VARRAY/NESTED TABLE de REF en cada tipo de objeto
implicado en la relacin
www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin

2.2. Interrelaciones
Jefe Proyecto
<<persistent>>
<<PK>> Codigo_Id
<<AK>> Nombre
Telefono

Proyecto
<<persistent>>

1:1
1..1

0..1

<<PK>> Proyecto_Id
<<AK>> Nombre
Fecha_Fin

Diseo estndar
UML
Jefe Proyecto
<<OT>>
<<PK>> Codigo_Id
<<unique>> Nombre
Telefono
<<Ref>> Dirige:{Proyecto}

<<udt>>
<<OT>>

<<Composes>>

<<Composes>>

www.kybele.urjc.es

Proyecto
<<OT>>

<<udt>>
<<OT>>

<<PK>> Proyecto_Id
<<unique>> Nombre
Fecha_Fin
<<NOT NULL>> <<Ref>> Dirigido_Por:{JefeProyecto}

Base de Datos @KYBELE

2. Reglas de transformacin
2.2. Interrelaciones
Jefe Proyecto
<<OT>>
<<PK>> Codigo_Id
<<unique>> Nombre
Telfono
<<Ref>> Dirige:{Proyecto}

Proyecto
<<OT>>
<<PK>> Proyecto_Id
<<unique>> Nombre
Fecha_Fin
<<NOT NULL>>
<<Ref>> Dirigido_Por:{JefeProyecto}

<<udt>>

<<udt>>

<<OT>>

<<OT>>

<<Composes>>

<<Composes>>

SQL:2003

CREATE TYPE Jefe_Proyecto AS


(Codigo_Id
NUMBER,
Nombre
VARCHAR (30),
Telefono
NUMBER,
Dirige
REF Proyecto);

CREATE TYPE Proyecto AS


( Proyecto_Id NUMBER,
Nombre
VARCHAR (30),
Fecha_Fin
DATE,
Dirigido_Por REF Jefe_Proyecto);

CREATE TABLE T_Jefe_Proyecto OF Jefe_Proyecto


(Codigo_id PRIMARY KEY,
Nombre UNIQUE);

CREATE TABLE T_Proyecto OF Proyecto


(Proyecto_ID PRIMARY KEY,
Nombre UNIQUE,
Dirigido_Por NOT NULL);

www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin
2.2. Interrelaciones
Jefe Proyecto
<<OT>>
<<PK>> Codigo_Id
<<unique>> Nombre
Telfono
<<Ref>> Dirige:{Proyecto}

Proyecto
<<OT>>
<<PK>> Proyecto_Id
<<unique>> Nombre
Fecha_Fin
<<NOT NULL>>
<<Ref>> Dirigido_Por:{JefeProyecto}

<<udt>>

<<udt>>

<<OT>>

<<OT>>

<<Composes>>

<<Composes>>

Oracle10g

CREATE OR REPLACE TYPE Jefe_Proyecto AS OBJECT


(Codigo_Id NUMBER,
Nombre
VARCHAR2(30),
Telefono
NUMBER,
Dirige
REF Proyecto)
/

CREATE OR REPLACE TYPE Proyecto AS OBJECT


( Proyecto_Id NUMBER,
Nombre
VARCHAR2(30),
Fecha_Fin
Date,
Dirigido_Por REF Jefe_Proyecto)
/

CREATE TABLE T_Jefe_Proyecto


OF Jefe_Proyecto
(Codigo_id PRIMARY KEY,
Nombre UNIQUE);

CREATE TABLE T_Proyecto OF Proyecto


(Proyecto_ID PRIMARY KEY,
Nombre UNIQUE,
Dirigido_Por NOT NULL);

www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin
2.2. Interrelaciones
Figura
<<persistent>>

Plano
<<persistent>>
1..1

<<PK>> Figura_Id
<<AK>> Nombre
Color

1..*

<<PK>> Figura_Id
<<MA>> Arquitectos
<<DA>> Num_Figuras

SQL:2003
Figura
<<OT>>

<<udt>>
<<persistent>>

<<PK>> Figura_Id
<<UNIQUE>> Nombre
Color
<<NOT NULL>><<Ref>>Pertenece_a:{Plano}

<<Composes>>

<<Composes>>

Plano
<<OT>>

<<PK>> Plano_Id
<<ARRAY>> Arquitectos :{5, VARCHAR(20)}
Num_Figuras
<<NOT NULL>><<MULTISET>>Tiene_Fig:{<<Ref>>:{Figura}}

CREATE TYPE Figura AS


( Figura_Id
INTEGER,
Nombre
VARCHAR(30),
Color
VARCHAR(10),
Plano_Pert
REF (Plano));

CREATE TYPE Plano AS


( Plano_Id
INTEGER,
Arquitectos VARCHAR(30) ARRAY[5],
Num_Figuras INTEGER,
Tiene_Fig
REF(Figura) MULTISET);

CREATE TABLE Tabla_Figura OF Figura


(Figura_id PRIMARY KEY,
Nombre UNIQUE,
Plano_Pert NOT NULL);

CREATE TABLE Tabla_Plano OF Plano


(Plano_id PRIMARY KEY,
Tiene_Fig NOT NULL);

www.kybele.urjc.es

<<udt>>
<<persistent>>

Base de Datos @KYBELE

2. Reglas de transformacin
Figura
<<persistent>>

<<udt>>
<<persistent>>

<<PK>> Figura_Id
<<UNIQUE>> Nombre
Color
<<NOT NULL>><<Ref>>Plano_Pert:{Plano}
Perimetro()
Area()

<<Composes>>

<<udt>>
<<persistent>>

<<PK>> Figura_Id
<<array>> Arquitectos: {5, varchar(30)}
<<NOT NULL>><<Array>>Tiene_Fig:{100, <<Ref>>:{Figura}
<<trigger>> Num_Figuras

Oracle10g

2.2. Interrelaciones

NT_Figura
<<NT>>

<<Composes>>

Figura
<<OT>>

Plano
<<persistent>>

<<Composes>>

<<Ref>>:{Figura}

<<Composes>>

<<udt>>
<<OT>>

<<PK>> Figura_Id
<<UNIQUE>> Nombre
Color
<<NOT NULL>><<Ref>>Plano_Pert:{Plano}

Plano
<<OT>>

<<Composes>>

<<udt>>
<<OT>>

<<PK>> Figura_Id
<<varray>> Arquitectos: {5, VARCHAR2(30)}
Tiene_Fig: NT_Figura
<<trigger>> Num_Figuras

CREATE OR REPLACE TYPE Figura AS OBJECT


(Figura_Id
NUMBER,
Nombre
VARCHAR2(30),
Color
VARCHAR2(10),
Plano_Pert
REF Plano)
/
CREATE TYPE NT_Figura AS TABLE OF REF Figura
/
CREATE TABLE T_Figura OF Figura{....};

CREATE OR REPLACE TYPE Plano AS OBJECT


( Plano_Id
NUMBER,
Num_Figuras NUMBER,
Arquitectos
Tipo_Nombres,
Tiene_Fig
NT_Figura)
/
CREATE TABLE T_Plano OF Plano
nested table Tiene_Fig store AS T_Lista_Figura;

www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin
2.3. Generalizacin

Figura
<<persistent>>
Figura_Id
Nombre
Color
Perimetro()
Area()

Poligono
<<persistent>>
Numero_Lineas
<<redef>>Area()

SQL:2003

CREATE TYPE Figura AS


(Figura_Id INTEGER,
Nombre VARCHAR(30),
Color VARCHAR(10)
INSTANTIABLE NOT FINAL
METHOD Perimetro() RETURNS INTEGER,
METHOD Area() RETURNS INTEGER);
CREATE TABLE Tabla_Figura OF Figura;

CREATE TYPE Poligono UNDER Figura AS


(Numero_Lineas INTEGER
INSTANTIABLE FINAL
OVERRIDING METHOD Area() RETURNS INTEGER);
CREATE TABLE Tabla_Poligono OF Poligono UNDER Tabla_Figura;
www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin
2.3. Generalizacin
Oracle 8i NO soporta herencia por lo que las
generalizaciones se implementan siguiendo el mismo
procedimiento que se utilizaba en relacional, mediante
claves ajenas.

Oracle 9i y 10g S soportan herencia, pero solo de tipos.


No soporta herencia de tablas.
No se propagan las restricciones definidas sobre las
tablas (Primary Keys, Forgein Keys )
Las filas insertadas correspondiente al subtipo no
pertenencen automticamente a las tablas del
supertipo.
www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin
2.3. Generalizacin

Figura
<<persistent>>
Figura_Id
Nombre
Color
Perimetro()
Area()

Poligono
<<persistent>>
Numero_Lineas
<<redef>>Area()

Oracle 10g

CREATE OR REPLACE TYPE Figura AS


( Figura_Id NUMBER,
Nombre VARCHAR2(30),
Color
VARCHAR2(10),
MEMBER FUNCTION Perimetro() RETURNS NUMBER,
MEMBER FUNCTION Area()
RETURNS NUMBER)
INSTANTIABLE NOT FINAL
/
CREATE TABLE T_Figura OF Figura;
CREATE
TYPE Poligono
UNDER Figura
CREATE
TYPE Tipo_Figura
AS AS
( Num_Lineas
TABLE OF Ref Figura;NUMBER,
INSTANTIABLE FINAL
OVERRIDING MEMBER FUNCTION Area()
/
CREATE TABLE Tabla_Poligono OF Poligono;
www.kybele.urjc.es

RETURNS NUMBER)

Base de Datos @KYBELE

2. Reglas de transformacin
2.4. Agregacin
Proyecto
<<persistent>>

Plano
<<persistent>>
1..*

<<PK>> Proyecto_Id
<<AK>> Nombre

<<PK>> Plano_Id
<<MA>> Arquitectos
<<DA>> Num_Figuras

SQL:2003
Proyecto
<<OT>>

<<udt>>

Plano
<<OT>>

<<OT>>

<<PK>> Proyecto_Id
<<UNIQUE>> Nombre
<<MULTISET>>Tiene_Plano:{<<Ref>>:{Plano}}

<<Composes>>

<<udt>>
<<OT>>

<<PK>> Plano_Id
<<array>> Arquitectos:{5,varchar(30)}
<<trigger>> Num_Figuras

CREATE TYPE Proyecto AS


( Proyecto_Id
INTEGER,
Nombre
VARCHAR(30),
Tiene_Plano
REF(Plano) MULTISET);
CREATE TABLE Tabla_Proyecto OF Proyecto
(PRIMARY KEY (Proyecto_Id)
UNIQUE
nombre);
www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin
2.4. Agregacin

Oracle10g

NT_Planos
<<NT>>
<<Ref>>:{Plano}

<<Composes>>

Proyecto
<<OT>>
<<PK>> Proyecto_Id
<<UNIQUE>> Nombre
Tiene_Plano: NT_Plano

<<Composes>>
Plano
<<OT>>

<<udt>>
<<OT>>

<<udt>>
<<OT>>

<<PK>> Plano_Id
<<varray>> Arquitectos :{5,varchar(30)}
<<trigger>> Num_Figuras

CREATE TYPE Proyecto AS OBJECT


( Proyecto_Id NUMBER,
Nombre
VARCHAR2(30),
Tiene_Plano NT_Planos)
/
CREATE TABLE T_Proyecto OF Proyecto
(PRIMARY KEY (Proyecto_ID),
UNIQUE (Nombre))
NESTED TABLE Tiene_Plano
STORE AS Tabla_Planos;

CREATE TYPE Plano AS OBJECT


(Plano_ID
NUMBER,
Fecha_Fin
DATE,
Num_Figuras NUMBER,
Arquitectos Tipo_Nombre)
/
CREATE TABLE T_Plano OF Plano
(PRIMARY KEY (Plano_Id));
CREATE OR REPLACE TYPE NT_Planos
AS TABLE OF REF Plano
/
www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin

2.5. Composicin
Linea
<<persistent>>

Poligono
<<persistent>>
1..*
Poligono_Id
Num_Lineas

SQL:2003

Poligono
<<persistent>>
Poligono_Id
Num_Lineas
<<MULTISET>>Tiene_Lineas:{Linea}

<<PK>> Linea_Id
Origen
Final
Longitud

Linea
<<udt>>

<<udt>>
<<persistent>>

<<Composes>>

Linea_Id
Origen
Final
Longitud

CREATE TYPE Linea AS


(Linea_ID NUMBER, );
CREATE TYPE Poligono AS
( Poligono_ID
NUMBER,
Num_Lineas
INTEGER,
Tiene_Lineas
Linea MULTISET) );
CREATE TABLE Tabla_Poligono OF Poligono();
www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin
Oracle 10g

2.5. Composicin

NT_Lineas
<<NT>>
<<Composes>>

Poligono
<<persistent>>

{Linea}

<<Composes>>

Linea
<<udt>>

<<udt>>
<<persistent>>

Num_Lineas
Tiene_Lineas: NT_Lineas

<<PK>> Linea_Id
Origen
Final
Longitud

CREATE TYPE Linea AS OBJECT


(Linea_ID NUMBER, )
/
CREATE OR REPLACE TYPE NT_Lineas AS TABLE OF Linea
/
CREATE TYPE Poligono AS OBJECT
(Poligono_Id
NUMBER,
Numero_Lineas
NUMBER,
Tiene_Lineas
NT_Lineas)
/
CREATE TABLE T_Poligono OF Poligono
(PRIMARY KEY (Poligono_ID))
NESTED TABLE Tiene_Lineas STORE AS Tabla_Lineas;
www.kybele.urjc.es

Base de Datos @KYBELE

3. Ejemplo
Diagrama de clases UML
JefeProyecto
<<persistent>>
<<PK>> Cod_JefeProyecto
<<AK>> Nombre
<<CA>> Direccion: {Tipo_Via, Nombre_Via,
Poblacion, CP, Provincia}
Telefono

Proyecto
<<persistent>>

dirige
0..1

<<PK>> Cod_Proyecto
Nombre

1..*
Figura
<<persistent>>
<<PK>> Figura_Id
<<AK>> Nombre
Color

Plano
<<persistent>>
tiene
0..*

1..1

<<PK>> Cod_Plano
Fecha_Entrega
<<MA>> Arquitectos
Dibujo_Plano
<<DA>> Num_Figuras

Linea
<<persistent>>

Poligono
<<persistent>>

<<PK>> Id_Linea
<<DA>> Longitud
<<MA>><<CA>> Puntos: {Coord_X, CoordY}

Num_Lineas
1..*

www.kybele.urjc.es

Base de Datos @KYBELE

3. Ejemplo
Modelo Lgico Estndar: SQL:2003

Tipo_Direccion
<<udt>>
Tipo_Via
Nombre_Via
Poblacion
CP
Provincia

JefeProyecto
<<persistent>>
<<Composes>>

Proyecto
<<persistent>>

<<udt>>
<<persistent>>

<<PK>> Cod_JefeProyecto
<<UNIQUE>> Nombre
Direccion: Tipo_Direccion
Telefono
<<Ref>> Dirige: {Proyecto}

<<Composes>>

<<Composes>>

<<udt>>
<<persistent>>

<<PK>> Cod_Proyecto
Nombre
<<NOT NULL>> <<Ref>> Dirigido_Por: {JefeProyecto}
<<Multiset>>Tiene_Planos: {<<Ref>> Plano}

<<Composes>>

Figura
<<persistent>>

<<Composes>>

<<PK>> Cod_Figura
Nombre
Color
<<NOT NULL>><<Ref>>Plano_Pert: {Plano}
<<Trigger>>ActualizarNumFiguras

Poligono
<<persistent>>
Num_Lineas
<<Multiset>>Tiene_Lineas: {Linea}

Plano
<<persistent>>

<<udt>>
<<persistent>>

<<PK>> Cod_Plano
Fecha_Entrega
<<Array>> Arquitectos: {10, VARCHAR(15)}
Dibujo_Plano
Num_Figuras
<<Multiset>>Tiene_Fig: {<<Ref>> Figura}

<<Composes>>

Linea
<<persistent>>

<<udt>>
<<persistent>>

<<Composes>>

<<udt>>
<<persistent>>

<<PK>> Id_Linea
<<Array>>Tiene_Puntos: {2, Punto}

<<Composes>>

Punto
<<udt>>
Coord_X
Coord_Y

Longitud()

www.kybele.urjc.es

Base de Datos @KYBELE

3. Ejemplo
Modelo Lgico Especfico: Oracle 10g
JefeProyecto
<<OT>>

Tipo_Direccion
<<udt>>
Tipo_Via
Nombre_Via
Poblacion
CP
Provincia

<<udt>>
<<persistent>>

<<Composes>>

<<PK>> Cod_JefeProyecto
<<UNIQUE>> Nombre
Direccion: Tipo_Direccion
Telefono
<<Ref>> Dirige:{Proyecto}

<<Composes>>

Proyecto
<<OT>>

<<udt>>
<<persistent>>

<<Composes>>

<<PK>> Cod_Proyecto
1..*
Nombre
<<NOT NULL>><<Ref>> Dirigido_Por: {JefeProyecto}
Tiene_Planos: NT_Planos

<<Composes>>
Tipo_Nombres
<<VARRAY>>

<<udt>>
<<persistent>>

NT_Planos
<<NT>>

VARCHAR2(15) [10]

<<PK>> Cod_Figura
Nombre
Color
<<NOT NULL>> <<Ref>>Plano_Pert: {Plano}

<<Ref>> {Plano}
<<Composes>>

NT_Figuras
<<NT>>

<<Trigger>>ActualizarNumFiguras

<<Composes>>

<<Ref>> {Figura}
<<Composes>>
<<udt>>
<<persistent>>

Num_Lineas
Tiene_Lineas: NT_Lineas
<<NOT NULL>> <<Ref>> Es_Figura:{Figura}

Linea
<<udt>>

NT_Lineas
<<NT>>
Linea

<<udt>>
<<persistent>>

Id_Linea
Tiene_Puntos: Tipo_Puntos
Longitud()

<<Composes>>

Plano
<<OT>>

<<PK>> Cod_Plano
Fecha_Entrega
Arquitectos: Tipo_Nombres
Dibujo_Plano
Num_Figuras
Tiene_Fig:NT_Figuras

<<Composes>>
Poligono
<<OT>>

<<Composes>>

<<Composes>>

Tipo_Puntos
<<VARRAY>>

<<Composes>>
<<Composes>>
www.kybele.urjc.es

Punto [2]

<<Composes>>

Figura
<<OT>>

Punto
<<udt>>
Coord_X
Coord_Y
Base de Datos @KYBELE

3. Ejemplo
Diagrama de clases UML
Profesor
<<persistent>>
<<PK>> Profesor_ID
Nombre
<<CA>> Direccin
E-Mail

Aula
<<persistent>>

ReservarAula
reserva

reservado_por

0..1

<<PK>> Aula_ID
Edificio
Campus
Estado

ReservarAula()

Tiene

0..*
Estudiante
<<persistent>>
<<PK>> Estudiante_ID
Nombre
<<CA>> Direccin
E-Mail

Ordenador
<<persistent>>

ReservarOrdenador
*

reserva
reservado_por

<<PK>> Ordenador_ID
Estado

ReservarOrdenador()

www.kybele.urjc.es

Base de Datos @KYBELE

Das könnte Ihnen auch gefallen