Tema II: Información Derivada: Vistas (2.6) El modelo relacional de datos Objetivos: conocer las estructuras de datos del modelo: la tupla y la relación conocer básicamente la forma de modelar la realidad utilizando el modelo relacional conocer los mecanismos del modelo relacional para expresar restricciones de integridad conocer los lenguajes de manipulación propuestos para este modelo de datos: Álgebra Relacional y Cálculo Relacional de Tuplas conocer mecanismos de vistas conocer el mecanismo de disparadores 1 El modelo relacional de datos 2.1 Modelo relacional de datos (Aproximación algebraica) 2.2 Esquema relacional: representación de la realidad 2.3 Modelo relacional de datos (Aproximación lógica) 2.4 Restricciones de integridad 2.5 El lenguaje estándar SQL 2.6 Vistas 2.7 Disparadores 2.6 Información Derivada: Vistas Los datos almacenados en la BD se organizan en relaciones definidas en el esquema de la BD. La información también puede estar expresada en forma de reglas generales de conocimiento Aumenta la capacidad expresiva de la BD SGBD tiene capacidad deductiva La información disponible ya no es sólo la almacenada explícitamente en forma de datos sino también la que se puede derivar a partir de estos datos por medio de reglas Las reglas se definen en el esquema de la BD Se puede utilizar cualquier tipo de lenguaje relacional El Álgebra Relacional (AR) o un lenguaje de tipo lógico (L). 2 2.6 Ejemplo de Información derivada: En el sistema de información relativo a la docencia en una universidad, existen las siguientes reglas de conocimiento: R1: “se consideran estudios de primer ciclo los tres primeros años del plan de estudios de una titulación, y estudios de segundo ciclo los años posteriores (si es que existen)”. R2: “se considera que una asignatura es aplicada si tiene un número de créditos prácticos igual o mayor al 75% del total de créditos” El conocimiento de estas reglas permite derivar información implícita que no está almacenada en la base de datos, por ejemplo: “los datos de las asignaturas aplicadas que son de primer ciclo”. 2.6 Ejemplo de Información derivada: Las reglas de conocimiento del Ejemplo podrían expresarse: R1: Álgebra Relacional: PrimerCiclo ← Asignatura DONDE semestre IN (“1A”, “1B”, “2A”, “2B”,“3A”, “3B”) Lógica: PrimerCiclo (AX) ← (AX:Asignatura AX.semestre IN (“1A”,“1B”,“2A”,“2B”,“3A”,“3B”) ) R2: Álgebra Relacional: Aplicada ← Asignatura DONDE ((prac / (teo + prac ))*100) ≥ 75 Lógica: Aplicada (AX) ← (AX: Asignatura ((AX.prac / (AX.teo + AX.prac ))*100) ≥ 75 ) 3 2.6 Ejemplo de Información derivada: Relaciones básicas Relaciones derivadas PrimerCiclo Asignatura R1 Aplicada R2 2.6 Ejemplo de Información derivada: Relación Básica Relaciones Derivadas 4 2.6 Información Derivada Una vez se han definido en el esquema las relaciones derivadas, ya se puede consultar la información derivada. Ejemplo de consultas: 1) Obtener todos los datos de las asignaturas de primer ciclo que tienen más de 5 créditos” AR: PrimerCiclo DONDE ( teo + prac)>5 L: AX:PrimerCiclo (AX.teo+AX.prac)>5 2) Obtener todos los datos de las asignaturas de primer ciclo que son aplicadas” AR: PrimerCiclo ∩ Aplicada L: AX:PrimerCiclo ∃ AY: Aplicada (AX.codigo=AY.codigo) 2.6 Información Derivada: vistas En el Modelo Relacional, a las relaciones derivadas se les domina vistas. Una vista es una relación derivada definida por una regla de derivación a partir de relaciones básicas u otras relaciones derivadas La regla de derivación se puede representar con una expresión escrita en un lenguaje relacional La evaluación de esta expresión devuelve las tuplas que constituyen la relación derivada. Las tuplas de una relación básica se almacenan explícitamente. Las tuplas de una vista se calculan cuando el usuario hace una consulta sobre la vista. 5 2.6 Vistas en SQL El lenguaje de definición de datos del SQL incluye una sentencia1 para la definición de vistas en el esquema BD CREATE VIEW nombre_vista [nom_columna1, nom_columna2, …, nom_columnan] AS expresión_tabla [WITH CHECK OPTION] Donde, nombre_vista: nombre de la vista [nom_columna1,....]: nombres de columna de la vista expresión_tabla: sentencia que define la relación derivada (SELECT) WITH CHECK OPTION: impide que se realice una actualización sobre la vista que viole su definición. 1DROP VIEW nombre_vista, permite eliminar una vista del esquema BD. 2.6 Vistas en SQL Las vistas del Ejemplo, se definen en SQL de la siguiente forma: R1: “Se consideran estudios de primer ciclo los tres primeros años del plan de estudios de una titulación, y estudios de segundo ciclo los años posteriores (si es que existen)”. CREATE VIEW PrimerCiclo AS SELECT * FROM Asignatura AX WHERE AX.semestre IN (‘1A’, ‘1B’, ‘2A’, ‘2B’, ‘3A’, ‘3B’) WITH CHECK OPTION 6 2.6 Vistas en SQL Las vistas del Ejemplo, se definen en SQL de la siguiente forma: R2: Se considera que una asignatura es aplicada si tiene un número de créditos prácticos igual o mayor al 75% del total de créditos” CREATE VIEW Aplicada AS SELECT * FROM Asignatura AX WHERE ( (AX.prac / (AX.teo + AX.prac ))*100) ≥ 75 WITH CHECK OPTION 2.6 Vistas en SQL La consulta 1 del Ejemplo, se expresaría en SQL: 1) “Obtener todos los datos de las asignaturas de primer ciclo que tienen más de 5 créditos” SELECT * FROM PrimerCiclo PX WHERE (PX.teo + PX.prac) > 5 Para evaluarla el SGBD, escribirá la sentencia SELECT del usuario utilizando la definición de la vista: SELECT * FROM Asignatura AX WHERE (AX.teo + AX.prac) > 5 AND AX.semestre IN (‘1A’, ‘1B’, ‘2A’, ‘2B’, ‘3A’, ‘3B’) La opción WITH CHECK OPTION prohibiría la actualización: INSERT INTO PrimerCiclo VALUES (“PD”, “Programación Declarativa”, “5A”, 3, 3, “DSIC”) (La tupla a ser insertada viola la definición de la vista PrimerCiclo, ya que PD es una asignatura de 5A curso). 7 2.6 Aplicaciones de las Vistas Definición de esquemas externos Preparación de consultas Definir vistas parciales del esquema lógico de la BD para distintos grupos de usuarios Definir y almacenar en la BD consultas complejas que son utilizadas frecuentemente Criterios de seguridad Aplicar políticas de seguridad (privacidad) de los datos 2.6 Aplicaciones de las Vistas Ejemplo: Definición de un esquema externo para el departamento DSIC sobre la BD de docencia: CREATE VIEW Asignaturas_DSIC AS SELECT codigo, nombre, semestre, teo, prac FROM Asignatura WHERE dep=‘DSIC’ CREATE VIEW Profesor_DSIC AS SELECT codigo, nombre, telefono, categoria FROM Profesor WHERE dep=‘DSIC’ CREATE VIEW Docencia_DSIC AS SELECT cod_pro, cod_asg, gteo, gprac FROM Docencia WHERE cod_pro IN (SELECT codigo FROM Profesor WHERE dep=‘DSIC’) Privacidad: Los usuarios de cada Depto sólo tendrían autorización para consultar el esquema externo correspondiente a su departamento). 8 Ejercicios sobre Vistas Considere la tabla CURSO, que contiene la siguiente extensión: Ejercicios sobre Vistas 1. Crear una vista denominada CursosS, que contenga las filas correspondientes a cursos ofrecidos por el departamento Sistemas. La vista deberá contener todas las columnas de la tabla CURSO, con la excepción de la columna Depto. CREATE VIEW CursosS AS SELECT NombreC,NumC,Creditos,Costo,DescC FROM CURSO WHERE DescC=‘Sistemas’; 9 Ejercicios sobre Vistas 2) Crear una vista denominada CursosCaros, correspondientes a las filas de la tabla CURSO, donde la tarifa exceda $150, las columnas de la vista deberán tener los nombres ClaveCurso, NombreCurso y CostoCaro. CREATE VIEW CursosSCaros(ClaveCurso,NombreCurso,CostoCaro) As SELECT NumC,NombreC, Costo FROM Curso WHERE Costo > 150; 10