Sei sulla pagina 1di 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
Diseo Lgico Estndar

Implementacin
Diseo Lgico Especfico

UML
+

UML
+

Estereotipos SQL UML Diagrama de Clases

:2003

Estereotipos Producto
Diseo Fsico

Especificacin SQL:2003

Especificacin en Producto

Implementacin en Producto con Optimizacin

www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin

UML
Clase Multivaluado Atributos Compuesto Calculado 1a1 1aN Asociaciones

SQL:2003
Tipo Estructurado + Tabla Tipada Array/Multiset ROW/Tipo Estructurado (Columna) Trigger/Mtodo Ref/Ref Ref+ Multiset/Array

Oracle10g
Tipo de Objeto + Tabla de Objeto Varray/Nested Table Tipo de Objeto (Columna) Trigger/Mtodo Ref/Ref Ref+ Nested Table/Varray

NaM
Agregacin Composicin Generalizacin

Multiset/Array Multiset/Array
Multiset/Array Multiset/Array Types/Typed Tables

Nested Table/Varray - Nested Table /Varray


Nested Table/Varray of References Nested Table/Varray of Objects 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


Plano <<persistent>> Plano_Id Fecha_Fin Num_Figuras Grafico
<<udt>> <<persistent>>

SQL:2003

Oracle10g

CREATE TYPE Plano AS ( Plano_Id Fecha_Fin DATE, Num_Figuras Grafico

INTEGER, INTEGER, BLOB);

CREATE TABLE Tabla_Plano OF Plano;

CREATE TYPE Plano AS OBJECT ( Plano_Id NUMBER, Fecha_Fin DATE, Num_Figuras NUMBER, Grafico BFILE) / 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

Oracle10g

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

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

www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin

2.1. Clases

Atributos compuestos SQL:2003


Linea <<persistent>>

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

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

Oracle10g

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


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

Atributos multivaluados
CREATE TYPE Plano AS ( Plano_Id INTEGER, Fecha_Fin DATE, Arquitectos VARCHAR(30) ARRAY[5], Grfico BLOB); CREATE TABLE Tabla_Plano OF Plano (...);

SQL:2003

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
Linea <<persistent>> <<PK>> Linea_Id <<CA>> Origen <<CA>> Final <<DA>> Longitud

Atributos derivados I

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 2.1. Clases


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

Atributos derivados II
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

Diseo estndar UML

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

<<udt>> <<OT>>

Oracle10g

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


1:1 SQL: 2003

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

1:1
1..1 0..1

Proyecto <<persistent>> <<PK>> Proyecto_Id <<AK>> Nombre Fecha_Fin

Diseo estndar UML


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

<<udt>> <<OT>>

<<udt>> <<OT>>

<<Composes>>

<<Composes>>

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

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}
<<udt>> <<OT>>

<<Composes>>

<<Composes>>

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

<<udt>>

SQL:2003

CREATE TYPE Jefe_Proyecto AS (Codigo_Id NUMBER, Nombre VARCHAR (30), Telefono NUMBER, Dirige REF Proyecto); CREATE TABLE T_Jefe_Proyecto OF Jefe_Proyecto (Codigo_id PRIMARY KEY, Nombre UNIQUE);

CREATE TYPE Proyecto AS ( Proyecto_Id NUMBER, Nombre VARCHAR (30), Fecha_Fin DATE, Dirigido_Por REF Jefe_Proyecto); 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}
<<udt>> <<OT>>

<<Composes>>

<<Composes>>

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

<<udt>>

Oracle10g

CREATE OR REPLACE TYPE Jefe_Proyecto AS OBJECT (Codigo_Id NUMBER, Nombre VARCHAR2(30), Telefono NUMBER, Dirige REF Proyecto) / CREATE TABLE T_Jefe_Proyecto OF Jefe_Proyecto (Codigo_id PRIMARY KEY, Nombre UNIQUE);

CREATE OR REPLACE TYPE Proyecto AS OBJECT ( Proyecto_Id NUMBER, Nombre VARCHAR2(30), Fecha_Fin Date, Dirigido_Por REF Jefe_Proyecto) / 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>>
<<PK>> Figura_Id <<AK>> Nombre Color 1..1 1..*

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

SQL:2003
Figura <<OT>>
<<udt>> <<persistent>>

<<Composes>>

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

Plano <<OT>>

<<udt>> <<persistent>>

<<Composes>>

<<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 TABLE Tabla_Figura OF Figura (Figura_id PRIMARY KEY, Nombre UNIQUE, Plano_Pert NOT NULL);

CREATE TYPE Plano AS ( Plano_Id INTEGER, Arquitectos VARCHAR(30) ARRAY[5], Num_Figuras INTEGER, Tiene_Fig REF(Figura) MULTISET); CREATE TABLE Tabla_Plano OF Plano (Plano_id PRIMARY KEY, Tiene_Fig NOT NULL);

www.kybele.urjc.es

Base de Datos @KYBELE

2. Reglas de transformacin
Figura <<persistent>>
<<udt>> <<persistent>>

<<Composes>>

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

Plano <<persistent>>

<<udt>> <<persistent>>

<<Composes>>

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

Oracle10g
NT_Figura <<NT>> <<Ref>>:{Figura}

2.2. Interrelaciones
<<Composes>>

<<Composes>>

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

<<udt>> <<OT>>

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

<<udt>> <<OT>>

<<Composes>>

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{....};
www.kybele.urjc.es

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;

Base de Datos @KYBELE

2. Reglas de transformacin
Figura <<persistent>> Figura_Id Nombre Color Perimetro() Area()

2.3. Generalizacin
SQL:2003

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

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
Figura <<persistent>> Figura_Id Nombre Color Perimetro() Area()

2.3. Generalizacin
Oracle 10g

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

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 NUMBER, TABLE OF Ref Figura; 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>> <<PK>> Proyecto_Id <<AK>> Nombre 1..* Plano <<persistent>> <<PK>> Plano_Id <<MA>> Arquitectos <<DA>> Num_Figuras

SQL:2003
Proyecto <<OT>>
<<udt>> <<OT>>

Plano <<OT>> <<Composes>>

<<udt>> <<OT>>

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

<<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
Oracle10g
<<Composes>>

2.4. Agregacin
NT_Planos <<NT>> <<Ref>>:{Plano} <<Composes>> Plano <<OT>>
<<udt>> <<OT>>

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

<<udt>> <<OT>>

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

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

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;

Base de Datos @KYBELE

2. Reglas de transformacin

2.5. Composicin
Poligono <<persistent>> 1..* Poligono_Id Num_Lineas Linea <<persistent>> <<PK>> Linea_Id Origen Final Longitud

SQL:2003

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

<<udt>> <<persistent>>

Linea <<udt>> <<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


<<Composes>> {Linea} Poligono <<persistent>> Num_Lineas Tiene_Lineas: NT_Lineas NT_Lineas <<NT>> <<Composes>>

2.5. Composicin

<<udt>> <<persistent>>

Linea <<udt>> <<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 dirige 1 0..1 Proyecto <<persistent>> <<PK>> Cod_Proyecto Nombre

1..* Figura <<persistent>> <<PK>> Figura_Id <<AK>> Nombre Color tiene 0..* 1..1 Plano <<persistent>> <<PK>> Cod_Plano Fecha_Entrega <<MA>> Arquitectos Dibujo_Plano <<DA>> Num_Figuras

Poligono <<persistent>> Num_Lineas 1..*

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

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 <<Composes>>

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

<<udt>> <<persistent>>

<<Composes>>

Proyecto <<persistent>>

<<udt>> <<persistent>>

<<Composes>>

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

<<Composes>>

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

<<udt>> <<persistent>>

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

<<udt>> <<persistent>>

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

<<udt>> <<persistent>>

Linea <<persistent>> <<Composes>> <<PK>> Id_Linea <<Array>>Tiene_Puntos: {2, Punto} Longitud()

<<Composes>>

Punto <<udt>> Coord_X Coord_Y

www.kybele.urjc.es

Base de Datos @KYBELE

3. Ejemplo Modelo Lgico Especfico: Oracle 10g


Tipo_Direccion <<udt>> Tipo_Via Nombre_Via Poblacion CP Provincia <<Composes>> JefeProyecto <<OT>> <<PK>> Cod_JefeProyecto <<UNIQUE>> Nombre Direccion: Tipo_Direccion Telefono <<Ref>> Dirige:{Proyecto}
<<udt>> <<persistent>>

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

<<udt>> <<persistent>>

<<Composes>> Figura <<OT>> <<PK>> Cod_Figura Nombre Color <<NOT NULL>> <<Ref>>Plano_Pert: {Plano} <<Trigger>>ActualizarNumFiguras
<<udt>> <<persistent>>

Tipo_Nombres <<VARRAY>> VARCHAR2(15) [10] <<Composes>> <<Composes>>

NT_Planos <<NT>> <<Ref>> {Plano} <<Composes>> Plano <<OT>>


<<udt>> <<persistent>>

NT_Figuras <<NT>>
<<Ref>> {Figura} <<Composes>>

<<Composes>>

<<Composes>> Poligono <<OT>>


<<udt>> <<persistent>>

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

Linea <<udt>>
Id_Linea Tiene_Puntos: Tipo_Puntos Longitud()

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

<<Composes>>

<<Composes>>

NT_Lineas <<NT>> Linea

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

Tipo_Puntos <<VARRAY>> Punto [2]

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 ReservarAula() reserva 0..1 ReservarAula reservado_por Aula <<persistent>> <<PK>> Aula_ID Edificio Campus Estado

Tiene

0..*
Estudiante <<persistent>> <<PK>> Estudiante_ID Nombre <<CA>> Direccin E-Mail ReservarOrdenador() reserva * reservado_por ReservarOrdenador * Ordenador <<persistent>> <<PK>> Ordenador_ID Estado

www.kybele.urjc.es

Base de Datos @KYBELE

Potrebbero piacerti anche