Page 1
INSTITUTO TECNOLÓGICO SUPERIOR DE FELIPE CARRILLO PUERTO
UNIDAD ACADÉMICA TULUM
INGENIERÍA EN SISTEMAS COMPUTACIONALES
UNIDAD 4
TALLER DE BASES DE DATOS
ALUMNO: RAÚL JESÚS ALEJANDRO LÓPEZ
DOCENTE. ING. JOSÉ TORRES EK
INVESTIGACIÓN 4.4 ROLES Y 4.5 VISTAS
Raúl Jesús Alejandro López
سخيسوراول
Page 2
06-NOVIEMBRE-2015
ÍNDICE
INTRODUCCIÓN..................................................................................................................................3
4.4. ROLES..........................................................................................................................................4
4.5. VISTAS.........................................................................................................................................6
CONCLUSIÓN....................................................................................................................................13
REFERENCIAS BIBLIOGRÁFICAS........................................................................................................14
Raúl Jesús Alejandro López
سخيسوراول
Page 3
Raúl Jesús Alejandro López
سخيسوراول
Page 4
INTRODUCCIÓN Anteriormente trabajamos con la implementación de los privilegios con los que
puede o no contar un usuario dentro del a base. Continuando con la unida de taller
de base de datos, abordaremos los temas llamados roles y vistas, como en otras
investigaciones hablaremos de que significan, cuales es su utilidad y veremos las
sintaxis que están determinadas para hacer cumplir estas sentencias dentro del
sistema de la base. A continuación se presenta la información recaba de
diferentes fuentes bibliográficas.
Raúl Jesús Alejandro López
سخيسوراول
Page 5
4.4. ROLESUn rol es una colección de privilegios del sistema y de objetos que se otorgan a
usuarios y a otras tareas. Oracle dispone de muchos roles predeterminados
mientras que MySQL no los soporta.
El rol CONNECECT permite al usuario conectarse a la base de datos, crear tablas,
vistas, secuencias, sinónimos y otros objetos en el esquema asociado.
El rol RESOURCE permite al usuario utilizar los recursos típicos para la
programación de aplicaciones (clusters, disparadores, paquetes, funciones, etc.)
El rol DBA, típico de los administradores, permite al usuario realizar cualquier
función de base de datos y disponer de cualquier privilegio
Raúl Jesús Alejandro López
سخيسوراول
Page 6
La sentencia que permite crear roles es CREATE ROL. Su sintaxis es la siguiente
?
1
2
3
4
CREATE ROLE rol
[ NOT IDENTIFIED
| IDENTIFIED {BY password | USING [usuario.] paquete
| EXTERNALLY | GLOBALLY} ];
NOT IDENTIFIED indica que no se requiere contraseña para utilizar el
rol, INDENTIFIED BY password indica que se requiere la contraseñ;a
especificada.EXTERNALLY crea un rol de usuario externo y GLOBALLY crea un
rol de usuario global.
Ejemplo: Crear un rol y asignarle privilegios
?
1
2
3
CREATE ROLE miPrimerRole;
GRANT SELECT, INSERT, UPDATE, DELETE ON tabla
TO miPrimerRole;
Ejemplo: Crear un rol y asignarle todos los privilegios
Raúl Jesús Alejandro López
سخيسوراول
Page 7
?
1
2
CREATE ROLE miPrimerRole;
GRANT ALL ON tabla TO miPrimerROLE;
Ejemplo: Asignar un rol a un usuario
?
1 GRANT miPrimerRole TO miUsuario;
Ejemplo: Eliminar un rol
?
1 DROP ROLE miPrimerRole;
Raúl Jesús Alejandro López
سخيسوراول
Page 8
4.5. VISTASUna vista es una tabla virtual cuyo contenido está definido por una consulta. Una
vista es sencillamente un objeto de base de datos que presenta datos de tablas.
Se trata de una consulta SQL que está permanentemente almacenada en la Base
de datos y a la que se le asigna un nombre, de modo que los resultados de la
consulta almacenada son visibles a través de la vista, y SQL permite acceder a
estos resultados como si fueran de hecho una tabla real en la base de datos.
Raúl Jesús Alejandro López
سخيسوراول
Page 9
Las tablas y las vistas comparten el mismo espacio de nombres en la base de
datos, por lo tanto, una base de datos no puede contener una tabla y una vista con
el mismo nombre.
Las vistas suelen utilizarse para centrar, simplificar y personalizar la percepción de
la base de datos para cada usuario. Las vistas pueden emplearse como
mecanismos de seguridad, que permiten a los usuarios obtener acceso a los datos
por medio de la vista, pero no les conceden el permiso de obtener acceso directo
a las tablas subyacentes de la vista. Las vistas se pueden utilizar para realizar
particiones de datos y para mejorar el rendimiento cuando se copian, se importan
y se exportan datos.
Mediante vistas es posible presentar datos de distintos servidores. Por ejemplo,
para combinar datos de distintos servidores remotos o en un servidor de múltiples
procesadores, cada uno de los cuales almacenan datos para una región distinta
de su organización, puede crear consultas distribuidas o paralelas aumentando la
eficiencia de las consultas.
Mediante diversas cláusulas es
factible crear, modificador, eliminar y administrar vistas. La sintaxis básica para
estas cláusulas es genérica entre diversos gestores de base de datos. Sin
embargo en lo particular cada gestor implementa la administración de estas de
Raúl Jesús Alejandro López
سخيسوراول
Page 10
forma diferente. En este documento se presenta la sintaxis particular de Oracle
10g, comparando en forma genérica con MySQL 5.
La sintaxis básica de una vista (Oracle y MySQL) es:
?
1 CREATE VIEW nombre_vista AS consulta;
Sintaxis CREATE VIEW
?
1
2
3
4
CREATE [OR REPLACE]
VIEW nombre_vista AS sentencia_select
[WITH [CASCADED | LOCAL] CHECK OPTION]
WITH READ ONLY
?
Raúl Jesús Alejandro López
سخيسوراول
Page 11
1
2
3
4
5
CREATE [OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW nombre_vista [(columnas)]
AS sentencia_select
[WITH [CASCADED | LOCAL] CHECK OPTION]
Ejemplo: Países del continente Americano
?
1
2
3
4
5
CREATE OR REPLACE VIEW america AS
SELECT P.nombre, P.capital
FROM continente C, pais P
WHERE (C.nombreContinente = 'América')
AND (C.idContinente = P.idContinente)
Ejemplo: En el futbol se conoce como Caballo de Hierro a los deportistas que
jugaron los 90 minutos en todos los partidos de un campeonato. Y Considerando
que en el torneo de Apertura 2011 se disputaron 17 fechas en la fase regular. La
vista que define a estos futbolistas es la siguiente.
Raúl Jesús Alejandro López
سخيسوراول
Page 12
?
1
2
3
4
5
6
CREATE OR REPLACE VIEW caballoDeHierro AS
SELECT E.nombreEquipo, J.nombre
FROM equipo E, jugadores J
WHERE E.idEquipo = J.idEquipo
AND J.JC = 17
ORDER BY E.nombreEquipo, J.nombre;
Ahora solo tenemos que hacer una consulta para obtener la vista correspondiente.
?
1 SELECT * FROM caballoDeHierro;
Ejemplo. El cual modificara la vista caballo de hierro con los jugadores que
recibieron 3 amonestaciones o menos.
?
1
2
CREATE OR REPLACE VIEW caballoDeHierro AS
SELECT P.nombrePosicion, E.nombreEquipo equipo,
Raúl Jesús Alejandro López
سخيسوراول
Page 13
3
4
5
6
7
8
9
J.nombre, J.JJ, J.TA
FROM equipo E, jugador J, posicion P
WHERE E.idEquipo = J.idEquipo
AND P.idPosicion = J.idPosicion
AND J.JC = 17 AND (J.ta <= 3 )
ORDER BY E.nombreEquipo, J.nombre;
SELECT * FROM caballoDeHierro;
Actualización de vistas
Algunas vistas pueden actualizarse mediante sentencias INSERT,
DELETE o UPDATE sobre ellas, considerando las siguientes reglas:
No se debe especificar DISTINCT para que las filas duplicadas no se eliminen de
los resultados de las consultas.
La cláusula FROM debe especificar sólo una tabla actualizable.
Cada elemento de selección debe ser una referencia de columna simple ( no
puede contener expresiones, columnas calculadas, ni funciones de columna).
Raúl Jesús Alejandro López
سخيسوراول
Page 14
La cláusula WHERE no debe incluir una subconsulta.
La consulta no debe incluir una cláusula GROUP BY o HAVING.
La consulta no debe incluir sentencias: UNION, UNION ALL, INTERSECT, MINUS
Si una columna NOT NULL no contiene un DEFAULT, no es posible insertar
mediante vistas
Para que la vista sea de solo lectura, usaremos la cláusula WITH READ
ONLY (Oracle). Observe que esta opción no soporta la clásula ORDER BY
La cláusula CHECK OPTION evita que sean insertados o modificados registro que
no sean posteriormente incluidos en la vista mediante la sentencia WHERE.
Ejemplo: Población por entidad federativa 2010 INEGI (INSTITUTO NACIONAL
DE ESTADISTICA, GEOGRAFIA E INFORMATICA). El ejemplo siguiente crea
una vista que usa la cláusula CHECK OPTION donde seleccionan aquellas
entidades federativas que tienen menos de 2 millones de habitantes.
?
1 CREATE TABLE entidad (
Raúl Jesús Alejandro López
سخيسوراول
Page 15
2
3
4
estado CHAR(30) NOT NULL,
poblacion NUMBER NOT NULL
);
?
1
2
3
4
CREATE TABLE entidad (
estado CHAR(30) NOT NULL,
poblacion INTEGER NOT NULL
) ENGINE = InnoDB;
?
1
2
3
4
INSERT INTO entidad values ('Estado de México', 15175862);
INSERT INTO entidad values ('Distrito Federal', 8851080);
INSERT INTO entidad values ('Veracruz', 7643194);
INSERT INTO entidad values ('Jalisco', 7350682);
INSERT INTO entidad values ('Puebla', 5779829);
Raúl Jesús Alejandro López
سخيسوراول
Page 16
5
6
7
8
9
10
11
12
13
14
15
16
17
INSERT INTO entidad values ('Guanajuato', 5486372);
INSERT INTO entidad values ('Chiapas', 4796580);
INSERT INTO entidad values ('Nuevo León', 4653458);
INSERT INTO entidad values ('Michoacán de Ocampo',4351037);
INSERT INTO entidad values ('Oaxaca', 3801962);
INSERT INTO entidad values ('Chihuahua', 3406465);
INSERT INTO entidad values ('Guerrero', 3388768);
CREATE OR REPLACE VIEW entidades AS
SELECT * FROM entidad
WHERE poblacion < 2000000
WITH CHECK OPTION;
Ahora considere la siguiente información. Para insertarla en la vista recien creada.
Entidad Población
Tamaulipas 3,268,554
Raúl Jesús Alejandro López
سخيسوراول
Page 17
Entidad Población
Baja California 3,155,070
Sinaloa 2,767,761
Coahuila de Zaragoza2,748,391
Hidalgo 2,665,018
Sonora 2,662,480
San Luis Potosí 2,585,518
Tabasco 2,238,603
Yucatán 1,955,577
Querétaro 1,827,937
Morelos 1,777,227
Durango 1,632,934
Zacatecas 1,490,668
Quintana Roo 1,325,578
Aguascalientes 1,213,445
Tlaxcala 1,169,936Raúl Jesús Alejandro López
سخيسوراول
Page 18
Entidad Población
Nayarit 1,084,979
Campeche 822,441
Colima 650,555
Baja California Sur 637,026
Con la cláusula CHECK OPTION cada vez que se trata de hacer una violación de
la condición dentro del WHERE obtendremos un error ORA-01402. Que error le
regresa MySQL
Borrado de vistas con DROP VIEW
La sentencia DROP VIEW permite borrar una vista de la base de datos. Su
sintaxis se presenta a continuación:
?
1 DROP VIEW [usuario.] nombre_vista [CASCADE CONSTRAINTS];
Raúl Jesús Alejandro López
سخيسوراول
Page 19
DROP VIEW [IF EXISTS] nombre_vista;
CONCLUSIÓN Para concluir, primero que nada roles en bases de datos significa que es una
colección de privilegios del sistema y de objetos que le son asignados a los
usuarios, en cuanto a Oracle soporta muchos roles de manera predeterminada de
los cuales MYSQL no los soporta. Entre las capacidades de algunos roles
algunos permiten al usuario conectarse a la base de datos, hacer tablas y otros
objetos. Otros permiten al usuario utilizar recursos de programación de
aplicaciones y también algunos realizar cualquier función de base de datos y
disponer de cualquier tipo de privilegio asignado.
Por parte de las vistas en las bases son tablas virtuales en las cuales su contenido
es definido por una consulta, tablas y vistas comparten el mismo espacio de
nombres en la base de datos, de acuerdo a eso una base de datos no puede
contener una tabla y una vista con el mismo nombre. También pueden emplearse
como medios de seguridad, que permiten obtener acceso a los datos por medio
de la vista, pero no otorgan permiso de obtener acceso directo a las tablas de la
vista.
Raúl Jesús Alejandro López
سخيسوراول
Page 20
REFERENCIAS BIBLIOGRÁFICAS Mary Cruz. (2014) Taller de bases de datos. 05 de noviembre de 2015. Sitio web:
http://www.tallerdebasededatos.esy.es/4.4.html
Marce López. (2015) Unidad 4 de bases de datos. 05 de noviembre de 2015. De
instituto tecnológico de Veracruz. Sitio web:
http://www.prograweb.com.mx/tallerBD/0404RolUsuarios.phpRaúl Jesús Alejandro López
سخيسوراول
Page 21
Raúl Jesús Alejandro López
سخيسوراول