Anda di halaman 1dari 14

04/07/2019

Capítulo 10

USO DE BASES DE
DATOS OBJETO-
RELACIONALES
Piedad Soriano Montiel

ÍNDICE CAPÍTULO 10 I

 Introduccióna las bases de datos


orientadas a objetos

 El modelo estándar ODMG

• Modelo de objetos

• Lenguajes de objetos

1
04/07/2019

ÍNDICE CAPÍTULO 10 II

 Extensión SQL para objetos

• Tipos estructurados definidos por el


usuario
• Atributos y métodos
• Herencia
• Polimorfismo
• Tipos tabla

ÍNDICE CAPÍTULO 10 III

 Sistemas gestores objeto-relacionales

• Tipos de objetos
• Tablas de objetos
• Colecciones
• Tipos de objetos y referencias
• Herencia de tipos
• Manipulación de objetos
• Transformación de jerarquías

2
04/07/2019

Introducción modelo de datos


orientados a objetos I
Objeto= atributos + funciones o métodos

El proceso de diseño de bases orientadas a objetos

Introducción modelos de datos


orientados a objetos II
Modelo de objetos estándar ODMG

• Objetos

Instancias de una entidad del mundo real o


sistema que se modela

-Tipo Interface: definen el comportamiento


(métodos) abstracto de un objeto

-Tipo clase: definen el estado (atributos) y


comportamiento de un tipo de objeto

3
04/07/2019

Introducción modelos de datos


orientados a objetos III
Modelo de objetos estándar ODMG

• Herencia

Es similar al concepto de jerarquía pero incluyendo


métodos o comportamiento
Se permite herencia simple y múltiple mediante las
interfaces

Lenguajes de objetos

• Lenguaje ODL (Object Definition Language)=DDL


• Lenguaje OQL (Object Query Language)=SQL

Extensión SQL para objetos

Un sistema orientado a objetos debe cumplir:

1. La existencia de tipos de datos abstractos

2. Herencia o habilidad para compartir estructura


y comportamiento por parte de los distintos
tipos

3. Identidad de objetos

4. Sobrecarga o polimorfismo de métodos

4
04/07/2019

Estándar SQL1999 para objetos

Tipos estructurados definidos por el usuario

 UDT (User Defined Type)

• Simples: int, char, etc.

• Tipo array: varios elementos del mismo


tipo

• Tipo estructurado: varios elementos de


distinto tipo

Estándar SQL1999 para objetos

Atributos y métodos

 Los UDT permiten inclusión de rutinas

• Éstas dotan de comportamiento al objeto


• Normalmente los atributos solo se
modifican mediante estas rutinas
• Hay rutinas para consultar propiedades:
accesores
• Las que permiten modificar el estado del
objeto (sus atributos) se denominan
mutadores

10

5
04/07/2019

Estándar SQL1999 para objetos

Herencia

 Capacidad de heredar atributos y


comportamiento

 Con SQL1999 aparece la herencia de


comportamiento

 No se permite herencia múltiple

 Distinguimos herencia de tipos (atributos y


métodos) y de tablas (sólo atributos)

11

Estándar SQL1999 para objetos

Polimorfismo

 Capacidad de distingue entre dos métodos con


el mismo nombre

 Un método se identifica por su signatura

 SIGNATURA=nombre, número de parámetros,


tipo y tipo devuelto

12

6
04/07/2019

Estándar SQL1999 para objetos

Tipos Tabla

 Existen tipos UDT estructurados que pueden


formar parte de tablas como un campo más

 También se pueden definir como tipos objeto


que se instancian en objetos con identidad
propia

 Así, cada fila de la tabla es una instancia de un


objeto de un tipo dado

13

Sistemas objeto–relacionales: ORACLE

Tipos Tabla

 Los SGBDOR surgen por el ‘fracaso’ de los


sistemas de objetos puros

 Oracle y PostgreSQL entre otros son ejemplos


de este tipo de sistemas

14

7
04/07/2019

Sistemas objeto–relacionales: ORACLE

Tipos de objetos

15

Sistemas objeto–relacionales: ORACLE

Creación de tipos de objetos

16

8
04/07/2019

Sistemas objeto–relacionales: ORACLE

Atributos en ORACLE
Cualquiera de los tipos soportados por
ORACLE menos:

• LONG y LONG RAW

• NCHAR, NCLOB y NVARCHAR2

• MLSLABEL y ROWID

• Los tipos específicos de PL/SQL: BINARY_INTEGER,


BOOLEAN, PLS_INTEGER, RECORD, REF CURSOR, %TYPE y
%ROWTYPE

• Los tipos definidos en los paquetes PL/SQL.

17

Sistemas objeto–relacionales: ORACLE

Métodos en ORACLE
Cláusula PRAGMA

Sintaxis:
PRAGMA RESTRICT REFERENCES ({DEFAULT |
método},{RNDS, WNDS, RNPS, WNPS}, [RNDS,
WNDS, RNPS, WNPS]);

• WNDS: no se permite al método modificar las tablas de la


base de datos.
• WNPS: no se permite al método modificar las variables del
paquete PL/SQL.
• RNDS: no se permite al método leer las tablas de la base de
datos.
• RNPS: no se permite al método leer las variables de
paquetes PL/SQL.

18

9
04/07/2019

Sistemas objeto–relacionales: ORACLE

Métodos en ORACLE

Métodos MAP y ORDER

Para comparación de objetos

19

Sistemas objeto–relacionales: ORACLE

Tablas de objetos

Una vez definido un tipo, este tiene 3 usos:

1. Definir nuevos tipos

2. Crear tablas que almacenen objetos de


esos tipos

3. Ser parte de una tabla como un atributo


más

20

10
04/07/2019

Sistemas objeto–relacionales: ORACLE

Colecciones

 Formado por un número indefinido de


elementos del mismo tipo.

Hay dos clases en ORACLE

• Tabla anidada: elementos ordenados de


tipo objeto

• varray: elementos iguales y simples sin


orden predefinido

21

Sistemas objeto–relacionales: ORACLE

Tipos de objetos y referencias

 Los objetos pueden ser referenciados desde


atributos de otros objetos mediante tipos REF

 Son cómo punteros al ID de un objeto

 Permiten crear relaciones entre objetos (tipo


1:N)

22

11
04/07/2019

Sistemas objeto–relacionales: ORACLE

Herencia de tipos
 Los tipos pueden heredar de otro tipo, tanto atributos
como comportamiento
 No se soporta herencia múltiple
 Tipos definidos con la cláusula FINAL no permiten
herencia
 La redefinición de métodos se permite mediante la
cláusula OVERRIDING
 Objetos y métodos instanciables permiten el uso de
constructores para su instanciación
 Se permite sobrecarga mediante la cláusula
OVERLOADING
 Sustituibilidad o posibilidad de seleccionar entre
subtipos y supertipos para realizar operaciones

23

Sistemas objeto–relacionales: ORACLE

Manipulación de objetos

 Una vez declarados, los objetos son manipulados


como datos normales usando las sentencias de
manipulación: INSERT/UPDATE/DELETE/SELECT

 Para la creación de instancias de tipos de objetos se


usan constructores

24

12
04/07/2019

Sistemas objeto–relacionales: ORACLE

Ejemplo manipulación datos en jerarquías I

Creamos una jerarquía formada por el supertipo participante


y los subtipos arbitro y jugador que especifican sus propios
atributos.
Primero creamos los tipos:

CREATE TYPE tipo_participante AS OBJECT(id NUMBER, nombre


VARCHAR2(30), direccion VARCHAR2(30)) NOT FINAL;

CREATE TYPE tipo_subtipoarbitro UNDER participante(profesion


VARCHAR2(10),experiencia INT) NOT FINAL;

CREATE TYPE tipo_subtipojugador UNDER participante(altura


FLOAT, peso INT);

25

Sistemas objeto–relacionales: ORACLE

Ejemplo manipulación datos en jerarquías II

Después las tablas de cada tipo para luego insertar datos:

CREATE TABLE tabla_participante OF tipo_participante;


CREATE TABLE tabla_subtipoarbitro OF tipo_subtipoarbitro;
CREATE TABLE tabla_subtipojugador OF tipo_subtipojugador;

INSERT INTO tabla_participante


VALUES(tipo_participante(1,'Javier','C/Mayor,23'));

INSERT INTO tabla_subtipoarbitro


VALUES(tipo_subtipoarbitro(1,'Jose','C/Paz3','comercial',4));

INSERT INTO tabla_subtipojugador


VALUES(tipo_subtipojugador(3,'Manuel','C/Mar,45',1.9,98));

26

13
04/07/2019

Sistemas objeto–relacionales: ORACLE

Ejemplo manipulación datos en jerarquías III

Para ver los datos de la tabla subtipo tabla_subtipojugador:

SELECT * FROM tabla_subtipojugador t;


Para ver todos las instancias de subtipos de participantes:
SELECT value(t) FROM tabla_participante t;
Podemos ver la altura de los jugadores almacenados en el
subtipo jugador (tipo_subtipojugador):
SELECT TREAT(VALUE(p) AS tipo_subtipojugador).altura FROM
tabla_participante p;

Para ver el contenido de la tabla tabla_subtipojugador:

SELECT VALUE(p) FROM tabla_participante p WHERE VALUE(p) IS


OF (tipo_subtipojugador);

27

FIN CAPÍTULO 10

28

14

Anda mungkin juga menyukai