01/12/07Seminario de Bases de Datos1 Características Objeto Relacionales en Oracle 10G* * Tomado del curso de Francisco Moreno.

Slides:



Advertisements
Presentaciones similares
¿Cómo hacer los ejercicios prácticos de Access?
Advertisements

Bases de datos. bases de datos2 Bases de datos Una BD es un conjunto de datos integrados con información de un sistema objeto, con redundancia controlada.
SQL Sigla del nombre “Structured Query Language”.
LENGUAJE ESTRUCTURADO DE CONSULTA “SQL”
BASE DE DATOS OBJETO RELACIONAL
09/02/2014Curso Bases de Datos1 Ejemplos Álgebra Relacional.
Introducción a Transact-SQL
Marzo de 2010Dos Ideas - La visión de Sistemas desde el Desarrollo Introducción a PL/SQL Conceptos básicos.
Fernando Velasco
Por: Ronald Toscano Pretelt
Unidad 3 Lenguaje de manipulación de datos(DML).
Presentación Asignatura POF030 Semana 1. Contenido En forma general, los conceptos que se estudiarán en la asignatura son: – Procedures – Functions –
INTELIGENCIA ARTIFICIAL
01/12/07Seminario de Bases de Datos1 Características Objeto Relacionales en Oracle 10G* * Tomado del curso de Francisco Moreno.
Seminario de Bases de Datos
11/06/201424/11/06Lab. Bases de Datos1 JSP y Bases de Datos * * Tomado del curso de Francisco Moreno.
EL LENGUAJE ESTÁNDAR SQL
DATAWAREHOUSE.
ALGEBRA RELACIONAL.
MODELOS DE DATOS.
MODELO RELACIONAL.
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle
Características Objeto Relacionales en Oracle
PL/SQL Francisco Moreno Universidad Nacional.
EXPLAIN PLAN Cómo leer los resultados del EXPLAIN PLAN
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
Modelo Entidad Relación (E-R) Por Francisco Moreno
Características Objeto Relacionales en Oracle
Oracle, orientado a objetos
Lenguaje Estructurado de Consultas (Structured Query Language – SQL)
PL/SQL Francisco Moreno Universidad Nacional.
Contenido de la sesión 1 Bases de Datos Relacionales Lenguaje SQL
4/7/2015Curso Bases de Datos1 MODELO DE OBJETOS SEMÁNTICOS Francisco Moreno.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
Control del Acceso de los Usuarios
MySQL M.C. Pedro Bello López.
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.
Bases de Datos Relacionales
PL/SQL Francisco Moreno Universidad Nacional.
Componentes sintácticos
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.
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)‏
SQL: Lenguaje de Interrogación Estructurado. Vistas Declaración de vista CREATE VIEW ( ) AS SELECT... Semántica Tabla virtual cuyo contenido es el resultado.
Características Objeto Relacionales en Oracle
Características Objeto-Relacionales en Oracle Francisco Moreno Universidad Nacional.
Consultas SQL (Base de Datos)
INSTRUCCIONES Elaboración de la Presentación:
Introducción a Bases de Datos en Microsoft Access Programación de Computadoras 2 Sección: P.
Structured Query Language (Lenguaje Estructurado de Consultas)
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.
Expresiones algebraicas equivalentes
Lenguaje Estructurado de Consulta
SQL Sigla del nombre “Structured Query Language”.
Base de Datos I. SQL es el lenguaje estándar para trabaja con base de datos relacionales. MySQL, el sistema de gestión de bases de datos SQL Open Source.
SQL Lenguaje Estructurado de Consulta MATERIA: diseñar sistemas de información ALUMNO: sarmiento flores Liliana Guadalupe GRUPO: 4° “A” TURNO: matutino.
Comandos de SQL Prog. Orientada a Eventos. Inserción de datos (INSERT) INSERT….VALUES INSERT INTO Tabla1 (Columna1, Columna2…) VALUES (‘ValorAlfa’, ValorNum…);
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.
(Lenguaje de consulta estructurado)
SQL Lenguaje Estructurado de Consultas. Structured Query Lenguaje (SQL). Lenguaje de acceso a bases de datos. Proyecto de Investigación de IBM. La mayoria.
AA Gerardo Morgade Donato AA Isnel Leyva Herbella.
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.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
Crear una tabla (create table - sp_tables - sp_columns - drop table) Para ver las tablas existentes creadas por los usuarios en una base de datos usamos.
Características Objeto Relacionales en Oracle
Transcripción de la presentación:

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 Datos2 Colecciones Las colecciones en Oracle son de 2 Tipos: Tablas Anidadas (Nested Tables) Varrays (Variable Arrays )

01/12/07Seminario de Bases de Datos3 Tablas Anidadas La intersección de una fila y una columna puede contener una tabla ¿Violación a la primera forma normal? Álgebra y Cálculo para este tipo de relaciones en: Roth, M.A.; Korth, H.F.; Silberschatz, A. "Extended Algebra and Calculus for ~1NF Relational Databases, Reporte Técnico TR.85.19, Universidad de Texas, Austin, 1985.

01/12/07Seminario de Bases de Datos4 tipo Primero se debe definir el tipo de la tabla anidada que desea crear El tipo de datos de la tabla anidada puede estar basado en un tipo de datos: - Primitivo - Definido por el usuario (típicamente) - Incluso en el de otra tabla anidada (tablas anidadas de tablas anidadas etc.)

01/12/07Seminario de Bases de Datos5 Cada tabla anidada puede contener un número ilimitado de filas Son una alternativa para eliminar relaciones 1 a muchos haciendo en algunos casos más natural el diseño El lenguaje para su manipulación puede resultar complejo

01/12/07Seminario de Bases de Datos6 Ejemplo Modelo Entidad Relación ORDEN # id_orden *fecha DETALLE #id_producto *cantidad en compuesta de Nota: La relación de orden a detalle podría ser obligatoria… Veamos algunas alternativas para implementar este modelo

01/12/07Seminario de Bases de Datos7 Relacional Relacional: 2 tablas y manejo de clave foránea ORDEN # id_orden *fecha DETALLE#id_producto #Id_orden () #Id_orden (cf)*cantidad Objeto relacionalPrimera forma cons Objeto relacional: Primera forma con REFs: -Crear los tipos para ORDEN y para DETALLE -Crear las tablas tipadas correspondientes -En el tipo DETALLE el atributo id_orden en vez de ser una clave foránea, se convierte en un REF que apunta hacia una tabla tipada de órdenes

01/12/07Seminario de Bases de Datos8 Objeto relacionalSegunda forma con tablas anidadas Objeto relacional: Segunda forma con tablas anidadas Se crea un tipo tabla anidada para manejar los detalles Se crea una tabla clásica para manejar las órdenes con columnas: - id_orden - fecha - detalles: La cual será una tabla anidada de detalles, donde cada detalle consta de - id_producto - cantidad

01/12/07Seminario de Bases de Datos9 Gráficamente: Junio 23 de Vacía Mayo 2 de Julio 13 de detallesfechaid_orden cantidadid_producto Órdenes Tabla de Órdenes 1501cantidadid_producto

01/12/07Seminario de Bases de Datos10 Se crea normalmente el tipo para los detalles: DROP TYPE detalle_tip FORCE; CREATE OR REPLACE TYPE detalle_tip AS OBJECT( id_producto NUMBER(3), cantidad NUMBER(10)); /

01/12/07Seminario de Bases de Datos11 Se crea el tipo de la tabla anidada basada en el tipo detalle_tip : CREATE OR REPLACE TYPE nest_detalle nest_detalle AS TABLE OF detalle_tip; / Un tipo de tabla anidada puede estar basado en un tipo primitivo, por ejemplo: CREATE OR REPLACE TYPE hobbies AS TABLE OF VARCHAR2(10); /

01/12/07Seminario de Bases de Datos12 nest_detalle Ahora ya es posible declarar la columna detalles de tipo nest_detalle (tabla anidada de detalles): DROP TABLE orden PURGE; CREATE TABLE orden ( id_orden NUMBER(3) PRIMARY KEY, fecha DATE NOT NULL, detalles nest_detalle detalles nest_detalle) NESTED TABLE detalles STORE AS store_detalles NESTED TABLE detalles STORE AS store_detalles; ¿Qué significa?

01/12/07Seminario de Bases de Datos13 detalles detalles es el nombre de la columna y contiene para cada orden su tabla anidada de detalles. store_detalles todas store_detalles es el nombre físico del lugar (tabla) donde se almacenan todas las tablas anidadas de la columna detalles. detalles Esta tabla no se puede accesar directamente*, sólo a través de la columna detalles. Directamente es intocable, sólo se puede describir… * Aunque existe un HINT, que no se verá acá, que permite hacerlo…

01/12/07Seminario de Bases de Datos14 Inserción de datos INSERT INTO orden VALUES(100,SYSDATE, nest_detalle( detalle_tip(10,1000), detalle_tip(11,900), detalle_tip(17,200)) ); INSERT INTO orden VALUES(200,SYSDATE+1, nest_detalle( detalle_tip(10,2000), detalle_tip(5,100), detalle_tip(13,220)) );

01/12/07Seminario de Bases de Datos15 Selección: La selección es normal: SELECT * FROM orden; --Imprime cada orden acompañada de todos sus items… SELECT detalles, id_orden FROM orden; --Imprime el código de cada orden y sus detalles… ¿Qué pasa si se desea imprimir el código de cada orden sólo con el código de los productos de sus detalles? Ver más adelante

01/12/07Seminario de Bases de Datos16 Para agregar más detalles a la orden # 100, se requiere usar el operador TABLE, para acceder a la tabla anidada así: TABLE INSERT INTO TABLE (SELECT detalles FROM orden WHERE id_orden=100) VALUES(31,330); INSERT INTO TABLE (SELECT detalles FROM orden WHERE id_orden=200) VALUES(32,30);

01/12/07Seminario de Bases de Datos17 Considérese lo siguiente: DELETE orden; INSERT INTO orden VALUES(111,SYSDATE,NULL); --Y ahora: INSERT INTO TABLE (SELECT detalles FROM orden WHERE id_orden=111) VALUES(10,22); --Genera el error: ORA-22908: reference to NULL table value ¿Entonces cómo llenarla? Tabla anidada nula

01/12/07Seminario de Bases de Datos18 Lo que se debe hacer es un update de la siguiente manera: UPDATE orden SET detalles = nest_detalle ( detalle_tip(10,1000), detalle_tip(11,1100), detalle_tip(12,1200)) WHERE id_orden = 111;

01/12/07Seminario de Bases de Datos19 Supóngase que se realiza lo siguiente: DELETE FROM TABLE(SELECT detalles FROM orden WHERE id_orden=111); Para insertar los detalles de la orden 111, se puede proceder* así: INSERT INTO TABLE (SELECT detalles FROM orden WHERE id_orden=111) VALUES(10,2000); Conclusión: Tabla anidada átomicamente nula Tabla anidada vacía * En este caso el UPDATE también funciona

01/12/07Seminario de Bases de Datos20 Sumar 5 unidades a la cantidad de la orden 111 en su item 10: UPDATE TABLE(SELECT detalles FROM orden WHERE id_orden=111) anidada SET anidada.cantidad=anidada.cantidad + 5 WHERE anidada.id_producto = 10; El alias es opcional… Borrar el item 10 a la orden 111: DELETE FROM TABLE(SELECT detalles FROM orden WHERE id_orden=111) WHERE id_producto=10;

01/12/07Seminario de Bases de Datos21 Selección de columnas de la tabla anidada con columnas de la tabla que la contiene: SELECT id_orden, t2.id_producto FROM orden t, TABLE(t.detalles) t2; Desanidamiento

01/12/07Seminario de Bases de Datos22 Star#name*age Planet Planet #name *mass gobernando a orbitando a Satellite#name*diameter orbitando a gobernando a

01/12/07Seminario de Bases de Datos23 DROP TYPE satellite_t FORCE; CREATE OR REPLACE TYPE satellite_t AS OBJECT ( name VARCHAR2(20), diameter NUMBER(10)); / DROP TYPE nt_sat_t FORCE; CREATE TYPE nt_sat_t AS TABLE OF satellite_t; /

01/12/07Seminario de Bases de Datos24 DROP TYPE planet_t FORCE; CREATE OR REPLACE TYPE planet_t AS OBJECT ( name VARCHAR2(20), mass NUMBER(10), satellites nt_sat_t); / DROP TYPE nt_pl_t FORCE; CREATE TYPE nt_pl_t AS TABLE OF planet_t; /

01/12/07Seminario de Bases de Datos25 DROP TABLE star PURGE; CREATE TABLE star( name VARCHAR2(20), age NUMBER(10), planets nt_pl_t) NESTED TABLE planets STORE AS planets_tab (NESTED TABLE satellites STORE AS satellites_tab);

01/12/07Seminario de Bases de Datos26 INSERT INTO star VALUES ('Sun',23,nt_pl_t( planet_t('Neptune',10, nt_sat_t( satellite_t('Proteus',67), satellite_t('Triton',82) ) ), planet_t('Jupiter',189, nt_sat_t( satellite_t('Callisto',97), satellite_t('Ganymede', 22) ) ); ¿Qué implicaciones tendría manejar una entidad llamada cuerpo_celeste y manejar subtipos?

01/12/07Seminario de Bases de Datos27 SELECT s.name sn, p.name pn,t.name tn FROM star s, TABLE(s.planets) p, TABLE(p.satellites) t; SN PN TN Sun Neptune Proteus Sun Neptune Triton Sun Jupiter Callisto Sun Jupiter Ganymede