Caractersticas ObjetoRelacionales en Oracle - PowerPoint PPT Presentation

Loading...

PPT – Caractersticas ObjetoRelacionales en Oracle PowerPoint presentation | free to download - id: 281c8a-Zjc2M



Loading


The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation
Title:

Caractersticas ObjetoRelacionales en Oracle

Description:

Se requiere alias para accesar los atributos. contenidos en un tipo: ... Inserte las 4 filas dadas (diapositivas 4 y 7) 4. Cree el trigger de la siguiente diapositiva: ... – PowerPoint PPT presentation

Number of Views:34
Avg rating:3.0/5.0
Slides: 20
Provided by: ingenieri4
Category:

less

Write a Comment
User Comments (0)
Transcript and Presenter's Notes

Title: Caractersticas ObjetoRelacionales en Oracle


1
Características Objeto-Relacionales en Oracle
Tomado del curso de Francisco Moreno
2
Tipos
  • CREATE TYPE nom_tipo AS OBJECT(
  • atributos...
  • métodos...
  • ) cláusula de instanciabilidad
  • cláusula de herencia
  • /
  • Valor por defecto INSTANTIABLE
  • Ojo El valor por defecto es FINAL

3
  • Ejemplo
  • DROP TYPE location_typ FORCE
  • CREATE TYPE location_typ AS OBJECT(
  • address VARCHAR2(20),
  • city VARCHAR2 (20),
  • country VARCHAR2 (20)
  • )
  • /

4
  • CREATE TABLE area(
  • id NUMBER(3) PRIMARY KEY,
  • name VARCHAR2(10),
  • location location_typ
  • )
  • INSERT INTO area
  • VALUES(29, 'Prog',
  • location_typ('Cl 20','Med','Col'))

Sin NEW!
5
  • Selección
  • SELECT name, location
  • FROM area
  • SELECT name, location.country
  • FROM area

No funciona!
6
  • Se requiere alias para accesar los atributos
  • contenidos en un tipo
  • SELECT name, a.location.country
  • FROM area a
  • SELECT name, location
  • FROM area a
  • WHERE a.location.address like 'Cl'

7
  • INSERT INTO area VALUES(13, 'Ventas',
  • location_typ('Cl 20','Med','Col'))
  • INSERT INTO area VALUES (35, 'Mercadeo',
  • location_typ('Cr Sta Fe', 'Car', 'Ven'))
  • INSERT INTO area VALUES (99, 'Public',
  • location_typ('Cl 20','Med','Col'))
  • Ejercicio Seleccionar el código de los dptos que
    tienen la
  • misma localización que el dpto 13 (es decir que
    posean el
  • mismo país, ciudad y dir)

8
  • Primera forma
  • SELECT id
  • FROM area a1
  • WHERE a1.location.country ( SELECT
    a2.location.country
  • FROM area a2
    WHERE id13)
  • AND a1.location.city ( SELECT
    a2.location.city
  • FROM area a2
    WHERE id13)
  • AND a1.location.address ( SELECT
    a2.location.address
  • FROM area a2
    WHERE id13)
  • Es incómodopero se puede mejorar

9
  • Segunda forma
  • SELECT id
  • FROM area a1
  • WHERE(a1.location.country, a1.location.city,
  • a1.location.address)(SELECT
    a2.location.country,

  • a2.location.city,

  • a2.location.address
  • FROM area a2
  • WHERE id 13)
  • Ha mejorado un pocopero es posible mejorarlo más

10
  • Tercera forma
  • SELECT id
  • FROM area
  • WHERE location ( SELECT location
  • FROM area
  • WHERE id 13)
  • Ejercicio
  • Imprimir todas las parejas de códigos de
  • los departamentos que están situados en la
  • misma localización.

11
  • Solución
  • SELECT a.id, b.id
  • FROM area a, area b
  • WHERE a.locationb.location
  • AND a.id lt b.id
  • Qué pasa con esta consulta?
  • SELECT location, count()
  • FROM area
  • GROUP BY location

12
Algunos trucos
  • Se mostrarán las instrucciones para lograr
  • que un atributo que está dentro de un
  • tipo
  • A) Tenga un índice
  • B) Sea obligatorio
  • C) Sea o haga parte de la clave primaria de la
  • tabla
  • D) Sea o haga parte de una clave alternativa

13
  • A)
  • CREATE INDEX index_ciudad ON area(location.city)
  • B)
  • DROP TABLE area
  • CREATE TABLE area
  • (id NUMBER(3) PRIMARY KEY,
  • name VARCHAR2(10),
  • location location_typ CHECK(location.country IS
    NOT NULL)
  • )

14
  • C)
  • ALTER TABLE area DROP PRIMARY KEY
  • ALTER TABLE area ADD
  • PRIMARY KEY(location.country)
  • D)
  • ALTER TABLE area
  • ADD UNIQUE(location.address)
  • La opción MODIFY no funciona en este caso.


Si ya hay países repetidos no se activará
15
  • Qué hacen las siguientes instrucciones?
  • CREATE TABLE employee(
  • code number(8) PRIMARY KEY,
  • working_country VARCHAR(15)
  • )
  • ALTER TABLE employee ADD
  • FOREIGN KEY(working_country) REFERENCES
  • area(location.country)
  • Qué característica debe cumplir el atributo
    country de localización en la tabla área?

16
Sea el tipo
  • CREATE TYPE audit_type AS OBJECT(
  • quien VARCHAR(20), cuando DATE, donde
    VARCHAR(10)
  • )
  • /

Sean las tablas
CREATE TABLE local_movers( old_country
VARCHAR(20), audit_data audit_type )
CREATE TABLE inter_movers( city VARCHAR(20),
audit_data audit_type )
17
  • Descubra que realiza el siguiente trigger
  • 1. Destruya las tablas employee y area
  • 2. Cree de nuevo la tabla area (ver diapositiva
    4).
  • 3. Inserte las 4 filas dadas (diapositivas 4 y 7)
  • 4. Cree el trigger de la siguiente diapositiva

18
  • CREATE OR REPLACE TRIGGER movimientos
  • BEFORE UPDATE OF location ON area
  • FOR EACH ROW
  • BEGIN
  • IF ((OLD.location.country 'Col') AND
  • (NEW.location.country ltgt 'Col')) THEN
  • INSERT INTO inter_movers
  • VALUES(OLD.location.city, audit_type(
  • USER, SYSDATE, USERENV('TERMINAL')))
  • ELSE IF ((OLD.location.country ltgt 'Col') AND
  • (NEW.location.country 'Col')) THEN
  • INSERT INTO local_movers
  • VALUES(OLD.location.country,
    audit_type(

19
  • 5. Ejecute el siguiente UPDATE
  • UPDATE area a
  • SET a.locationlocation_typ('7','Pekín','China'
    )
  • WHERE id13
  • 6. Mire qué pasa en las tablas local e inter
    movers
  • Ejercicio
  • Modificar las tablas de local e inter_movers de
    tal forma
  • que incluyan el código del area (id).
About PowerShow.com