BD 2010 2011 PLSQL
PL/SQL
www.kybele.urjc.es
BD - PL/SQL-1
Índice
1.
2.
Introducción
Estructura de un Objeto
1. Métodos
3.
Gestión de Objetos
1. Notación Punto
2. OIDs
4.
Tipos Referencia
1. Operador VALUE
5.
PL/SQL
Tipos Colección
www.kybele.urjc.es
BD - PL/SQL-2
Introducción
Una BDOR soporta las dos tecnologías: relacional y objeto-relacional
Aportaciones OR
UDTs Atributos / Métodos …
Tipos Complejos en una columna
Referencias
PL/SQL
Oracle incorpora estas mejoras desde la versión 8i
Las estructuras de almacenamiento siguen siendo tablas, pero se
pueden usar mecanismos de orientación al objeto para la gestión de
datos
Cada objeto tiene un tipo, se almacena en una fila de una tabla y tiene
un identificador que permite referenciarlo desde otrosobjetos (otras
filas de otras tablas)
www.kybele.urjc.es
BD - PL/SQL-3
Introducción
Los objetos permiten modelar mejor las relaciones “parte-todo”
PROVINCIA
CIUDAD
Modelo Orientado a Objetos
Modelo Relacional
PK
PROVINCIA
ID
MADRID
MAD
BARCELONA
VALENCIA
ID_PROV
CIUDAD
FK
CIUDAD
MAD
MÓSTOLES
BCN
BCN
ALCORCÓN
ALCORCÓN
VLC
VLC
GANDÍA
GANDÍA
PROVINCIAS
PL/SQL
FKPROVINCIAS_CIUDADES
www.kybele.urjc.es
MÓSTOLES
CIUDADES
BD - PL/SQL-4
Estructura de un Tipo de Objeto
CREATE [OR REPLACE] TYPE Complejo AS OBJECT (
parte_r
REAL, -- attributo
parte_e
REAL,
MEMBER FUNCTION suma (x Complejo) RETURN Complejo, -- metodo
MEMBER FUNCTION resta (x Complejo) RETURN Complejo,
Los
CREATE [OR REPLACE] TYPE BODY Complejo AS
MEMBER FUNCTION suma (x Complejo) RETURNComplejo IS
BEGIN
RETURN Complejo(parte_r + x.parte_r, parte_e + x.parte_e);
END plus;
MEMBER FUNCTION resta (x Complejo) RETURN Complejo IS
BEGIN
RETURN Complejo(parte_r - x.parte_r, parte_e - x.parte_e);
END less;
END;
PL/SQL
www.kybele.urjc.es
parámetros no
deben restringirse en
tamaño
Se invocan igual que
se recupera un campo
Especificando los
parámetros si fuera el
caso
Definir un tipo noimplica
reservar espacio para
objetos del tipo
BD - PL/SQL-5
Tablas de Objetos
Las tablas tipadas son:
Tablas que almacenan objetos del tipo sobre el que han sido
definidas
Cada fila almacena un objeto
También podemos verlas como
Una tabla con una única columna del tipo objeto
Una tabla con tantas columnas como el tipo objeto
CREATE OR REPLACE TYPE Tipo_Coche AS OBJECT (
MarcaVARCHAR2(25),
Modelo
VARCHAR2(25),
Matricula
VARCHAR2(9))
/
CREATE TABLE COCHES OF Tipo_Coche;
PL/SQL
www.kybele.urjc.es
BD - PL/SQL-6
Tablas de Objetos
Almacenan un objeto en cada fila y permiten acceder a los
campos del objeto cómo si fueran columnas de la tabla
Las restricciones se definen sobre la tabla y se aplicarán SÓLO
sobre aquellos objetos almacenados en dicha tabla
CREATE OR REPLACETYPE Tipo_Coche AS OBJECT (
Marca
VARCHAR2(25),
Modelo
VARCHAR2(25),
Matricula
VARCHAR2(9))
/
CREATE TABLE COCHES OF Tipo_Coche;
ALTER TABLE COCHES ADD
CONSTRAINT PK_COCHE PRIMARY KEY (Marca, Modelo);
PL/SQL
www.kybele.urjc.es
BD - PL/SQL-7
Índice
1.
2.
Introducción
Estructura de un Objeto
1. Métodos
3.
Gestión de Objetos
1. Notación Punto
2. OIDs
4.
Tipos Referencia
1. OperadorVALUE
5.
PL/SQL
Tipos Colección
www.kybele.urjc.es
BD - PL/SQL-8
Métodos
Implementan el comportamiento de los objetos del tipo
3 tipos MEMBER, STATIC, CONSTRUCTOR
CREATE TYPE Tipo_Cubo AS OBJECT (
largo
INTEGER,
ancho
INTEGER,
alto
INTEGER,
La variable SELF permite referirse al
MEMBER FUNCTION superficie RETURN INTEGER,
objeto sobre el que se invocó la
MEMBER FUNCTION volumen RETURN INTEGER,función/procedimiento
MEMBER PROCEDURE mostrar ());
/
CREATE TYPE BODY Tipo_Cubo AS
MEMBER FUNCTION volume RETURN INTEGER IS
BEGIN
RETURN largo * ancho * alto;
-- RETURN SELF.largo * SELF.ancho * SELF.alto;
END;
MEMBER FUNCTION superficie RETURN INTEGER IS
BEGIN
RETURN 2 * (largo * ancho + largo * alto + ancho * alto);
END;
MEMBER PROCEDURE mostrar ()
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('Largo: ' ||...
Regístrate para leer el documento completo.