Download Material Completo
Document related concepts
Transcript
MDD2501 Modelamiento de Datos y Bases de Datos Semanas: •Case Method Oracle •Identificar atributos •Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER •Link’s de Interés •Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos •Ejercicio Normalización •Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos •Vistas •Selección de datos •Diccionario de Datos Semana Nº1: Case Method Oracle •Identificar atributos •Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER •Link’s de Interés •Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos •Ejercicio Normalización •Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos •Vistas •Selección de datos •Diccionario de Datos • Aprendizajes esperados: • Alumno reconoce etapas del desarrollo de software, utilizando la metodología propuesta por Oracle • Contenidos: • Introducción al Case Method Oracle Fases del Desarrollo – Method Case Oracle La herramienta CASE es una metodología para el diseño de sistemas, cuya función principal es el el apoyo mediante automatización del trabajo manual y/o repetitivo Fases del Desarrollo – Method Case Oracle Desde el punto de vista de herramientas, las fases del desarrollo su pueden observar mediante la propia pantalla inicial de la herramienta Designer de Oracle Resumen Etapas y productos 1. Estrategia: Diagrama de procesos. 2. Análisis: Modelo Entidad Relación Modelo DFD Diagrama Funcional 3. Diseño Diseño Físico de Tablas Diseño de módulos y programas y layout de pantallas y reportes Diseño de procedimientos almacenados 4. Construcción Script de tablas y restricciones Pantallas y Reportes Procedimientos almacenados 5. Documentación Informes de Análisis, Diseño y Construcción CDM •El Case Method de Oracle ha pasado por varias transformaciones. • Actualmente se conoce como CDM (Custom Development Methodology) y su adaptación para Java es JCDM CDM • Es un método intensivo en documentación con estándares pre-definidos. • La cantidad de documentación será variable dependiendo del tamaño y complejidad de la aplicación que se desarrolla • La documentación es mucha y requiere validaciones permanentes por parte de los clientes, con el fin de garantizar que los requisitos se están cumpliendo adecuadamente hasta llegar a la aplicación final. Semana Nº2: •Case Method Oracle Identificar atributos •Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER •Link’s de Interés •Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos •Ejercicio Normalización •Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos •Vistas •Selección de datos •Diccionario de Datos • Aprendizajes esperados: • Alumno revisa un objeto y rescata de éste los atributos que pueda visualizar • Es capaz de identificar atributos y características del mismo objeto, desde otros puntos de vista • Contenidos: • Identifica los atributos de una entidad Concepto de atributos de objetos Los atributos describen un objeto que ha sido seleccionado para ser incluido en el modelo de análisis. En esencia, son los atributos los que definen al objeto, los que clarifican lo que representa el objeto en el contexto del espacio del problema Identificar atributos • Según lo que se desea desarrollar o diagramar, un objeto, puede ser identificado por distintos atributos según el punto de vista aplicado . • Por ejemplo, un computador (el de la imagen), puede ser visto desde los siguientes puntos de vista: • Físico (forma, tamaño, componentes) • Contable (marca, valor) Algunos atributos del computador • Punto de vista físico: • Capacidad Disco Duro • Capacidad Memoria RAM • Procesador • Color • Peso • Tarjeta Video • Punto de vista contable: • Número de Serie • Marca • Valor Comercial • Valor Contable • Años uso • Centro de Costo Identificar atributos del objeto automóvil • Punto de vista físico • Color • Motor • Cantidad Ruedas • Capacidad Maletero • Punto de vista de un comprador • Estado • Kilómetros recorridos • Cantidad dueños anteriores • Precio Venta • Punto de vista de un corredor • Motor (coincide con el pto. de vista físico) • Velocidad • Aceleración • Torque • Punto de vista del Registro Civil • Patente • Dueño • Nº Motor • Nº Chasis • Año Identifique los atributos de los objetos según los puntos de vista planteados • Punto de vista físico • Punto de vista contable • Punto de vista de un comprador • ¿Qué otros puntos de vista se pueden aplicar? Edificio Televisor Árbol Semana Nº3: •Case Method Oracle •Identificar atributos Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER •Link’s de Interés •Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos •Ejercicio Normalización •Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos •Vistas •Selección de datos •Diccionario de Datos • Aprendizajes esperados: • Alumno, dentro de un problema planteado, es capaz de identificar los elementos para el desarrollo del modelo Entidad - Relación • Adquiere herramientas para identificar e interpretar la realidad para plasmarla en un MER • Contenidos: • Guía de ayuda para el desarrollo de un MER Esquematización de la realidad Para crear el esquema de la base de datos, primero es necesario modelarla. • Para llegar al modelo, se debe tener la capacidad de analizar la problemática, abstraerse y generar el esquema necesario • Algunos pasos para el desarrollo • Aún cuando en el desarrollo de modelos, se debe analizar cada problemática en particular, existen ciertos análisis básicos en los cuales se puede apoyar para desarrollar dichos modelos • En algunos casos, el análisis sintáctico del problema puedo apoyarlo en el desarrollo del modelo Ejemplo del análisis de un problema • Considere lo siguiente: “El libro rojo está sobre la mesa redonda” • Para reconocer entidades debemos identificar los “objetos” (generalmente sustantivos) que tienen relevancia o que interfieren en el estudio que se realiza. Para el presente ejemplo, las entidades serían “libro” y “mesa” Ejemplo del análisis de un problema • Los atributos son características (generalmente adjetivos) de las entidades identificadas. Se debe considerar que si fueran adjetivos, estos representan al dominio del atributo. En el presente ejemplo, “rojo” (dominio) es una característica de “libro”, es por ello que el atributo es “color”. Algo similar para la entidad “mesa” con el dominio “redonda”, para este caso el atributo es “forma” Ejemplo del análisis de un problema • Las relación es la “acción” (generalmente verbo) de una de las entidades identificadas sobre la otra(*). Así en el ejemplo, la “acción” existente señala que el libro está sobre la mesa. (*) Existen ocasiones en que una relación nace en una entidad y termina en la misma (relación uni-aria) MER del ejemplo forma color libro Está sobre mesa Es evidente que las entidades requieren otros atributos, pero sólo nos estamos limitando por esta vez a lo señalado en el ejemplo Otro ejemplo Considere lo siguiente: “El jardín infantil “Los gatitos felices”, ubicado en el centro de la ciudad, atiende actualmente a 20 niños de distintas edades. Cada uno ellos es identificado por su nombre….” edad nombre atiende jardín capacidad ubicación niño nombre La verbalización “es identificado” no se considera, ya que no es relevante para el problema analizado, además que dicha “acción” está contenida en la relación existente (atiende) entre las entidades identificadas (jardín y niño) Algunas consideraciones • Dos entidades pueden coincidir en algunos de los nombres de sus atributos • Dos entidades que exactamente tengan los mismos atributos, se deben re-estudiar, ya que si dicha situación es real, dichas entidades son lo mismo • Es recomendable identificar al menos un atributo para cada entidad que lo distinga de los demás atributos • También se deben establecer atributos que tengan relación con la problemática analizada. Por ejemplo, el atributo “sabor” de la entidad “memoria ram” no tiene relevancia para una problemática sobre computadores Desarrolle el MER para el siguiente problema • Las vendedoras, identificadas por su nombre y un código, ofrecen productos para la dueña de casa. Dichos productos, para distintos usos (limpieza, belleza) tienen precio y fecha de vencimiento Semana Nº4: •Case Method Oracle •Identificar atributos •Análisis para el desarrollo del Modelo Conceptual Ejemplo de MER •Link’s de Interés •Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos •Ejercicio Normalización •Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos •Vistas •Selección de datos •Diccionario de Datos • Aprendizajes esperados: Mediante un ejemplo, el alumno pone en práctica lo aprendido a la fecha respecto a los modelos Entidad Relación • • Contenidos: • Ejercicio de desarrollo de un MER Problemática planteada • Una cadena de Video-Clubs ha decidido, para mejorar su servicio, emplear una base de datos para almacenar la información referente a las películas que ofrece en alquiler. Esta información es la siguiente: • Una película se caracteriza por su título, nacionalidad, productora y fecha (p.e., “Quo Vadis” , “Estados Unidos” , “M.G.M.” , 1955) . • En una película pueden participar varios actores (nombre, nacionalidad, sexo) algunos de ellos como actores principales. • Una película está dirigida por un director (nombre, nacionalidad) . • De cada película se dispone de uno o varios ejemplares diferenciados por un número de ejemplar y caracterizados por su estado de conservación. • Un ejemplar se puede encontrar alquilado a algún socio (RUT , nombre, dirección, teléfono) . Se desea almacenar la fecha de comienzo del alquiler y la de devolución. • Un socio tiene que ser avalado por otro socio que responda de él en caso de tener problemas en el alquiler. Análisis del problema planteado • En el problema se pueden distinguir, en primera instancia, las entidades “película”, “actor”, “director”, “ejemplar”, “socio” Algunas consideraciones • En ocasiones, las problemáticas no cubren todos los aspectos que el desarrollador encuentra. Por ejemplo en el problema, se señala que un ejemplar de película puede estar alquilado a un socio. Pero a lo largo del tiempo, ese ejemplar puede ser alquilado por mas de un socio. • Las dudas deben ser planteadas al cliente, pero como en este caso no es posible, asumiremos algunos supuestos Estableciendo las relaciones • Según el problema, se visualizan las siguientes relaciones: • “En una película pueden participar varios actores”: • Cardinalidad 1:N entre película y actor • “Una película está dirigida por un director”: • Cardinalidad 1:1 entre película y director • “De cada película se dispone de uno o varios ejemplares”: • Cardinalidad 1:N entre película y ejemplar • “Un ejemplar se puede encontrar alquilado a algún socio”: • Cardinalidad 1:N entre película y socio • “Un socio tiene que ser avalado por otro socio”: • Cardinalidad 1:N entre socio y socio Estableciendo las relaciones • Asumamos también los siguientes supuestos: • En actor puede participar en varias películas • Una película sólo es dirigida por un director • Un socio puede alquilar varios ejemplares • Un socio es avalado sólo por un socio, pero éste puede avalar a varios de ellos Modelo propuesto Ejercicios • Para el modelo propuesto aún falta definir: ¿Cuáles son los atributos claves? ¿Cuáles son las cardinalidades? ¿Qué otros supuestos puede aplicar? Semana Nº6: •Case Method Oracle •Identificar atributos •Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER Link’s de Interés •Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos •Ejercicio Normalización •Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos •Vistas •Selección de datos •Diccionario de Datos • Aprendizajes esperados: • Alumno complementa su aprendizaje, con una serie de sitios entregados para su revisión • Contenidos: • Listado de sitios de interés en Internet con material que permite complementar lo aprendido en clases Sitios en Internet • Sobre SGBD: •http://es.wikipedia.org/wiki/Sistema_de_ge stión_de_bases_de_datos •http://www.desarrollodeaplicacionesinform aticas.com/index.php/Analisis/Tema-14Sistemas-Gestores-de-Bases-de-datos/1introduccion.html •http://www.monografias.com/trabajos11/b asda/basda.shtml Sitios en Internet •Sobre MER: •http://es.wikipedia.org/wiki/Modelo_entid ad-relación •http://www.tejedoresdelweb.com/wiki/ima ges/c/c7/Basesdatos_teo3_modelo_er.pdf •http://www.uazuay.edu.ec/analisis/Modelo %20Entidad%20Relacion.pdf Semana Nº8: •Case Method Oracle •Identificar atributos •Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER •Link’s de Interés Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos •Ejercicio Normalización •Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos •Vistas •Selección de datos •Diccionario de Datos • Aprendizajes esperados: Alumno aprende las reglas básicas para transformar un modelo entidad – relación a un modelo relacional • • Contenidos: • Ejemplo de mapeo de un modelo entidad – relación a un modelo relacional Modelo • Considere el siguiente modelo: Nota: De rojo, los atributos claves Mapeo para las relaciones • Correspondencia 1:1 : El diseñador de la BD determina que clave primaria va a repetir en otra entidad, según un estudio lógico y no podrá tener valores duplicados para dicha entidad • Correspondencia 1:N : La clave primaria del lado 1 siempre se repetirá en la entidad correspondiente al lado N, y podrá tomar valores duplicados para esta entidad. • Correspondencia M:N : La relación se transforma en entidad y las claves primarias de las entidades originales pasan como clave foránea de esta nueva entidad Mapeo del ejemplo • Para realizar el mapeo, se analiza uno a uno cada relación • Comenzaremos por la relación “R1” • La relación “R1”, tiene una correspondencia M:N (muchos a muchos) • Por lo tanto, la regla que se aplica: “La relación se transforma en entidad y las claves primarias de las entidades originales pasan como clave foránea de esta nueva entidad” Mapeo del ejemplo • Notar que no necesariamente los atributos claves que se traspasan pasan como tales en la entidad destino (depende de la problemática planteada) • El símbolo de la relación “R1” (rombo) desaparece y se cambia por el rectángulo • Hacia la nueva entidad (R1) quedan las cardinalidades “muchos”. A esta nueva entidad se le conoce como “tabla de rompimiento” • El atributo de la relación (C1), se conserva en la nueva entidad Mapeo del ejemplo • Ahora seguimos con la relación “R2” • La relación “R2”, tiene una correspondencia 1:N (uno a muchos) • Por lo tanto, la regla que se aplica: “La clave primaria del lado 1 siempre se repetirá en la entidad correspondiente al lado N, y podrá tomar valores duplicados para esta entidad ” Mapeo del ejemplo • Notar que no necesariamente los atributos claves que se traspasan pasan como tales en la entidad destino (depende de la problemática planteada) • El símbolo de la relación (R2) desaparece, quedando la cardinalidad “muchos” hacia el lado del la entidad destino Solución Completa Semana Nº9: •Case Method Oracle •Identificar atributos •Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER •Link’s de Interés •Mapeo a Modelo Relacional Ejercicio de Mapeo de Datos •Ejercicio Normalización •Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos •Vistas •Selección de datos •Diccionario de Datos • Aprendizajes esperados: Alumno aplica conocimientos adquiridos para transformar un modelo Entidad-Relación a un Modelo Relacional • • Contenidos: • Ejercicio de mapeo de MER a MR Problemática planteada • Una cadena de Video-Clubs ha decidido, para mejorar su servicio, emplear una base de datos para almacenar la información referente a las películas que ofrece en alquiler. Esta información es la siguiente: • Una película se caracteriza por su título, nacionalidad, productora y fecha (p.e., “Quo Vadis” , “Estados Unidos” , “M.G.M.” , 1955) . • En una película pueden participar varios actores (nombre, nacionalidad, sexo) algunos de ellos como actores principales. • Una película está dirigida por un director (nombre, nacionalidad) . • De cada película se dispone de uno o varios ejemplares diferenciados por un número de ejemplar y caracterizados por su estado de conservación. • Un ejemplar se puede encontrar alquilado a algún socio (RUT , nombre, dirección, teléfono) . Se desea almacenar la fecha de comienzo del alquiler y la de devolución. • Un socio tiene que ser avalado por otro socio que responda de él en caso de tener problemas en el alquiler. Modelo propuesto (Propuesto en Material de Semana 4) Ejercicios • Transformar el modelo entidad-relación a un modelo relacional • Recuerde las consideraciones que se tuvieron presentes cuando desarrolló el modelo EntidadRelación: • En actor puede participar en varias películas • Una película sólo es dirigida por un director • Un socio puede alquilar varios ejemplares • Un socio es avalado sólo por un socio, pero éste puede avalar a varios de ellos Semana Nº11: •Case Method Oracle •Identificar atributos •Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER •Link’s de Interés •Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos Ejercicio Normalización •Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos •Vistas •Selección de datos •Diccionario de Datos • Aprendizajes esperados: Alumno aplica conocimientos adquiridos respecto a la normalización y desnormalización de un modelo relacional • • Contenidos: • Ejercicio de normalización y desnormalización de un modelo relacional Modelo • Considere el siguiente modelo: Ejercicios planteados • Aplique las primeras tres formas normales al modelo planteado • Recuerde que: Primera Forma Normal (1FN) Todos los atributos son atómicos. Un atributo es atómico si los elementos del dominio son indivisibles, mínimos. La tabla contiene una clave primaria. La clave primaria no contiene atributos nulos. No debe de existir variación en el número de columnas. Segunda Forma Normal (2FN) Una relación está en 2FN si está en 1FN y si los atributos que no forman parte de ninguna clave dependen de forma completa de la clave principal. Es decir que no existen dependencias parciales. Tercera Forma Normal (3FN) La tabla se encuentra en 3FN si es 2FN y si no existe ninguna dependencia funcional transitiva entre los atributos que no son clave. Ejercicios planteados • Terminado el ejercicio anterior, considere que existen problemas de performance de la base de datos. Para ello debe desnormalizar el modelo planteado. ¿Qué alternativas de desnormalización plantearía? Semana Nº12: •Case Method Oracle •Identificar atributos •Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER •Link’s de Interés •Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos •Ejercicio Normalización Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos •Vistas •Selección de datos •Diccionario de Datos • Aprendizajes esperados: Alumno consulta a un esquema de datos, según el modelo relacional entregado • • Contenidos: • Ejemplos de consultas a un esquema de datos, según un modelo dado Modelo • Considere el siguiente modelo: Ejercicios planteados • Cantidad de personas registradas Para ello debemos contar los registros de la tabla persona Select count(rut) from persona; • No es necesario utilizar la cláusula “distinct”, debido a que rut es pk, por lo tanto, se entiende que los valores entregados serán distintos Ejercicios planteados • Cantidad de autos del año 2005 en adelante Para ello debemos contar los registros de la tabla auto Select count(patente) from auto where anio>=2005; •No es necesario utilizar la cláusula “distinct”, debido a que patente es pk, por lo tanto, se entiende que los valores entregados serán distintos Ejercicios planteados • Listar a las personas cuyo año de nacimiento sea posterior a 1970 Para ello seleccionaremos el rut y nombre de la persona Select rut, nombre from persona where to_char(fecha_nacimiento, ‘yyyy’)>1970; • Para el predicado, transformamos la fecha de nacimiento en un formato ‘yyyy’. Si bien to_char transforma a caracter, nos aprovechamos de la conversión implícita para compararlo con un dato numérico Ejercicios planteados • Listar a las personas con el auto que tenga asociado Para ello debemos realizar un “join” entre las tablas persona y auto Select a.rut, a.nombre, b.patente from persona a, auto b where b.rut=a.rut • Cuando se realiza “join”, se recomienda dar alias a las tablas (a y b) para una referencia mas expedita. En el predicado se establece el “join” (b.rut=a.rut) Semana Nº13: •Case Method Oracle •Identificar atributos •Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER •Link’s de Interés •Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos •Ejercicio Normalización •Ejercicios de consultas a un esquema DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos •Vistas •Selección de datos •Diccionario de Datos • Aprendizajes esperados: Alumno reconoce y utiliza las alternativas para crear un código SQL que permita generar un esquema de datos en la base de datos Oracle, según un modelo relacional dado • • Contenidos: • Ejemplo de creación de un script para generar un esquema en una base de datos Oracle, según un modelo relacional dado Modelo • Considere el siguiente modelo: Modelo diagramado con Oracle SQL Developer Data Modeler 2.0 Alcances para la generación del código • Se debe tener precaución cuando las tablas poseen llaves foráneas, ya que éstas hacen referencia a la llave primaria de otra tabla • Por ello, primero se debe crear la llave primaria de la otra tabla y después la llave foránea • Debido a lo anterior, existe mas de una alternativa para generar los códigos necesarios Código DDL – Alternativa 1 CREATE TABLE auto ( patente VARCHAR2 (6 CHAR) NOT NULL , marca VARCHAR2 (50 CHAR) , anio NUMBER (4) , rut VARCHAR2 (10 CHAR) NOT NULL , tipo_auto_id NUMBER (1) NOT NULL, CONSTRAINT auto_PK PRIMARY KEY ( patente )) ; CREATE TABLE persona ( rut VARCHAR2 (10 CHAR) NOT NULL , nombre VARCHAR2 (40 CHAR) NOT NULL , fecha_nacimiento DATE ) , CONSTRAINT persona_PK PRIMARY KEY ( rut )) ; CREATE TABLE tipo_auto ( tipo_auto_id NUMBER (1) NOT NULL , descripcion VARCHAR2 (30) , CONSTRAINT tipo_auto_PK PRIMARY KEY ( tipo_auto_id )) ; ALTER TABLE auto ADD (CONSTRAINT auto_persona_FK FOREIGN KEY ( rut ) REFERENCES persona ( rut ), CONSTRAINT auto_tipo_auto_FK FOREIGN KEY ( tipo_auto_id ) REFERENCES tipo_auto ( tipo_auto_id )) ; Notas sobre el código: •Para esta alternativa se crean las tablas sin llaves foráneas, sólo con su llave primaria •Finalmente se modifican las tablas que poseen llaves foráneas •Considerando lo anterior, el orden de creación de las tablas no es relevante •Se recomienda que a las restricciones (constraint) se les dé un nombre apropiado, ya que para grandes modelos, es más fácil identificar un posible error de consistencia de datos , ya que aparecerá el nombre de la restricción que no se está cumplimiento Código DDL – Alternativa 2 CREATE TABLE persona ( rut VARCHAR2 (10 CHAR) NOT NULL , nombre VARCHAR2 (40 CHAR) NOT NULL , fecha_nacimiento DATE ) , CONSTRAINT persona_PK PRIMARY KEY ( rut )) ; CREATE TABLE tipo_auto ( tipo_auto_id NUMBER (1) NOT NULL , descripcion VARCHAR2 (30) , CONSTRAINT tipo_auto_PK PRIMARY KEY ( tipo_auto_id )) ; CREATE TABLE auto ( patente VARCHAR2 (6 CHAR) NOT NULL , marca VARCHAR2 (50 CHAR) , anio NUMBER (4) , rut VARCHAR2 (10 CHAR) NOT NULL , tipo_auto_id NUMBER (1) NOT NULL, CONSTRAINT auto_PK PRIMARY KEY ( patente ), CONSTRAINT auto_persona_FK FOREIGN KEY ( rut ) REFERENCES persona ( rut ), CONSTRAINT auto_tipo_auto_FK FOREIGN KEY ( tipo_auto_id ) REFERENCES tipo_auto ( tipo_auto_id )) ; Notas sobre el código: •Para esta alternativa se crean primero las tablas que sólo poseen llave primaria •Finalmente se crean las tablas que poseen llaves foráneas •Considerando lo anterior, el orden de creación de las tablas es relevante •Se recomienda que a las restricciones (constraint) se les dé un nombre apropiado, ya que para grandes modelos, es más fácil identificar un posible error de consistencia de datos , ya que aparecerá el nombre de la restricción que no se está cumplimiento Código DDL – Alternativa 3 CREATE TABLE auto ( patente VARCHAR2 (6 CHAR) NOT NULL , marca VARCHAR2 (50 CHAR) , anio NUMBER (4) , rut VARCHAR2 (10 CHAR) NOT NULL , tipo_auto_id NUMBER (1) NOT NULL ); ALTER TABLE auto ADD CONSTRAINT auto_PK PRIMARY KEY ( patente ) ; CREATE TABLE persona ( rut VARCHAR2 (10 CHAR) NOT NULL , nombre VARCHAR2 (40 CHAR) NOT NULL , fecha_nacimiento DATE ) ; ALTER TABLE persona ADD CONSTRAINT persona_PK PRIMARY KEY ( rut ) ; CREATE TABLE tipo_auto ( tipo_auto_id NUMBER (1) NOT NULL , descripcion VARCHAR2 (30) ) ; ALTER TABLE tipo_auto ADD CONSTRAINT tipo_auto_PK PRIMARY KEY ( tipo_auto_id ); ALTER TABLE auto ADD CONSTRAINT auto_persona_FK FOREIGN KEY ( rut ) REFERENCES persona (rut ); ALTER TABLE auto ADD CONSTRAINT auto_tipo_auto_FK FOREIGN KEY ( tipo_auto_id ) REFERENCES tipo_auto ( tipo_auto_id ); Notas sobre el código: •Es una combinación de las anteriores, creando y modificando las tablas a medida que se avanza en el código, teniendo precaución en la creación de las tablas con llaves foráneas •Considerando lo anterior, el orden de creación de las tablas es relevante •Se recomienda que a las restricciones (constraint) se les dé un nombre apropiado, ya que para grandes modelos, es más fácil identificar un posible error de consistencia de datos , ya que aparecerá el nombre de la restricción que no se está cumplimiento Semana Nº14: •Case Method Oracle •Identificar atributos •Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER •Link’s de Interés •Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos •Ejercicio Normalización •Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional Ejemplos de manipulación de datos en un esquema de datos •Vistas •Selección de datos •Diccionario de Datos • Aprendizajes esperados: Alumno , dado un modelo de datos, identifica y selecciona las alternativas pertinentes para ingresar información a un modelo de datos • • Contenidos: • Demostración de manipulación de datos en un esquema de datos Modelo • Considere el siguiente modelo ya recreado en la base de datos. Aún no se ingresan datos: Modelo diagramado con Oracle SQL Developer Data Modeler 2.0 Alcances para el ingreso de datos • Se debe tener precaución cuando las tablas poseen llaves foráneas, ya que éstas hacen referencia a la llave primaria de otra tabla • Por ello, al ingresar datos a estas tablas, primero se debe ingresar datos a la tabla que posee la llave primaria, para mantener la integridad y coherencia de los datos Ingresando datos • Trataremos de ingresar un registro a la tabla “auto” • El ingreso arroja un error, debido a que no se ha respetado la integridad de datos. La tabla “auto” posee dos llaves foráneas que referencian a las tablas “persona” y “tipo_auto”. Por lo tanto, se deben ingresar registros en esas tablas primero Ingresando datos • Trataremos de ingresar un registro a la tabla “tipo_auto” • El ingreso fue exitoso. Observe que en el comando no se nombraron los campos a los cuales se les ingresa datos. Esto es posible sólo si se ingresarán datos a todos los campos de la tabla, además, en la cláusula “values”, los valores deben ir en el orden en el cual los campos fueron declarados cuando la tabla se creó en la base de datos Ingresando datos • Trataremos de ingresar un registro a la tabla “persona” • El ingreso fue exitoso. Observe que dentro de los valores ingresados, la fecha de nacimiento se ingresa como carácter (se reconoce porque usa comillas simples) siendo que el campo es de tipo “date” (fecha). Esto es posible ya que para ciertos tipos de datos, Oracle transforma ese tipo al tipo de datos que corresponde. Recuerde que sólo funciona para algunos tipos de datos Ingresando datos • Trataremos de ingresar nuevamente un registro en la tabla “auto” • Esta vez el ingreso fue exitoso. Observe que para los campos “rut” y “tipo_auto_id” los valores asignados corresponden a valores válidos que existen en las tablas “persona” y “tipo_auto”, respectivamente. Eliminando datos • Trataremos de eliminar un registro de la tabla “tipo_auto” • La sentencia arroja un error por integridad de datos. Esto se debe a que en la tabla auto existe un registro del “tipo de auto” 1. En otras palabras, se está tratando de borrar el registro que es padre de al menos 1 registro de la tabla auto (ver modelo relacional para mayor abundamiento) Eliminando datos • Como puede observar, la llave foránea de la tabla auto que lo relaciona con la tabla “tipo_auto”, señala que al suprimir un registro de la tabla padre, el borrado será restringido. Esta decisión se realiza cuando se está diseñando el modelo. • Las otras alternativas que existen para borrar un registro de la tabla padre, considerando este ejemplo, es que se asigne un valor nulo al campo tipo_auto_id de la tabla auto (set null), o que cuando el registro padre sea borrado, los registros hijos también lo sean (cascade) Eliminando datos • Modificaremos la restricción y le señalaremos que el borrado es en “cascada” Eliminando datos • Trataremos de eliminar nuevamente el registro de la tabla “tipo_auto” • Esta vez el borrado fue exitoso. Además si comprobamos el registro de la tabla auto, también fue borrado Semana Nº15: •Case Method Oracle •Identificar atributos •Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER •Link’s de Interés •Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos •Ejercicio Normalización •Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos Vistas •Selección de datos •Diccionario de Datos • Aprendizajes esperados: Alumno , dado un modelo de datos, crea , actualiza y manipula una vista en la base de datos • • Contenidos: • Ejemplo de creación y manipula una vista en la base de datos Modelo • Considere el siguiente modelo ya recreado en la base de datos. Aún no se ingresan datos: Modelo diagramado con Oracle SQL Developer Data Modeler 2.0 Vista a crear • Asumamos que se desea tener en una vista la cantidad de automóviles según su tipo • La sentencia SQL asociada sería: select b.descripcion tipo, count(a.patente) cantidad from auto a, tipo_auto b where a.tipo_auto_id=b.tipo_auto_id group by b.descripcion Creando la vista • La vista la denominamos “vw_tipos_autos”. A la senentecia SQL le anteponemos “create view vw_tipos_autos as” y la vista será creada Seleccionando datos • Podemos extraer datos de la vista • A la vista, para la selección, podemos tratarla como una tabla normal Segunda vista • Crearemos otra vista con la siguiente instrucción: CREATE VIEW VW_PERSONA AS SELECT rut, nombre FROM persona; Seleccionando datos • Podemos extraer datos de la vista • Al que la vista anterior, para la selección, podemos tratarla como una tabla normal Manipulando datos • Podemos manipular datos de la vista. Por ejemplo, le ingresaremos datos • En la tabla base de la vista, los datos quedan como se muestran a continuación: Ejercicio • En la segunda vista pudo observar la manipulación de datos que se pudo realizar • Entonces, ¿porqué en la primera de ellas no se puede realizar? Semana Nº16: •Case Method Oracle •Identificar atributos •Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER •Link’s de Interés •Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos •Ejercicio Normalización •Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos •Vistas Selección de datos •Diccionario de Datos • Aprendizajes esperados: Alumno , observa y aplica otras formas de aplicar el comando “select” de SQL • • Contenidos: • Ejemplos de otras utilizaciones del comando “select” Modelo • Considere el siguiente modelo ya recreado en la base de datos. Aún no se ingresan datos: Modelo diagramado con Oracle SQL Developer Data Modeler 2.0 Introducción • Además de las selecciones simples, se pueden realizar combinaciones mas complejas • Se pueden utilizar como “tablas”, o como “campos” Algunos usos • En el ejemplo, el “select interior” reemplaza en la cláusula “from” a la tabla o la vista Algunos usos • Se pueden utilizar para filtrar los registros que retorna un comando “select” Algunos usos • Se puede crear una tabla con el comando “select”. La tabla asume la estructura de los datos arrojados por el “select” Ejercicios • ¿Qué otras utilizaciones se pueden realizar? • ¿Se puede utilizar junto a comandos “insert”, “delete”, “update”? Semana Nº17: •Case Method Oracle •Identificar atributos •Análisis para el desarrollo del Modelo Conceptual •Ejemplo de MER •Link’s de Interés •Mapeo a Modelo Relacional •Ejercicio de Mapeo de Datos •Ejercicio Normalización •Ejercicios de consultas a un esquema •DDL – Ejemplo con un modelo relacional •Ejemplos de manipulación de datos en un esquema de datos •Vistas •Selección de datos Diccionario de Datos • Aprendizajes esperados: Alumno reconoce y utiliza las herramientas para la obtención del diccionario de datos desde la base de datos • • Contenidos: • Ejemplos para la obtención del diccionario de datos de la base de datos ¿Qué es Diccionario de Datos? (DD) • En palabras sencillas, es una especie de catálogo, que contiene las características (nombre, tamaño, alias, contenido, etc.) entre otros, de las tablas, datos pertenecientes a la base de datos • Se dice que el DD es una base de datos en sí, y entre distintos DBMS son distintos, pero mantienen el mismo lineamiento • Los ejemplos que se utilizarán, se basan en Oracle 10g Express Diccionario • En el ejemplo, se realiza una selección de la tabla “dictionary” (sinónimo). En ella podemos ver la lista de tabla o vistas que contienen información de los metadatos de la BD Algunos usos • Según la lista, las tablas o vistas comienzan por los prefijos DBA, ALL, USER. • Por ejemplo • DBA_TABLES: Todas las tablas que posee la base de datos (se necesitan permisos de DBA) • ALL_TABLES: Todas las tablas accesibles por el usuario (las propias + las que se les ha otorgado permiso) • USER_TABLES: Todas la tablas del usuario Diccionario • Tablas propias del usuario. Se aprecian cuatro (recuerde los ejemplos utilizados en los materiales de las semanas anteriores) Diccionario • Columnas de las tablas o vistas propias del usuario. Ejercicios • Obtener sólo las vistas propias del usuario • Obtener información del usuario actual • Obtener el listado de restricciones (constraints) del usuario actual de la base de datos