Características Objeto Relacionales en Oracle

Slides:



Advertisements
Presentaciones similares
SQL Sigla del nombre “Structured Query Language”.
Advertisements

Se necesita un PA que muestre la información de todos los clientes registrados de la siguiente forma: Nombre1 Nombre2, Apellido1 Apellido2 bajo el título.
Insercion de datos..
Ejercicios Solemne 2 Parte 1
Implementación de procedimientos almacenados
LENGUAJE ESTRUCTURADO DE CONSULTA “SQL”
BASE DE DATOS OBJETO RELACIONAL
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo Introducción a PL/SQL Conceptos básicos.
Fernando Velasco
PL/SQL Francisco Moreno Universidad Nacional. Funciones Si un procedimiento tiene solo un parámetro de salida, se puede remplazar por una función y esta.
Presentación Asignatura POF030 Semana 1. Contenido En forma general, los conceptos que se estudiarán en la asignatura son: – Procedures – Functions –
Subprogramas: Procedimientos
Maestría en Bioinformática Bases de Datos y Sistemas de Información SQL: DML Ing. Alfonso Vicente, PMP
Maestría en Bioinformática Bases de Datos y Sistemas de Información Otros objetos de Base de Datos Ing. Alfonso Vicente, PMP
01/12/07Seminario de Bases de Datos1 Características Objeto Relacionales en Oracle 10G* * Tomado del curso de Francisco Moreno.
01/12/07Seminario de Bases de Datos1 Características Objeto Relacionales en Oracle 10G* * Tomado del curso de Francisco Moreno.
Aplicación del paradigma orientado a objetos
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle
Francisco Moreno Bases de Datos II Universidad Nacional
PL/SQL Francisco Moreno Universidad Nacional.
Diseño y programación de
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
UNITA - IBARRA BLOQUES PL-SQL SUBPROGRAMAS Paulina Guevara.
Características Objeto Relacionales en Oracle
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
SQL Lenguaje de consulta estructurado
PL/SQL Francisco Moreno Universidad Nacional. Introducción al PL/SQL ¿Por qué PL/SQL? A pesar de que SQL tiene mecanismos de control condicional (cláusula.
16/04/ Sesión 11 Funciones y procedimientos Ing. Ricardo Inquilla.
PL/SQL Francisco Moreno Universidad Nacional.
PL/SQL Francisco Moreno Universidad Nacional.
Ing. Ricardo Carlos Inquilla Quispe
UNITA - IBARRA TRIGGERS
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.
Laboratorio de Bases de datos
Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 11 Creando Vistas.
PL/SQL Francisco Moreno Universidad Nacional.
PL/SQL Francisco Moreno Universidad Nacional.
TRIGGERS EN ORACLE 8 J. Iriarte S. España
SQL: DDL Francisco Moreno & Carlos Mario Zapata. SQL:DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la Base de Datos Tipos de Objetos:
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
Triggers(Disparadores)
Características Objeto Relacionales en Oracle
Características Objeto-Relacionales en Oracle Francisco Moreno Universidad Nacional.
Structured Query Language (Lenguaje Estructurado de Consultas)
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
SQL: DDL Francisco Moreno. SQL: DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la BD Tipos de objetos: - Tablas: corresponden a las.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Expresiones algebraicas equivalentes
SQL Sigla del nombre “Structured Query Language”.
Vista Externa de Una Base de Datos John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Prof. De Bases de Datos: Lcdo. Luis Peña. El lenguaje más habitual para construir las consultas a bases de datos relacionales es SQL, Structured Query.
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
SQL (Structured Query Language) Lenguaje orientado a bases de datos y sobre todo, al manejo de consultas; el objetivo principal de SQL es la realización.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
MSSQL SERVER CURSO BÁSICO 1. DESCRIPCIÓN DEL CURSO. Sesión 4: Sentencia Insert,Transacciones,Insert general, Insert Select * From, Sentencia Update,Update.
UNIVERSIDAD LATINA IV. CONSULTAS AVANZADAS CON BASES DE DATOS. E.I. L.E. Prof. Ramón Castro Liceaga.
5 Paquetes ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Apuntes PL-SQL Triggers II. Tipos de datos compuestos Registros PL/SQL: Son similares a un tipo struct en C o a un tipo Registro en otros 3GL. Se componen.
SQL: DDL.
6 Triggers ORACLE - II Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
INTEGRACION DE LAS TECNOLOGIAS DE LA INFORMACION Y COMUNICACION Implementación de base de datos (Lenguaje de manipulación de datos) Ing. Linda Masias Morales.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
Implementación de funciones definidas por el usuario.
Características Objeto Relacionales en Oracle
BASE DE DATOS IUPSM CLASE PRACTICA. PROF. ING. JOSE L GUZMAN H.
Características Objeto Relacionales en Oracle
Capítulo 7 USO DE BASES DE DATOS OBJETO- RELACIONALES.
Transcripción de la presentación:

Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional

Oracle solo soporta herencia simple CLASE X atributos… métodos… CLASE K atributos… métodos… Supertipo CLASE Y atributos… métodos… CLASE Z atributos… métodos… Subtipos

Cada tipo especializado (subtipo) hereda todos los atributos y métodos del supertipo Los subtipos pueden añadir sus propios atributos* y métodos Los subtipos no pueden cambiar ni eliminar los atributos que heredan pero sí pueden redefinir los métodos que hereden y pueden agregar métodos sobrecargados Los cambios hechos al supertipo se reflejan en los subtipos * Con nombres distintos a los de su supertipo

Para que un tipo pueda tener subtipos se debe declarar NOT FINAL (la opción predeterminada es FINAL) Para que puedan existir objetos de un tipo, este debe ser INSTANTIABLE (es la opción predeterminada, es decir, no abstracto) Para hacerlo abstracto se debe declarar como NOT INSTANTIABLE: CREATE OR REPLACE TYPE persona_tipo AS OBJECT( cedula NUMBER(8), nombre VARCHAR2(10) ) NOT INSTANTIABLE NOT FINAL; /

Se puede cambiar un tipo a NOT FINAL así: ALTER TYPE nombre_tipo NOT FINAL; Se puede cambiar de NOT FINAL a FINAL siempre y cuando el tipo no posea subtipos en el momento del cambio Se puede cambiar de INSTANTIABLE a NOT INSTANTIABLE y viceversa. ¿Cuándo?

No es válido: CREATE OR REPLACE TYPE persona_tipo AS OBJECT( cedula NUMBER(8), nombre VARCHAR2(10) ) NOT INSTANTIABLE FINAL; /

FINAL: No puede ser redefinido por los hijos Un método puede ser: FINAL: No puede ser redefinido por los hijos NOT FINAL: Puede ser redefinido por los hijos* Y también puede ser: INSTANTIABLE: El tipo que declara el método lo implementa en su cuerpo* NOT INSTANTIABLE: El tipo que declara el método no lo implementa (delega la implementación a sus descendientes) * Es la opción predeterminada

Si un tipo posee un método no instanciable el tipo debe ser a su vez no instanciable ¿Por qué? CREATE OR REPLACE TYPE persona_tipo AS OBJECT( cedula NUMBER(8), nombre VARCHAR2(10), NOT INSTANTIABLE MEMBER FUNCTION descripcion RETURN VARCHAR ) INSTANTIABLE NOT FINAL; / Si un subtipo no implementa métodos no instanciables heredados, debe ser a su vez un tipo no instanciable Genera error

Ejemplo: Método redefinido PERSONA cédula nombre imprimir() Método sobrecargado EMPLEADO* código … ESTUDIANTE carné … PROFESOR registro imprimir() imprimir(NUMBER) DE PLANTA salario imprimir(VARCHAR) CATEDRÁTICO valor_hora imprimir(DATE) * No docente

Ejemplo DROP TYPE persona_type FORCE; CREATE TYPE persona_type AS OBJECT( cedula NUMBER(8), nombre VARCHAR2(10) ) NOT FINAL; / DROP TYPE profesor_type FORCE; CREATE TYPE profesor_type UNDER persona_type( registro NUMBER(5)

DROP TYPE profplanta_type FORCE; CREATE TYPE profplanta_type UNDER profesor_type( salario NUMBER(8) ) NOT FINAL; / DROP TYPE profcat_type FORCE; CREATE TYPE profcate_type UNDER val_hora NUMBER(8)

Principio de Sustitución: DROP TABLE persona; CREATE TABLE persona OF persona_type (cedula PRIMARY KEY); INSERT INTO persona VALUES(101,'Ana'); INSERT INTO persona VALUES(persona_type(201,'Luis')); ¡Sorpresa!: INSERT INTO persona values(profesor_type(301,'Juan',550)); INSERT INTO persona values(profplanta_type(6,'Jim',950,10000));

Principio de Sustitución: “Un objeto perteneciente a un supertipo puede ser remplazado por cualquiera de sus subtipos” Intuitivamente, en el ejemplo anterior: Todo profesor es una persona. Lo contrario no siempre se cumple: Una persona no necesariamente es profesor. Por eso a un objeto se le puede asignar un objeto subtipo, porque este es capaz de proveer todos los atributos que exige el supertipo. Este proceso también se denomina “widening” (ampliación)

No se ven los atributos exclusivos del profesor... SELECT * FROM persona; No se ven los atributos exclusivos del profesor... SELECT VALUE(p) FROM persona p; Se ven todos los datos. ¿Qué pasa si se desea imprimir solo la cédula y el registro de todos los profesores? No funcionan: SELECT cedula, registro FROM persona; SELECT VALUE(p).registro FROM persona p;

SELECT cedula,TREAT(VALUE(p) AS profesor_type).registro Para “descubrir” los atributos exclusivos de profesor se usa la función TREAT: SELECT cedula,TREAT(VALUE(p) AS profesor_type).registro FROM persona p; Ahora que pasa con: SELECT TREAT(VALUE(p) AS profesor_type) TREAT devuelve NULL si el objeto no se puede convertir al tipo indicado

TREAT no convierte un subtipo a supertipo: CREATE TABLE prof OF profesor_type (cedula PRIMARY KEY); INSERT INTO prof values(profesor_type(1,'Kim',50)); SELECT TREAT(VALUE(p) AS persona_type) FROM prof p; Lo deja como profesor_type

Operador IS OF: SELECT VALUE(p) FROM persona p WHERE VALUE(p) IS OF (profesor_type); Imprimirá solo los profesores (o subtipos de profesores…) Si se desean evitar los subtipos de profesor se puede usar el operador ONLY: WHERE VALUE(p) IS OF (ONLY profesor_type);

Redefinición de métodos. Ejemplo: DROP TYPE fig_typ FORCE; CREATE TYPE fig_typ AS OBJECT( nombre VARCHAR(10), FINAL MEMBER FUNCTION imp_nom RETURN VARCHAR, MEMBER FUNCTION descr RETURN VARCHAR )NOT FINAL; / No se puede redefinir Se puede redefinir

CREATE OR REPLACE TYPE BODY fig_typ AS FINAL MEMBER FUNCTION imp_nom RETURN VARCHAR IS BEGIN RETURN 'Mi nombre es ' ||nombre; END; MEMBER FUNCTION descr RETURN VARCHAR IS RETURN 'No sé que tipo de figura soy'; /

DROP TYPE cir_typ FORCE; CREATE TYPE cir_typ UNDER fig_typ( radio NUMBER(5), OVERRIDING MEMBER FUNCTION descr RETURN VARCHAR); /

CREATE OR REPLACE TYPE BODY cir_typ AS OVERRIDING MEMBER FUNCTION descr RETURN VARCHAR IS BEGIN RETURN 'Soy un círculo malo, mi radio es ' || TO_CHAR(radio) || ' y me voy a comer a las demás figuras'; END; /

DROP TABLE figura; CREATE TABLE figura OF fig_typ; INSERT INTO figura VALUES('Figura 1'); SELECT m.imp_nom(), m.descr() FROM figura m; DROP TABLE circulo; CREATE TABLE circulo OF cir_typ; INSERT INTO circulo VALUES('circulo 1',10); SELECT c.imp_nom(), c.descr() FROM circulo c; A partir de Oracle 11g, en PL/SQL, es posible invocar desde círculo el método descripción del tipo figura usando generalized invocation:

Ejemplo Generalized Invocation DECLARE c cir_typ; BEGIN SELECT VALUE(e) INTO c FROM circulo e; DBMS_OUTPUT.PUT_LINE(c.descr); DBMS_OUTPUT.PUT_LINE((c AS fig_typ).descr); END; /

O alternativamente, generar un objeto fig_typ en tiempo de ejecución: SELECT fig_typ(c.nombre).descr() FROM circulo c;