Diseño de BD Objeto- Relacionales



Documentos relacionados
Temario. Base de

EXAMEN: BASES DE DATOS 4º Ingeniería Informática (29 de enero de 2009)

Temario. Base de

Recuperación del Sistema

1. Bases de Datos Objeto-Relacionales: BDOR. Tecnología BDOR de Oracle.

Tema 9. Bases de Datos Objeto-Relacionales en Oracle Introducción. 2. Tipos de Datos Definidos por el Usuario

SQL: Consultas. Fragmento del original: Asignatura: Sistemas de Información, Tema 2 José Ramón Ríos Viqueira Curso

EXAMEN: BASES DE DATOS 4º Ingeniería Informática (31 de enero de 2008)

BASES DE DATOS OBJETO-RELACIONALES

LENGUAJE ESTRUCTURADO DE CONSULTAS SQL (2)

ELEMENTOS DE BASES DE DATOS. Bases de Datos + Orientación a Objetos. Clase 23:

Diseño de bases de datos

Examen de Ficheros y bases de datos ( ) Convocatoria de febrero I PARCIAL

BASES DE DATOS. Ingeniería Informática 4º Curso Asignatura obligatoria.

Transformación de Modelos para el Desarrollo de Bases de Datos Objeto-Relacionales

El Lenguaje SQL TEMA V. Grupo de Bas ses de Datos Avanzadas Univ. Carlo os III de Madrid. V.1 SQL como Lenguaje de Definición de Datos

Bases de Datos OO y Objeto. Bases de Datos Avanzadas Curso 2010/2011

Introducción a los Sistemas de Gestión de Bases de Datos

SQL y XML en Oracle XE 11g. Laboratorio de Bases de datos Jonathan Medina Gómez

qwertyuiopasdfghjklzxcvbnmqwer tyuiopasdfghjklzxcvbnmqwertyuiopa sdfghjklzxcvbnmqwertyuiopasdfghjkl zxcvbnmqwertyuiopasdfghjklzxcvbn

Otros objetos de Base de Datos

SQL. (...la guía básica de supervivencia de dmi) Universidad de los Andes Demián Gutierrez Enero

Bases de Datos SQL - Ejemplos

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

Análisis y Diseño. Guía Teórica desarrollada por el profesor del curso: Modelo Físico. Ing. Daniel Yucra danielyucra@uigv.edu.pe

Programación SQL. Lucio Salgado Diciembre 2008

Bases de datos relacionales y el modelo entidad-relación

Formato para prácticas de laboratorio

Administradores de Bases de Datos Studio.NET 2005 Y SQL Server Barrios

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

Bases de Datos: Structured Query Language (SQL)

PRÁCTICA III. DISPARADORES EN SQL (II)

Ingeniería en Sistemas Computacionales

Bases de Datos Avanzadas

Bases de Datos Ejercicio Número 2 Bogotá, Diciembre 5 de 2013

BASES DE DATOS AVANZADAS Transacciones en MYSQL

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ACATLÁN HORAS SEMANA

Nombre de la materia. Nombre del docente. Lic. Carlos Gonzales Gonzale. Nombre de la práctica Practica 2. Nombre del alumno. Román Gutiérrez Sosa

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008

INST Estándar Codificación SQL y PL-SQL

Funciones y TriggersIntroducción, Ejemplos

Lic. Vladimir Cotaquispe Gutierrez PROGRAMACIÓN PL/SQL I - 1. Copyright 2008, Oracle. All rights reserved.

Oracle Básico PL/SQL

BASES DE DATOS - SQL. Javier Enciso

Tema 2 Modelos de Base de Datos. Profesor Luis Gmo. Zúñiga Mendoza UMCA

Repaso de Conceptos Básicos de Bases de Datos

LENGUAJE SQL. Bárbula, Febrero de Historia y Definición

ADMINISTRACIÓN DE BASE DE DATOS

Formato para prácticas de laboratorio

BASES DE DATOS ORIENTADAS A OBJETOS

Disparadores en Oracle (Ejemplos Prácticos)

Formatos para prácticas de laboratorio

Formato para prácticas de laboratorio

Estándar de desarrollo de aplicaciones del Govern de les Illes Balears

Bases de datos objeto-relacionales

Departamento de Lenguajes y Sistemas Informáticos

El usuario puede utilizar esta tabla derivada como una tabla más, en sus consultas.

Permite definir cada relación que pertenece a la base de datos relacional, incluyendo:

Los paquetes tienen dos partes: una especificación y un cuerpo que están almacenados por separado en la base de datos.

Integridad en sistemas de bases de datos relacionales

PL/PGSQL. Extensión "procedural" de SQL

m047a Curso Programando una Base de Datos SQL Server 2008, 36 h Creación B.D. y Constraints

Administración Básica de Oracle9i.

ANEXO2 PLATAFORMA VIRTUAL DE APRENDIZAJE COLABORATIVO BASADO EN LA METODOLOGÍA POL. (PLAPOL+) Carlos Andrés Moreno Mayor Fernando José García Cabal

LABORATORIO 2. POSTGRE SQL - BASE DE DATOS SECRETARIA DE HACIENDA

Trabajos de Ampliación. Bases de datos NoSQL.

Motores de Base de Datos Libres: Postgresql y MySql. Ing. Ricardo Naranjo Faccini, M.Sc

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

Haga clic para PostgreS cambiar el estilo

1. Se usará la Base de Datos llamada. 2. Borrar la tabla CtasBanc anterior y crearla: 5.1 Procedimientos y Funciones Almacenados SQL Server

mysql Departamento de Lenguajes y Computación Universidad de Almería mysql Contenidos

Bases de Datos Avanzadas

Enlaces relacionados:

PHP Y BASES DE DATOS. Introducción a SQL

Seguridad en Bases de Datos

OBJETIVOS METODOLOGÍA PROCEDIMIENTO 1.- Trabajo con el servidor de bases de datos Sybase

Base de Datos SQL Server

Temario. Tema 5. Bases de Datos Activas Tema 6. Disparadores en Oracle Prácticas de Disparadores en Oracle III. BD Semiestructuradas

SQL: Vistas, Triggers, y Procedimientos Almacenados

Departament d Informàtica BASES DE DATOS OBJETO-RELACIONALES. Wladimiro Díaz Villanueva

Software para la Manipulación de Bases de Datos Espaciales PostGIS PGVisualizer

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

Base de datos I Facultad de Ingeniería. Escuela de computación.

UNIVERSIDAD DEL CARIBE UNICARIBE. Escuela de Informática. Programa de Asignatura

Administración de Bases de Datos

TRANSACT-SQL, DISEÑO Y PROGRAMACIÓN DE BASES DE DATOS EN SQL SERVER 2008

Tema: Procedimientos almacenados y cursores. Facultad : Ingeniería Escuela : Computación Asignatura: SQL SERVER. GUÍA 2 Pág. 1

4- Uso de sentencias para el envió y extracción de datos

GALA CONCEPTO COMMIT, ROOLBACK SAVEPOINTS (SAVE TRANSACTION) No Consultas. Definiciones Transacciones ( L33 )

Aplicaciones de las vistas Concepto de vista Vistas en SQL Vistas en SQL.

Triggers 24/12/2016. Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos. Triggers en Oracle

Acceso a bases de datos MySQL con PHP

Funciones y paquetes PL/SQL. Jonathan Medina Gómez Facultad de ingeniería Universidad de Antioquia

Tarea del 12 de enero de Tarea del 19 de enero de Crear su página web. Por ejemplo, en jimdo.com

RESTRICCIONES DE DOMINIOS

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento

Structured Query Language. Práctica

Transcripción:

Diseño de BD Objeto- Relacionales Universidad Rey Juan Carlos Belén Vela Bibliografía Tecnología y Diseño 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. A Methodological Approach for Object-Relational Database Design. E. Marcos, B. Vela, J.M. Cavero. SOSYM (Journal on Software and System Modeling), Vol. 2 (1). Ed. Springer Verlag. Editores B. Rumpe y R. France. Marzo, 2003, pp. 59-72. Database Design for Smarties. J. Muller, Morgan Kaufmann, 1999. 8. Diseño de BD con UML. Dorsey, P., Hudicka, J.R. Press, Mc. Graw Hill. 1999. 8. Object-Oriented Design. David A. Anstey. Coriolis, 1998.

Índice de Contenido 1. Etapas de diseño 2. Reglas de transformación 2.1. Clases 2.2. Interrelaciones 2.3. Generalizaciones 2.4. AgregaciónComposición 3. Ejemplo 1. Etapas de diseño Diseño conceptual UML Diseño lógico SQL-92 (BDR) ODMG (BO) (BDOR)

1. Etapas de diseño Diseño Conceptual en notación UML Diseño estándar UML Diseño específico BDOR (, DB2...) 1. Etapas de diseño Análisis Diseño Implementación Diseño Lógico Estándar Diseño Lógico Específico UML Diagrama de Clases UML + Estereotipos SQL :2003 Especificación UML + Estereotipos Producto Especificación en Producto Diseño Físico Implementación en Producto con Optimización

2. Reglas de transformación 2.1. Clases 1. Tipo estructuratipo objeto 2. Extensión: tabla sobre el tipo _Id Num_s Grafico CREATE TYPE AS ( _Id INTEGER, DATE, Num_s INTEGER, Grafico BLOB); CREATE TABLE Tabla_ OF ; CREATE TYPE AS OBJECT ( _Id NUMBER, DATE, Num_s NUMBER, Grafico BFILE) CREATE TABLE Tabla_ OF ; 2. Reglas de transformación 2.1. Clases Atributos UML ORACLE Atributo Atributo del tipo Atributo del tipo <<PK>> PK en la tabla PK en la tabla <<AK>> UNIQUE en la tabla UNIQUE en la tabla <<CA>> Tipo ROWTO sin extensión TO sin extensión <<MA>> ARRAYMULTISET VARRAYNT <<DA>> Método Disparador Método Disparador Niveles de --- --- visibilidad <<Método>> Cabecera del método en el tipo Cabecera del método en el tipo

2. Reglas de transformación 2.1. Clases Claves primarias y alternativas <<AK>> CREATE TYPE AS ( _Id INTEGER, VARCHAR(30), VARCHAR(15)); CREATE TABLE Tabla_ OF (PRIMARY KEY (_Id), UNIQUE ()); CREATE TYPE AS OBJECT ( _Id INTEGER, VARCHAR(30), VARCHAR(15)) CREATE TABLE Tabla_ OF (PRIMARY KEY (_Id), UNIQUE ()); 2. Reglas de transformación 2.1. Clases Atributos compuestos CREATE TYPE T_Coordenada AS ( EjeX INTEGER, EjeY INTEGER); <<PK>> _Id <<CA>> Origen <<CA>> Final CREATE TYPE AS ( _Id INTEGER, Origen T_Coordenada, Destino T_Coordenada, Number); CREATE TABLE Tabla_ OF ( PRIMARY KEY(_Id)); CREATE TYPE T_Coordenada AS OBJECT ( EjeX NUMBER, EjeY NUMBER) CREATE TYPE AS OBJECT ( _Id NUMBER, Origen T_Coordenada, Destino T_Coordenada, Number) CREATE TABLE Tabla_ OF ( PRIMARY KEY(_Id));

2. Reglas de transformación 2.1. Clases Atributos multivaluados <<PK>> _Id <<MA>>Arquitectos Gráfico CREATE TYPE AS ( _Id INTEGER, DATE, Arquitectos VARCHAR(30) ARRAY[5], Gráfico BLOB); CREATE TABLE Tabla_ OF (...); Diseño estándar UML <<PK>> _Id <<Array>>Arquitectos Gráfico CREATE TYPE Tipo_ AS VARRAY(5) OF VARCHAR(30) CREATE TYPE AS OBJECT ( _Id NUMBER, DATE, Arquitectos Tipo_, Gráfico BFILE) CREATE TABLE Tabla_ OF ; 2. Reglas de transformación 2.1. Clases Atributos derivados (I) <<PK>> _Id <<CA>> Origen <<CA>> Final <<DA>> Diseño estándar UML <<PK>> _Id <<CA>> Origen <<CA>> Final Calc_ CREATE TYPE AS ( _Id INTEGER, Origen ROW (EjeX INTEGER,EjeY INTEGER), Destino ROW (EjeX INTEGER,EjeY INTEGER), INTEGER, METHOD Calc_ RETURNS INTEGER); CREATE METHOD Calc_ FOR BEGIN... END;

2. Reglas de transformación 2.1. Clases Atributos derivados (II) <<PK>> _Id <<CA>> Origen <<CA>> Final <<DA>> Diseño estándar UML <<PK>> _Id <<CA>> Origen <<CA>> Final Calc_ CREATE TYPE T_Coordenada AS OBJECT ( EjeX NUMBER, EjeY NUMBER) CREATE TYPE T_ AS OBJECT ( _Id NUMBER, Origen T_Coordenada, Destino T_Coordenada, INTEGER, MEMBER FUNCTION Calc_ RETURN NUMBER) CREATE OR REPLACE TYPE BODY T_ IS MEMBER FUNCTION Calc_ RETURN NUMBER IS BEGIN END Calc_; END CREATE TABLE OF T_ ( PRIMARY KEY(_Id)); 2. Reglas de transformación 2.2. Interrelaciones Unidireccionales: mayor tiempo de respuesta en consultas menor tiempo de mantenimiento Bidireccionales: menor tiempo de respuesta en consultas mayor coste de mantenimiento

2. Reglas de transformación 2.2. Interrelaciones SQL:1999 1:1 REFREF 1:N REFARRAY de REF N:M ARRAY de REFARRAY de REF SQL: 2003 El ARRAY puede ser sustituido por MULTISET El MULTISET permite mantener colecciones sin dimensión predefinida ORACLE El ARRAY puede ser sustituido por NESTED TABLE La NESTED TABLE permite mantener colecciones sin dimensión predefinida 1:1 REFREF 1:N REFARRAY de REF N:M NT de REFNT de REF 2. Reglas de transformación 2.2. Interrelaciones Jefe <<PK>> Codigo_Id <<AK>> Telefono 1..1 0..1 <<PK>> _Id <<AK>> Diseño estándar UML Jefe <<PK>> Codigo_Id <<unique>> Telefono <<Ref>> Dirige:{} <<PK>> _Id <<unique>> <<NOT NULL>> <<Ref>> Dirigido_Por:{Jefe}

2. Reglas de transformación 2.2. Interrelaciones Jefe <<PK>> Codigo_Id <<unique>> Teléfono <<Ref>> Dirige:{} <<PK>> _Id <<unique>> <<NOT NULL>> <<Ref>> Dirigido_Por:{Jefe} CREATE TYPE Jefe_ AS (Codigo_Id NUMBER, VARCHAR2(30), Telefono NUMBER, Dirige REF ); CREATE TABLE T_Jefe_ OF Jefe_ (Codigo_id PRIMARY KEY, UNIQUE); CREATE TYPE AS ( _Id NUMBER, VARCHAR2(30), DATE, Dirigido_Por REF Jefe_); CREATE TABLE T_ OF (_ID PRIMARY KEY, UNIQUE, Dirigido_Por NOT NULL); 2. Reglas de transformación 2.2. Interrelaciones Jefe <<PK>> Codigo_Id <<unique>> Teléfono <<Ref>> Dirige:{} <<PK>> _Id <<unique>> <<NOT NULL>> <<Ref>> Dirigido_Por:{Jefe} CREATE OR REPLACE TYPE Jefe_ AS OBJECT (Codigo_Id NUMBER, VARCHAR2(30), Telefono NUMBER, Dirige REF ) CREATE TABLE T_Jefe_ OF Jefe_ (Codigo_id PRIMARY KEY, UNIQUE); CREATE OR REPLACE TYPE AS OBJECT ( _Id NUMBER, VARCHAR2(30), Date, Dirigido_Por REF Jefe_) CREATE TABLE T_ OF (_ID PRIMARY KEY, UNIQUE, Dirigido_Por NOT NULL);

2. Reglas de transformación 2.2. Interrelaciones <<AK>> 1..* 1..1 <<MA>> Arquitectos <<DA>> Num_s SQL:1999 <<UNIQUE>> <<NOT NULL>><<Ref>>_Pert:{} <<array>> Arquitectos: {5, varchar(30)} <<NOT NULL>><<Array>>Tiene_Fig:{100, <<Ref>>:{} <<trigger>> Num_s CREATE TYPE AS ( _Id INTEGER, VARCHAR(30), VARCHAR(10), _Pert REF ()); CREATE TABLE Tabla_ OF (_id PRIMARY KEY, UNIQUE, _Pert NOT NULL); CREATE TYPE AS ( _Id INTEGER, Arquitectos VARCHAR(30) ARRAY[5], Num_s INTEGER, Tiene_Fig REF() ARRAY[100]); CREATE TABLE Tabla_ OF (_id PRIMARY KEY, Tiene_Fig NOT NULL); 2. Reglas de transformación 2.2. Interrelaciones <<AK>> 1..* 1..1 <<MA>> Arquitectos <<DA>> Num_s <<UNIQUE>> <<NOT NULL>><<Ref>>Pertenece_a:{} <<PK>> _Id <<ARRAY>> Arquitectos :{5, VARCHAR(20)} Num_s <<NOT NULL>><<MULTISET>>Tiene_Fig:{<<Ref>>:{}} CREATE TYPE AS ( _Id INTEGER, VARCHAR(30), VARCHAR(10), _Pert REF ()); CREATE TABLE Tabla_ OF (_id PRIMARY KEY, UNIQUE, _Pert NOT NULL); CREATE TYPE AS ( _Id INTEGER, Arquitectos VARCHAR(30) ARRAY[5], Num_s INTEGER, Tiene_Fig REF() MULTISET); CREATE TABLE Tabla_ OF (_id PRIMARY KEY, Tiene_Fig NOT NULL);

2. Reglas de transformación 2.2. Interrelaciones <<UNIQUE>> <<NOT NULL>><<Ref>>_Pert:{} Perimetro() Area() <<array>> Arquitectos: {5, varchar(30)} <<NOT NULL>><<Array>>Tiene_Fig:{100, <<Ref>>:{} <<trigger>> Num_s NT_ <<NT>> <<Ref>>:{} <<UNIQUE>> <<NOT NULL>><<Ref>>_Pert:{} <<varray>> Arquitectos: {5, varchar(30)} Tiene_Fig: NT_ <<trigger>> Num_s CREATE OR REPLACE TYPE AS OBJECT (_Id NUMBER, VARCHAR2(30), VARCHAR2(10), _Pert REF ) CREATE TYPE NT_ AS TABLE OF REF CREATE TABLE T_ OF {...}; CREATE OR REPLACE TYPE AS OBJECT ( _Id NUMBER, Num_s NUMBER, Arquitectos Tipo_s, Tiene_Fig NT_) CREATE TABLE T_ OF nested table Tiene_Fig store AS T_Lista_; 2. Reglas de transformación 2.2. Interrelaciones Ejemplo de Inserción en dos tablas con una interrelación 1:N: INSERT INTO t_figura VALUES (1,'Hexagono','Verde',NULL); INSERT INTO t_figura VALUES (2,'Octogono','Rojo',NULL); DECLARE f1_ref REF figura; f2_ref REF figura; BEGIN SELECT REF(f1) INTO f1_ref FROM t_figura f1 WHERE figura_id=1; SELECT REF(f2) INTO f2_ref FROM t_figura f2 WHERE figura_id=2; INSERT INTO t_plano VALUES(1,2,Tipo_(f1_ref,f2_ref)); END DECLARE p1_ref REF plano; BEGIN SELECT REF(p1) INTO p1_ref FROM t_plano p1 WHERE plano_id=1; UPDATE t_figura SET plano_pert= p1_ref WHERE figura_id IN (1,2); END

2. Reglas de transformación 2.3. Generalizaciones _Id Perimetro() Area() Poligono Numero_s <<redef>>area() CREATE TYPE AS (_Id INTEGER, VARCHAR(30), VARCHAR(10) INSTANTIABLE NOT FINAL METHOD Perimetro() RETURNS INTEGER, METHOD Area() RETURNS INTEGER); CREATE TABLE Tabla_ OF ; CREATE TYPE Poligono UNDER AS (Numero_s INTEGER INSTANTIABLE FINAL OVERRIDING METHOD Area() RETURNS INTEGER); CREATE TABLE Tabla_Poligono OF Poligono UNDER Tabla_; 2. Reglas de transformación 2.3. Generalizaciones 8 NO soportaba herencia por lo que las generalizaciones se implementan siguiendo el mismo procedimiento que se utilizaba en relacional. 9i y posteriores SÍ soportan herencia, pero solo de tipos. No soporta herencia de tablas.

2. Reglas de transformación 2.3. Generalizaciones _Id Perimetro() Area() Poligono Numero_s <<redef>>area() CREATE OR REPLACE TYPE AS ( _IdNUMBER, VARCHAR2(30), VARCHAR2(10), MEMBER FUNCTION Perimetro() RETURNS NUMBER, MEMBER FUNCTION Area() RETURNS NUMBER) INSTANTIABLE NOT FINAL CREATE TABLE T_ OF ; CREATE CREATE TYPE TYPE Poligono Tipo_ UNDER AS AS ( Num_s TABLE OF Ref ; NUMBER, INSTANTIABLE FINAL OVERRIDING MEMBER FUNCTION Area() RETURNS NUMBER) CREATE TABLE Tabla_Poligono OF Poligono; 2. Reglas de transformación 2.4. Agregación <<PK>> _Id <<AK>> 1..* <<PK>> _Id <<MA>> Arquitectos <<DA>> Num_s <<PK>> _Id <<UNIQUE>> <<MULTISET>>Tiene_:{<<Ref>>:{}} <<PK>> _Id <<array>> Arquitectos:{5,varchar(30)} <<trigger>> Num_s CREATE TYPE AS ( _Id INTEGER, VARCHAR2(30), Tiene_ REF() MULTISET); CREATE TABLE Tabla_ OF (PRIMARY KEY (_Id) UNIQUE nombre);

2. Reglas de transformación 2.4. Agregación NT_s <<NT>> <<Ref>>:{} <<PK>> _Id <<UNIQUE>> Tiene_: NT_ <<PK>> _Id <<varray>> Arquitectos :{5,varchar(30)} <<trigger>> Num_s CREATE TYPE AS OBJECT (_ID NUMBER, DATE, Num_s NUMBER, Arquitectos Tipo_) CREATE TABLE T_ OF (PRIMARY KEY (_Id)); CREATE OR REPLACE TYPE NT_s AS TABLE OF REF CREATE TYPE AS OBJECT ( _Id NUMBER, VARCHAR2(30), Tiene_ NT_s) CREATE TABLE T_ OF (PRIMARY KEY (_ID), UNIQUE ()) NESTED TABLE Tiene_ STORE AS Tabla_s; 2. Reglas de transformación 2.4. Agregación Ejemplo de Inserción y Consulta en una Agregación: CREATE TYPE AS OBJECT (_ID NUMBER, DATE, Num_s NUMBER, Arquitectos Tipo_) CREATE OR REPLACE TYPE T_Ref_s AS OBJECT (Ref_ REF ) CREATE OR REPLACE TYPE Lista_s AS TABLE OF T_Ref_s CREATE OR REPLACE TYPE AS OBJECT ( _Id NUMBER, VARCHAR(30), Tiene_ Lista_s) CREATE TABLE T_ OF (PRIMARY KEY (_ID), UNIQUE ()) NESTED TABLE Tiene_ STORE AS Tabla_s; CREATE TABLE T_ OF (PRIMARY KEY (_Id)); INSERT INTO t_plano VALUES (1, NULL,5,NULL); INSERT INTO t_plano VALUES (2, NULL,4,NULL); DECLARE p1_ref REF plano; p2_ref REF plano; plan1 t_ref_planos; plan2 t_ref_planos; BEGIN SELECT ref(p1) INTO p1_ref FROM t_plano p1 WHERE plano_id=1; SELECTt ref(p2) INTO p2_ref FROM t_plano p2 WHERE plano_id=2; plan1:=t_ref_planos(p1_ref); plan2:=t_ref_planos(p2_ref); INSERT INTO t_proyecto VALUES (1,'MIDAS',Lista_s(plan1,plan2)); END; SELECT t1.proyecto_id, t1.nombre, t2.ref_plano.plano_id, t2.ref_plano.numero_figuras FROM t_proyecto t1, TABLE(t1.Tiene_) t2;

2. Reglas de transformación 2.5. Composición Poligono_Id Num_s Poligono 1..* <<PK>> _Id Origen Final Poligono Poligono_Id Num_s <<MULTISET>>Tiene_s:{} _Id Origen Final CREATE TYPE AS (_ID NUMBER, ); CREATE TYPE Poligono AS ( Poligono_ID NUMBER, Num_s INTEGER, Tiene_s MULTISET) ); CREATE TABLE Tabla_Poligono OF Poligono( ); 2. Reglas de transformación 2.5. Composición NT_s <<NT>> {} Poligono Num_s Tiene_s: NT_s <<PK>> _Id Origen Final CREATE TYPE AS OBJECT (_ID NUMBER, ) CREATE OR REPLACE TYPE NT_s AS TABLE OF CREATE TYPE Poligono AS OBJECT (Poligono_Id NUMBER, Numero_s NUMBER, Tiene_s NT_s) CREATE TABLE T_Poligono OF Poligono (PRIMARY KEY (Poligono_ID)) NESTED TABLE Tiene_s STORE AS Tabla_s;

2. Reglas de transformación 2.5. Composición Ejemplo de Inserción y Consulta en una Composición: CREATE TYPE AS OBJECT (_ID NUMBER) CREATE OR REPLACE TYPE NT_s AS TABLE OF CREATE TYPE Poligono AS OBJECT (Poligono_Id NUMBER, Num_s NUMBER, Tiene_s NT_s) CREATE TABLE T_Poligono OF Poligono (PRIMARY KEY (Poligono_ID)) NESTED TABLE Tiene_s STORE AS Tabla_s; BEGIN INSERT INTO t_poligono VALUES (1,2,NT_s(linea(1),linea(2))); END; SELECT t1.poligono_id, t1.numero_s, t2._id FROM t_poligono t1, TABLE(t1.Tiene_s) t2; 3. Ejemplo Diagrama de clases UML Profesor <<PK>> Profesor_ID <<CA>> Dirección E-Mail ReservarAula() ReservarAula reserva reservado_por 0..1 * Aula <<PK>> Aula_ID Edificio Campus Estado Tiene Estudiante <<PK>> Estudiante_ID <<CA>> Dirección E-Mail reserva * ReservarOrdenador reservado_por * 0..* Ordenador <<PK>> Ordenador_ID Estado ReservarOrdenador()

3. Ejemplo Diagrama de clases UML Jefe <<PK>> Cod_Jefe <<AK>> <<CA>> Direccion: {Tipo_Via, _Via, Poblacion, CP, Provincia} Telefono 1 dirige 0..1 <<PK>> Cod_ Cod_ <<AK>> tiene 0..* 1..1 1..* <<PK>> Cod_ Fecha_Entrega <<MA>> Arquitectos Dibujo_ <<DA>> Num_s Poligono Num_s 1..* <<PK>> Id_ <<DA>> <<MA>><<CA>> Puntos: {Coord_X, CoordY}