





















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Lo que son las vistas en una base de datos, cómo se crean y operan sobre ellas, y presenta ejemplos de su uso. Las vistas son herramientas importantes que permiten a los usuarios ver los datos de forma simple y personalizada, ocultando datos innecesarios. Se crean mediante la selección de filas y columnas específicas de las tablas base y pueden ser utilizadas para diferentes fines, como control de autorización, modelos externos y diferentes formatos de presentación de los datos. Se incluyen ejemplos de cómo crear vistas, seleccionar datos a través de ellas y operaciones como INSERT, DELETE y UPDATE.
Tipo: Apuntes
1 / 29
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!






















Las vistas son herramientas importantes a fin de proporcionar a los usuarios un entorno simple y personalizado y para ocultar datos. Una vista relacional no corresponde exactamente con la vista externa general, sino que es una tabla virtual derivada de una o más tablas base subyacentes. No existe en almacenamiento en el sentido como lo hacen las tablas base, sino que se crean mediante selección de filas y columnas específicas de las tablas base, y posiblemente al realizar operaciones sobre ellas. La vista se produce dinámicamente conforme el usuario trabaja con ella. Para integrar una vista, el ABD decide a cuáles atributos necesita acceso el usuario, determina cuáles tablas base los contienen y construye una o más vistas para mostrar en forma de tabla los valores que el usuario debe ver. Las vistas permiten fácilmente la creación de un modelo externo dinámico.
Las razones para proporcionar vistas en lugar de permitir a los usuarios trabajar con las tablas base son las siguientes:
Las vistas permiten a diferentes usuarios ver los datos en distintas formas, y permiten un modelo externo que difiere del modelo lógico (conceptual).
El mecanismo de vista proporciona un dispositivo sencillo de control de autorización, creado fácilmente y reforzado en forma automática por el sistema. Los usuarios de vista no están al tanto de, y no pueden acceder, a ciertos ítems de datos.
Las vistas pueden liberar a los usuarios de complicadas operaciones DML, como cuando las vistas involucran combinaciones (reuniones). El usuario escribe un enunciado SELECT simple usando la vista como la tabla nominada y el sistema se encarga de los detalles de las correspondientes operaciones más complicadas sobre las tablas base para soportar la vista.
Si la base de datos se reestructura en el nivel lógico (conceptual), la vista se puede utilizar para mantener constante el modelo del usuario. Por ejemplo, si la tabla se divide mediante proyección y la clave primaria aparece en cada una de las nuevas tablas resultantes, la tabla original siempre se puede reconstruir al definir una vista que es la combinación de las nuevas tablas.
Suponga que un usuario necesita ver los ID y nombres de todos quienes tienen especialidad history. Puede crear una vista para este usuario del modo siguiente:
CREATE VIEW HISTMAJ (first, last, StudentId)
AS SELECT lastName, firstName, stuId FROM Student WHERE major = ‘History’;
Observación: Aquí se renombraron las columnas de la tabla base. El usuario de esta vista no necesita saber los nombres de columna reales.
Si quisiera una tabla de todos los cursos con sus horarios y salones podría crearla del modo siguiente:
CREATE VIEW ClassLoc
AS SELECT classNumber, schedule, room FROM Class;
Observación: Aquí no se necesitó una condición, pues se querían estas partes de todos los registros Class. Esta vez se conservan los nombres de las columnas como aparecen en la tabla base.
Es posible definir una vista derivada de una vista. Por ejemplo, se puede pedir un subconjunto de la tabla (virtual) ClassLoc al escribir:
CREATE VIEW ClassLoc
AS SELECT classNumber, room FROM ClassLoc;
En el enunciado SELECT en la línea AS se puede incluir funciones internas y opciones GROUP BY.
Por ejemplo, si se quiere una vista de Enroll que proporcione classNumber y el número de estudiantes inscritos en cada clase, escribir:
CREATE VIEW ClassCount (classNumber, TotCount)
AS SELECT classNumber, COUNT(*) FROM Enroll GROUP BY classNumber;
Observación: Se debe proporcionar un nombre para la segunda columna de la vista, pues no hay alguno disponible de la tabla base.
Operaciones sobre vistas
INSERT, DELETE y UPDATE presentan ciertos problemas con las vistas. Por ejemplo, suponga que se tiene una vista de registros de estudiante como:
StudentVw1(lastName, firstName, major, credits)
Si se tuviese permiso de ingresar registros, cualquier registro creado mediante esta vista en realidad serían registros Student, pero no contendrían stuId, que es la clave de la tabla Student. Dado que stuId tendría la restricción NOT NULL deberá rechazar cualquier registro sin este campo. Sin embargo, si tiene la siguiente vista:
StudentVw2(stuId, lastName, firstName, credits)
No se debe tener problema para insertar registros, pues insertaría registros Student con un campo major nulo, lo que está permitido. Con el comando:
INSERT
INTO StudentVw VALUES('S 1040 ' 'Levine', 'Adam', 30 );
Sin embargo, el sistema en realidad insertaría el registro en la tabla Student
Operaciones sobre vistas
Se puede usar un disparador INSTEAD OF para asegurar que el registro se inserta en la tabla Student.
CREATE TRIGGER InsertStuVw 2 INSTEAD OF INSERT ON StudentVw FOR EACH ROW BEGIN INSERT INTO Student VALUES (:NEW.stuId, :NEW.lastName, :NEW.firstName, :NEW.credits); END;
El catálogo del sistema o diccionario de datos del sistema se puede considerar como una base de datos de información acerca de las bases de datos. Contiene, en forma de tabla, un resumen de la estructura de cada base de datos como aparece en un momento dado. Siempre que una tabla base, vista, índice, restricción, módulo almacenado u otro ítem de un esquema de base de datos se crea, altera o elimine, el DBMS automáticamente actualiza sus entradas en el catálogo. El sistema también usa el catálogo para verificar autorizaciones y almacenar información para planes de acceso para aplicaciones. Los usuarios pueden consultar el diccionario de datos usando comandos SQL SELECT. Sin embargo, dado que el diccionario de datos se mantiene mediante el DBMS mismo, los comandos SQL UPDATE, INSERT y DELETE no se pueden usar en él.
El diccionario de datos Oracle contiene información acerca de todos los objetos de esquema pero el acceso a él se proporciona, mediante tres vistas diferentes, llamadas USER (usuario), ALL (todos) y DBA (administrador de base de datos). En Oracle, a cada usuario se le proporciona automáticamente acceso a todos los objetos que crea.
La vista USER proporciona a un usuario información acerca de todos los objetos creados por dicho usuario. Los usuarios pueden tener acceso a objetos creados por otros. La vista ALL proporciona información acerca de dichos objetos además de los que creó el usuario.
La vista DBA, que proporciona información acerca de todos los objetos de base de datos, está disponible al administrador de la base de datos.
Cada una de las vistas se invoca mediante el uso del término apropiado como un prefijo para el objeto nombrado en la cláusula FROM en una consulta. Por ejemplo, si un usuario quiere una lista de los nombres de todas las tablas que creó, la consulta es:
Para determinar cuáles son todas las columnas disponibles en tablas, se puede usar el comodín (*) en la cláusula SELECT. Por ejemplo,
Desplegará toda la información registrada acerca de las columnas en las tablas que usted creó. Luego puede usar los nombres de columna de las vistas (por ejemplo, COLUMN_ NAME, DATA_TYPE) en una consulta más específica, como la siguiente:
WHERE TABLE_NAME = ‘Student’;
Otra forma de aprender acerca de los objetos es usar el comando DESCRIBE. Una vez que se conoce el nombre de un objeto (por ejemplo, una tabla, restricción, columna), que se puede obtener mediante uno de los métodos mencionados, se puede solicitar una descripción de él. Por ejemplo, se puede escribir
DESCRIBE Student;
Para ver lo que se conoce acerca de la tabla Student, o
Para ver lo que se conoce acerca de la vista HISTMAJ que se creó en el Ejemplo 1 de vistas.
Ejemplo: Luego de realizar la conexión a SQL*Plus con el usuario SCOTT, escribimos en la línea de comandos de la herramienta la siguiente sentencia:
SELECT table_name from user_tables;
Se observa que en la instancia ORCL de Oracle 11g existen 4 tablas de nombres BONUS (bonificaciones), DEPT (departamentos), EMP (empleados) y SALGRADE (nivel salarial) accesibles para el usuario SCOTT.
Para presentar los campos de todas las tablas de la base de datos instalada por defecto en Oracle11g para el usuario SCOTT utilizamos el comando DESCRIBE:
Ejemplo: DESCRIBE emp;