Vistas en postgresql Conceptos y definición de Vista Los usuarios que acceden a una base de datos relacional, lo hacen típicamente a través de vistas, de modo que diferentes usuarios tienen diferentes vistas. Una vista, en sí, es una tabla virtual derivada, con nombre. El término virtual significa que la tabla no existe como tal, pero para el usuario si parece existir. Por el contrario una tabla es real, en el sentido que existe y está almacenada en algún dispositivo físico de almacenamiento. Las vistas no se sustentan en datos almacenados físicamente, solo se almacena su definición en el catálogo de sistema, y esta construida en base a otras tablas. Las vistas tienen la misma estructura que una tabla : filas y columnas. los datos se recuperan mediante una consulta SELECT y se presentarán igual que los de una tabla. Definición de Vista en SQL Como dijimos anteriormente, una vista es una relación virtual cuya extensión se deriva de las relaciones básicas de la base de datos, es decir, por medio de sentencias SELECT. La sintaxis de definición de una vista en SQL es: CREATE [OR REPLACE] VIEW nombre_de_vista AS sentencia_select Ejemplo sencillo : CREATE VIEW cliente_apellido AS SELECT * FROM clientes WHERE ap_paterno LIKE A% En este ejemplo se crea una vista con el nombre cliente_apellido que consulta por todos los clientes cuyo apellido paterno comienza con la letra A. Unidad V Vistas Pág. 1 de 5 Lic. Isaac Barragán Jiménez Rev. Ago- 2010
Ventajas y Desventajas de las Vistas Ventajas SEGURIDAD: Las vistas pueden proporcionar un nivel adicional de seguridad. Por ejemplo, en la tabla de empleados, cada responsable de departamento sólo tendrá acceso a la información de sus empleados. SIMPLICIDAD: Las vistas permiten ocultar la complejidad de los datos. Una base de datos se compone de muchas tablas. La información de dos o más tablas puede recuperarse utilizando una combinación de dos o más tablas (relacional), y estas combinaciones pueden llegar a ser muy confusas. Creando una vista como resultado de la combinación se puede ocultar la complejidad al usuario. ORGANIZACION: Las vistas ayudan a mantener unos nombres razonables en la base de datos para acceder a consultas complejas. EXACTITUD EN LOS DATOS SOLICITADOS: Permiten acceder a un subconjunto de datos específicos, omitiendo datos e información innecesaria e irrelevante para el usuario. AMPLIA PERSPECTIVAS DE LA BASE DE DATOS: Proporciona diversos modelos de información basados en los mismos datos, enfocándolos hacia distintos usuarios con necesidades especificas. El mostrar la información desde distintos ángulos nos ayuda a crear ambientes de trabajo y operación acordes a los objetivos de la empresa. Debe evaluarse el perfil y requerimientos de información de los usuarios destino de la vista. TRANSPARENCIA EN LAS MODIFICACIONES: El usuario final no se verá afectado por el diseño o alteraciones que se realicen en el esquema conceptual de la base de datos. Si el sistema requiere una modificación en su funcionamiento interno, podrán afectarse diversas estructuras que proveen el desempeño de este; se pretende que los usuarios finales no adviertan tales alteraciones. Desventajas NO SON ACTUALIZABLES : Las vistas en Postgre no son actualizables, es decir, si bien es cierto, son tratadas como tablas, no es posible hacer INSERT, DELETE ni UPDATE sobre las vistas, esta desventaja es una característica particular en Postgre dado que esta cualidad si esta disponible en otros motores de bases de datos como ORACLE, Informix y SQL Server, sin embargo cabe notar que Postgre cubre esta falencia en las vistas con la creación de reglas (CREATE RULE) que permite llenar el vacío dejado por la vista. Unidad V Vistas Pág. 2 de 5 Lic. Isaac Barragán Jiménez Rev. Ago- 2010
Definición de Vista SQL Como se explico anteriormente, la sintaxis de definición de una vista en SQL en Postgresql es básicamente la siguiente : CREATE [OR REPLACE] VIEW <nombre_de_vista> AS < SELECT campos1 [, campo2,..., campon ] FROM tabla1 [, tabla2,..., tablan ] [ WHERE condiciones_de_consulta ] [ ORDER BY lista_de_campos ] [ GROUP BY lista_de_campos ] > Como podemos apreciar, existe una similitud muy grande entre una consulta SELECT y la creación de una vista propiamente tal, de hecho, una vista es una definición almacenada de una consulta SELECT SQL, también notemos que esta es una definición básica de vista pues las cláusulas de la sentencia de consulta SELECT son muy amplias y pueden también aplicarse a la vista. Llamadas a Vistas Como las Vistas tienen la misma estructura que una tabla, es decir, poseen filas y columnas, los datos se recuperan mediante una consulta SELECT y se presentarán igual que los de una tabla a recuperar, por lo tanto las llamadas a las Vistas pueden ser con las siguientes Sintaxis: Llamada sencilla: SELECT * FROM nombre_de_la_vista; Llamada condicionada: SELECT * FROM nombre_de_la_vista WHERE condición(es); Llamada definida: SELECT * FROM nombre_de_la_tabla WHERE condición(es) LIKE % ORDER BY columna; Llamada mostrando solo unas columnas: SELECT columna1,columna2, FROM nombre_de_la_tabla WHERE condición(es); Unidad V Vistas Pág. 3 de 5 Lic. Isaac Barragán Jiménez Rev. Ago- 2010
Eliminar Vistas Si en algún caso se necesita modificar una Vista, debe eliminarla primero y luego volverla a crear, no se pueden modificar datos directamente en la Vista, la sintaxis para eliminar es la siguiente: DROP VIEW nombre_de_la_vista; Ejemplos de Vistas SQL modelo. Para poder mostrar las cualidades y características de las vistas, utilizaremos el siguiente Unidad V Vistas Pág. 4 de 5 Lic. Isaac Barragán Jiménez Rev. Ago- 2010
Ejemplo Crear una vista con el nombre artiven que considere el nombre de artículos, su precio, la fecha de venta de dichos artículos y el tipo de la venta. CREATE VIEW artiven AS SELECT artículos.nomart, artículos.preart, ventas.fecven, ventas.tipven FROM artículos,ventas WHERE artículos.idart = ventas.idart; Solucionar el mismo ejemplo utilizando la cláusula JOIN en lugar de la cláusula WHERE y los artículos ordenados por nombre. Ejercicio 1 Crear una vista con el nombre del cliente, los nombres de los artículos que compro, la fecha en que los compro y el tipo de venta, para clientes de sexo masculino (usando la cláusula WHERE y la cláusula JOIN). Ejercicio 2 Crear una vista con el nombre de empleado, los nombres de los artículos que vendió, la fecha en que se vendieron y el número de artículos vendidos, ordenados por nombre de empleado (usando la cláusula WHERE y la cláusula JOIN). Ejercicio 3 Crear una vista con el nombre del cliente y el nombre del empleado que lo atendió, en ventas de Contado (usando la cláusula WHERE y la cláusula JOIN). Unidad V Vistas Pág. 5 de 5 Lic. Isaac Barragán Jiménez Rev. Ago- 2010