Está en la página 1de 36

UNIVERSIDAD TÉCNICA DE MANABÍ

DEPARTAMENTO DE INFORMÁTICA

Administración de Base
de Datos

Tercer Semestre
Ing. Lorena Bowen Mendoza
ADMINISTRACIÓN DE BASES DE DATOS

PROCESAMIENTO DE
TRANSACCIONES
UNIDAD II
ADMINISTRACIÓN DE BASES DE DATOS

CONTENIDO A TRATAR HOY:


Vistas
Administración de usuarios

Objetivo de la Clase:
Escribir enunciados CREATE VIEW y entender su
funcionamiento.
Diseñar restricciones de autorización por objeto de
aplicaciones.

6/14/2021 Cognitive Cities Management Research Group (CMMA) 3


Vistas
GESTIÓN DE VISTAS
VISTAS
• Las vistas tienen la misma estructura que una tabla: filas y columnas. La única
diferencia es que sólo se almacena de ellas la definición, no los datos. Los
datos que poseen son los que se recuperan mediante la ejecución de una
consulta. Al igual que sucede con una tabla, se pueden insertar, actualizar,
borrar y seleccionar datos en una vista, no puede haber una vista con el
mismo nombre de una tabla.
• Aunque su utilización es siempre la de seleccionar datos de una consulta, en
algunas condiciones existen restricciones para realizar el resto de las
operaciones sobre vistas.
• Una vista se especifica a través de una expresión de consulta (una sentencia
SELECT) que la calcula y que puede realizarse sobre una o más tablas. Sobre
un conjunto de tablas relacionales se puede trabajar con un número
cualquiera de vistas.

6/14/2021 Cognitive Cities Management Research Group (CMMA) 5


GESTIÓN DE VISTAS
Creación de Vistas
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW <vista>
[(<alias>[, <alias>] … )] AS <subconsulta>
[WITH CHECK OPTION [CONSTRAINT <restricción>]]
[WITH READ ONLY [CONSTRAINT <restricción>]];

OR REPLACE: Se utiliza por si la vista ya estuviera creada anteriormente, en ese caso, la sustituye
por la nueva definición.

WITH CHECK OPTION: Para una vista actualizable evita inserciones en las filas para las cuales la
cláusula WHERE en la declaración SELECT no es verdadera. También evita las actualizaciones de
las filas para las cuales la cláusula WHERE es verdadera, pero la actualización causaría que no
fuera verdadera (en otras palabras, evita que las filas visibles se actualicen a las filas no visibles).

WITH READ ONLY: para indicar que la tabla o vista no se puede actualizar.

6/14/2021 Cognitive Cities Management Research Group (CMMA) 6


GESTIÓN DE VISTAS
Indicaciones y restricciones de uso

La subconsulta puede contener


una sentencia SELECT de
sintaxis compleja, incluyendo
combinaciones (JOIN), En algunas versiones no puede
agrupamientos (GROUP BY), y incluir una cláusula ORDER BY. Si se
subconsultas internas desea ordenar, esto deberá hacerse
mediante una consulta posterior que
utilice la vista

6/14/2021 Cognitive Cities Management Research Group (CMMA) 7


GESTIÓN DE VISTAS
Ventajas de usar Vistas
Privacidad de la Información
Mostrar a los usuarios la información conveniente.

Optimización del rendimiento de la BD


Crear querys sobre vistas complejas.

Tablas de pruebas
Para uso de los desarrolladores y no perder información.

Facilita el manejo de grandes datos de información,


siendo más rápido de ejecutar
6/14/2021 Cognitive Cities Management Research Group (CMMA) 8
GESTIÓN DE VISTAS
Desventajas de usar Vistas

Rendimiento Procesador Dependencia


• El rendimiento ya que las • Se debe tener mucho • Crea dependencia a la tabla
vistas crean una apariencia cuidado al utilizar las vista original, si cambia la data
de tabla en MySQL, por lo porque consume mucho original, la VISTA debe
que el gestor debe traducir procesador del servidor, modificarse siempre
las consultas creadas en la porque no almacena los
vista. datos, sino la sentencia y se
ejecuta cada vez que
llamamos la vista.

6/14/2021 Cognitive Cities Management Research Group (CMMA) 9


GESTIÓN DE VISTAS
La definición de una vista está sujeta a las siguientes limitaciones:
La sentencia SELECT no puede contener una
subconsulta en su cláusula FROM.

La sentencia SELECT no puede hacer referencia a


variables del sistema o del usuario.

No se puede asociar un disparador con una vista.

Dentro de una rutina almacenada, la definición no


puede hacer referencia a parámetros de la rutina o a
variables locales.
Las tablas mencionadas en la definición de la vista
deben existir siempre.
6/14/2021 Cognitive Cities Management Research Group (CMMA) 10
GESTIÓN DE VISTAS
Motivación

Proporcionan Nivel • De tres esquemas, promoviendo la independencia de


datos para reducir el impacto de los cambios en la
Externo definición de datos en las aplicaciones que la usan.

Simplificación de • Se pueden formular muchas consultas con


mayor facilidad si se usa una vista en lugar
Tareas de las tablas base.

• La restricción de acceso con vistas es más flexible que las


Nivel de Seguridad restricciones para columnas y tablas, porque una vista es
cualquier parte derivada de una base de datos.

6/14/2021 Cognitive Cities Management Research Group (CMMA) 11


GESTIÓN DE VISTAS
Comandos de Vista
• Si necesita chequear la existencia de la vista:
SHOW TABLES;
• Para verificar la estructura de la vista, utilice:
DESCRIBE V_lista_Profesores;
• Para observar la codificación de la vista se utiliza:
SHOW CREATE VIEW V_lista_Profesores;
• Para ver la vista ejecutada utilice el comando:
SELECT * FROM v_lista_profesores;
• Para eliminar una vista utilice el comando:
DROP VIEW <vista>;
6/14/2021 Cognitive Cities Management Research Group (CMMA) 12
GESTIÓN DE VISTAS
Definición de una Vista con tabla sencilla
Defina una vista llamada IS_View que consista en estudiantes cuya
materia principal sea IS.
CREATE VIEW IS_View AS
SELECT * FROM Student
WHERE StdMajor = 'IS‘;

6/14/2021 Cognitive Cities Management Research Group (CMMA) 13


GESTIÓN DE VISTAS
Definición de una Vista con tabla múltiple
CREATE VIEW MS_View AS
Defina una vista llamada
SELECT OfferNo, Offering.CourseNo, CrsUnits, OffTerm,
MS_View que consista en
los cursos impartidos por OffYear, Offering.FacSSN, FacFirstName, FacLastName,
los profesores del OffTime, OffDays
departamento de Ciencias FROM Faculty, Course, Offering
Administrativas. WHERE FacDept = 'MS'
AND Faculty.FacSSN = Offering.FacSSN
AND Offering.CourseNo = Course.CourseNo;

6/14/2021 Cognitive Cities Management Research Group (CMMA) 14


GESTIÓN DE VISTAS
Definición de una Vista con columnas renombradas
Defina una vista CREATE VIEW Enrollment_View
llamada (OfferNo, CourseNo, Term, Year, Instructor, NumStudents) AS
Enrollment_View que SELECT Offering.OfferNo, CourseNo, OffTerm, OffYear,
consista en los datos de FacLastName, COUNT(*)
los cursos y el número FROM Offering, Faculty, Enrollment
de estudiantes que WHERE Offering.FacSSN = Faculty.FacSSN
participan en ellos. AND Offering.OfferNo = Enrollment.OfferNo
GROUP BY Offering.OfferNo,CourseNo, OffTerm,OffYear,FacLastName;

6/14/2021 Cognitive Cities Management Research Group (CMMA) 15


GESTIÓN DE VISTAS
Ejemplos
CREATE VIEW V_Lista_Profesores AS
SELECT ApellidoPaterno, ApellidoMaterno,Nombres, Titulacion
FROM profesores INNER JOIN personas ON profesores.IdPersona = personas.IdPersona
WHERE profesores.cargo Like 'prof%'
ORDER BY ApellidoPaterno;

• Asumiendo que la vista tiene fallas, lo más recomendable es volver a ejecutar la vista
utilizando la sintaxis OR REPLACE

CREATE OR REPLACE VIEW V_Lista_Profesores AS


SELECT ApellidoPaterno, ApellidoMaterno,Nombres, Titulacion
FROM profesores, personas
WHERE profesores.IdPersona = personas.IdPersona AND profesores.cargo Like 'prof%'
ORDER BY ApellidoPaterno;

6/14/2021 Cognitive Cities Management Research Group (CMMA) 16


GESTIÓN DE VISTAS
Uso de Vistas para recuperación
Uso de vistas en Procesamiento de
enunciados consultas con
SELECT referencias a vista

La materialización de
Puede usarse en una vista requiere del
enunciados SELECT almacenamiento de
las filas de la vista.

Se puede agregar Se crea a partir de las


condiciones y tablas base de
seleccionar acuerdo con la
subconjuntos demanda
6/14/2021 Cognitive Cities Management Research Group (CMMA) 17
GESTIÓN DE VISTAS
Flujo del proceso de materialización de una vista

6/14/2021 Cognitive Cities Management Research Group (CMMA) 18


GESTIÓN DE VISTAS

Vistas de actualización con tabla única


Una vista de actualización le permite insertar, actualizar o eliminar filas
en las tablas base subyacentes realizando la operación correspondiente
en la vista. Siempre que realice una modificación a una fila de una vista,
la misma operación se lleva a cabo en la tabla base. De manera intuitiva
esto significa que las filas en una vista de actualización corresponden a
las filas de las tablas base subyacentes. Si una vista contiene la llave
primaria de la tabla base, cada fila de la vista corresponde a una fila en la
tabla base.

6/14/2021 Cognitive Cities Management Research Group (CMMA) 19


GESTIÓN DE VISTAS
Reglas para vistas de actualización con tabla
única
Una vista de una tabla se puede actualizar si cumple con las siguientes
tres reglas, que incluyen el requisito de la llave primaria.

1. La vista incluye la llave primaria de la tabla base.


2. En la vista están todos los campos requeridos (NOT NULL) de la tabla
base sin un valor predeterminado.
3. La consulta de la vista no incluye las palabras clave GROUP BY ni
DISTINCT.

6/14/2021 Cognitive Cities Management Research Group (CMMA) 20


GESTIÓN DE VISTAS

Vistas de actualización con tabla única


Cree una vista del subconjunto de filas y columnas con la llave primaria.
CREATE VIEW Fac_View1 AS
SELECT FacSSN, FacFirstName, FacLastName, FacRank,
FacSalary, FacDept, FacCity, FacState, FacZipCode
FROM Faculty
WHERE FacDept = 'MS‘;

6/14/2021 Cognitive Cities Management Research Group (CMMA) 21


GESTIÓN DE VISTAS

Vista de sólo lectura con tabla única


Cree un subconjunto de filas y columnas sin la llave primaria.
CREATE VIEW Fac_View2 AS
SELECT FacDept, FacRank, FacSalary
FROM Faculty
WHERE FacSalary > 50000;

6/14/2021 Cognitive Cities Management Research Group (CMMA) 22


GESTIÓN DE VISTAS
Variable de consola o de usuario
• Puede almacenar un valor en una variable definida por el usuario en una declaración y
referirse a él más adelante en otra declaración. Esto le permite pasar valores de una
declaración a otra. Las variables de usuario se escriben como @var_name, donde el
nombre de variable var_name consta de caracteres alfanuméricos,., _ y $.
• Las variables definidas por el usuario son específicas de la sesión. Una variable de
usuario definida por un cliente no puede ser vista o utilizada por otros clientes. Todas
las variables para una sesión de cliente dada se liberan automáticamente cuando ese
cliente sale. Los nombres de las variables de usuario no distinguen entre mayúsculas y
minúsculas. Los nombres tienen una longitud máxima de 64 caracteres.
• Una forma de establecer una variable definida por el usuario es emitiendo una
instrucción SET:
• SET @numero=0;
• SELECT @numero;
• SELECT @numero:=@numero+1 AS Numero, V_profesoreshijos .*
FROM V_profesoreshijos;
6/14/2021 Cognitive Cities Management Research Group (CMMA) 23
Usuarios
GESTIÓN DE USUARIOS
SEGURIDAD
• La seguridad comprende la protección de una base de datos del
acceso no autorizado y de la destrucción maliciosa. Debido al valor de
la información en las bases de datos corporativas, existe una gran
motivación para los usuarios no autorizados que tratan de obtener
acceso ilegal a ellas.
• La seguridad es un amplio tema que comprende muchas disciplinas.
Existen aspectos legales y éticos relacionados con quién tiene acceso
a los datos y cuándo se pueden revelar. Hay controles de red, de
hardware, de sistema operativo y físicos que aumentan los controles
que ofrecen los DBMS.

6/14/2021 Cognitive Cities Management Research Group (CMMA) 25


GESTIÓN DE USUARIOS
REGLAS DE AUTORIZACIÓN
Los administradores de bases de datos crean reglas de autorización que
definen quién tiene acceso a qué partes de una base de datos para realizar
qué operaciones. La aplicación de las reglas de autorización comprende la
autenticación del usuario y la garantía de que las consultas de acceso no
van a violar las reglas de autorización (recuperaciones y modificaciones a
las bases de datos).
La autenticación ocurre cuando
un usuario se conecta por
primera vez a un DBMS. Es
preciso revisar las reglas de
autorización para cada solicitud
de acceso.
6/14/2021 Cognitive Cities Management Research Group (CMMA) 26
GESTIÓN DE USUARIOS
Control de Acceso Discrecional
El planteamiento más común para las reglas de autorización se conoce
como control de acceso discrecional. A los usuarios se les asignan derechos
o privilegios de acceso a secciones específicas de una base de datos. Para
un control preciso, los privilegios se especifican para las vistas en lugar de
las tablas o los campos. Es posible dar a los usuarios la habilidad de leer,
actualizar, insertar y eliminar partes específicas de una base de datos. Para
simplificar el mantenimiento de las reglas de autorización, es posible
asignar privilegios a los grupos o funciones, en lugar de a los usuarios
individuales. Como las funciones son más estables que los usuarios
individuales, las reglas de autorización que hacen referencia a las funciones
requieren menos mantenimiento que las reglas que hacen referencia a
usuarios individuales. A los usuarios se les asignan funciones y una
contraseña. Durante el proceso de registro a la base de datos, el sistema de
seguridad autentica a los usuarios e indica a qué funciones pertenecen.
6/14/2021 Cognitive Cities Management Research Group (CMMA) 27
GESTIÓN DE USUARIOS
Control de Acceso Obligatorios
Los controles de acceso obligatorios son menos flexibles que los controles
de acceso discrecionales. En los primeros, a cada objeto se le asigna un
nivel de clasificación y a cada usuario se le da un nivel de autorización. Un
usuario puede tener acceso a un objeto si su nivel de autorización ofrece
acceso al nivel de clasificación del objeto. Los niveles de autorización y
clasificación típicos son confidencial, secreto y súper secreto. Los
planteamientos de control de acceso obligatorio se aplican sobre todo a
bases de datos muy delicadas y estáticas relacionadas con la defensa
nacional y la recopilación de inteligencia. En vista de la flexibilidad limitada
de los controles obligatorios de acceso, sólo unos cuantos DBMS ofrecen
soporte para ellos. Sin embargo, los DBMS que se utilizan en la defensa
nacional y la recopilación de información deben ofrecer soporte para los
controles obligatorios.
6/14/2021 Cognitive Cities Management Research Group (CMMA) 28
GESTIÓN DE USUARIOS
ADMINISTRACIÓN DE USUARIOS
Para conservar la
No es buena
integridad de los
Root super usuario práctica que tengan
datos y la
todos los accesos
estructura

Usuarios y
MySQL permite
privilegios están
crear usuarios y
íntimamente
asignar privilegios
relacionados
6/14/2021 Cognitive Cities Management Research Group (CMMA) 29
GESTIÓN DE USUARIOS
Niveles de privilegios
TIPO DESCRIPCIÓN
Globales Estos permisos se almacenan en la tabla MYSQL.USER.
GRANT ALL ON *.* y REVOKE ALL ON *.* otorgan y quitan sólo permisos globales.
Base de datos: Estos permisos se almacenan en las tablas MYSQL.DB y MYSQL.HOST.
GRANT ALL ON nombre_bd.* y REVOKE ALL ON nombre_bd.* otorgan y quitan sólo
permisos de bases de datos.

Tabla Estos permisos se almacenan en la tabla MYSQL.TABLES_PRIV.


GRANT ALL ON nombre_bd.nombre_tbl y REVOKE ALL ON nombre_bd.nombre_tbl
otorgan y quitan permisos sólo de tabla

Columna Estos permisos se almacenan en la tabla MYSQL.COLUMNS_PRIV .


Usando REVOKE, debe especificar las mismas columnas que se otorgaron los permisos
Rutina Se aplican a los procedimientos almacenados
6/14/2021 Cognitive Cities Management Research Group (CMMA) 30
GESTIÓN DE USUARIOS
Crear Usuarios
CREATE USER 'nombre_usuario'@'localhost' IDENTIFIED BY 'tu_contrasena';

GRANT tipo_privilegios [(lista_columnas)] [, tipo_privilegios [(lista_columnas)]] ...


ON {nombre_tabla | * | *.* | nombre_bd.*}
TO usuario [IDENTIFIED BY [PASSWORD] 'clave']
[, usuario [IDENTIFIED BY [PASSWORD] 'clave']] ...

• tipo_privilegios[(lista_columnas)] describe que se puede definir el tipo de privilegio


concedido para determinadas columnas o campos en una tabla.
• ON {nombre_tabla | * | *.* | nombre_bd.*}, describe el conceder privilegios a niveles
globales de la base de datos o de las tablas.

• Para crear un usuario sin privilegios usaremos la sentencia:


mysql> GRANT USAGE ON *.* TO anonimo IDENTIFIED BY 'clave';
6/14/2021 Cognitive Cities Management Research Group (CMMA) 31
GESTIÓN DE USUARIOS
Privilegios
Globales:
GRANT ALL PRIVILEGES ON * . * TO 'nombre_usuario'@'localhost';
Base de Datos:
GRANT ALL PRIVILEGES ON nombreBD.* TO 'nombre_usuario'@'localhost‘;
GRANT créate, drop, select, insert, update ON Unidad. * TO anonimo;
Tablas:
GRANT ALL PRIVILEGES ON nombreBD.tabla TO 'nombre_usuario'@'localhost‘;
GRANT select, insert, update, delete ON Unidad.personas TO anonimo;
Columnas:
GRANT privilegios(lista_de_columnas) ON nombreBD.tabla TO 'nombre_usuario'@'localhost‘;
GRANT SELECT(nombre) ON Unidad.PeriodosLectivos TO anonimo;

6/14/2021 Cognitive Cities Management Research Group (CMMA) 32


GESTIÓN DE USUARIOS

6/14/2021 Cognitive Cities Management Research Group (CMMA) 33


GESTIÓN DE USUARIOS
Sentencias
• SHOW GRANTS FOR anonimo; Muestra los privilegios de un usuario.
• RENAME USER anonimo TO anoni; Cambia el nombre de un usuario.
• FLUSH PRIVILEGES; Actualizar los privilegios.

• Revocar privilegios

• REVOKE tipo_privilegio [(lista_columnas)] [, tipo_privilegio [(lista_columna)]] ...


ON {nombre_tabla | * | *.* | nombre_bd.*}
FROM usuario [, usuario] ...
• DROP USER anonimo; Borrar un usuario.
• SELECT user FROM mysql.user; Listado de todos los usuarios.

6/14/2021 Cognitive Cities Management Research Group (CMMA) 34


GESTIÓN DE USUARIOS
Acceso remoto de usuarios
CREATE USER 'nombre_usuario'@'localhost' IDENTIFIED BY 'tu_contrasena';

• Para conectarse a una determinada base de datos debe existir un usuario con privilegios
de acceso remoto, para conectarse al servidor de MySQL localmente se necesita la
contraseña del usuario "root" de MySQL.
• Suponiendo que se desea permitir el acceso al usuario "Cajero1", a la base de datos
"Unidad" desde el host remoto con IP "192.168.1.101", utilizando la contraseña
"cajero1234", se tendría que realizar algo así:
mysql> GRANT ALL ON unidad.* TO 'cajero1'@'192.168.1.101'
IDENTIFIED BY 'cajero1234‘;

• Desde el servidor remoto (192.168.1.101):


mysql -u cajero1 -h 192.168.1.1 -p
6/14/2021 Cognitive Cities Management Research Group (CMMA) 35
GESTIÓN DE USUARIOS
NO es una práctica recomendable, si se desea que el usuario "cajero1" pueda acceder a la base de
datos desde cualquier host, utilice:
mysql>GRANT ALL ON unidad.* TO 'cajero1'@'%' IDENTIFIED BY 'cajero1234';
Podría utilizar el formato (cajero1@'192.168.1.%') para que el acceso al servidor solo sea desde la Red
que tienen la misma IP del servidor. También puede hacer uso de (cajero1@'%.midominio.org') para
permitir el acceso desde un servidor WEB.

Revocar privilegios (desde el usuario root):


mysql> REVOKE SELECT ON unidad.personas FROM anonimo;
mysql> SHOW GRANTS FOR anonimo;
Para quitar privilegios asignados a los campos, aplicamos lo siguiente:
mysql> REVOKE SELECT(nombre) ON Unidad.PeriodosLectivos FROM anonimo;
mysql> REVOKE insert, delete ON Unidad.estudiantes FROM anonimo; (parcial)
mysql> SHOW GRANTS FOR anonimo;

Mysql>DROP USER anonimo;


6/14/2021 Cognitive Cities Management Research Group (CMMA) 36

También podría gustarte