Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
EQUIPO 9 FRAGOSO PEÑA FERNANDO HUERTA GÓMEZ DANIEL PÉREZ OCHOA VALERI PÉREZ SAN JUAN ALDO PAILLES RUBIÑOS FRANCISCO NICOLÁS
<ul><li>Las restricciones de integridad proporcionan un medio de asegurar que las modificaciones hechas a la base de datos...
RESTRICCIONES DE LOS DOMINIOS <ul><li>Las restricciones de los dominios son la forma más simple de restricción de integrid...
<ul><li>La cláusula  create domain  se puede usar para definir nuevos dominios. Para las instrucciones: </li></ul><ul><li>...
<ul><li>Los valores de un dominio pueden ser  convertidos  a otro dominio. Si el atributo  A  de la relación  r  es de tip...
<ul><li>La cláusula  check  de SQL permite restringir los dominios de maneras poderosas que no permiten la mayor parte de ...
<ul><li>La cláusula  check  también puede utilizarse para restringir un dominio para que no contenga valores nulos: </li><...
<ul><li>El dominio se puede limitar para que contenga sólo un conjunto especificado de valores usando la cláusula  in : </...
INTEGRIDAD REFERENCIAL <ul><li>Se denomina  integridad referencial  al deseo de asegurar que un valor que aparece en una r...
<ul><li>Integridad referencial en el modelo E-R </li></ul><ul><li>Las restricciones de integridad referencial aparecen con...
<ul><li>Integridad referencial en SQL </li></ul><ul><li>Las claves primarias pueden especificarse como parte de la instruc...
<ul><li>Cuando se viola una restricción de integridad referencial, el procedimiento normal es rechazar la acción que provo...
<ul><li>Debido a la cláusula on delete cascade asociada con la declaración de la clave externa, si un borrado de una tupla...
<ul><li>Si hay cadena de dependencias de claves externas entre varias relaciones, un borrado o una actualización en uno de...
<ul><li>ASERTOS </li></ul><ul><li>Un  aserto  es un predicado que expresa una condición que se desea que la base de datos ...
<ul><li>La suma de todos los importes de los préstamos de cada sucursal debe ser menor que la suma de todos los saldos de ...
<ul><li>Cada préstamo tiene al menos un cliente que tiene una cuenta con un saldo mínimo de 1.ooo Euros. </li></ul><ul><li...
<ul><li>DISPARADORES </li></ul><ul><li>Un  disparador  es una orden que el sistema ejecuta de manera automática como efect...
<ul><li>Necesidades de los disparadores </li></ul><ul><li>Los disparadores son mecanismos útiles para alertar a los usuari...
<ul><li>Disparadores en SQL </li></ul><ul><li>Una instrucción de actualización SQL podría actualizar múltiples tuplas de l...
<ul><li>El evento del disparador puede tener varias formas: </li></ul><ul><li>El  evento  del disparador puede ser  insert...
<ul><li>Estos disparadores pueden servir como restricciones extras que pueden evitar actualizaciones no válidas. Se puede ...
<ul><li>En lugar de realizar una acción por cada fila afectada, se puede realizar una acción única para la instrucción SQL...
SEGURIDAD Y AUTORIZACIÓN <ul><li>Los datos guardados en la base de datos deben estar protegidos contra los accesos no auto...
<ul><li>La  seguridad de las bases de datos  se refiere a la protección frente a accesos malintencionados. No es posible l...
<ul><li>Autorizaciones  </li></ul><ul><li>Los usuarios pueden tener varios tipos de autorización para diferentes partes de...
<ul><li>Los usuarios pueden recibir todos los tipos de autorización, ninguno de ellos o una combinación determinada de los...
<ul><li>Autorizaciones y vistas </li></ul><ul><li>Una vista puede ocultar los datos que un usuario no necesita ver. La cap...
<ul><li>Concesión de privilegios </li></ul><ul><li>El usuario al que se la ha concedido alguna forma de autorización puede...
<ul><li>AUTORIZACIÓN EN SQL </li></ul><ul><li>Privilegios en SQL </li></ul><ul><li>La norma SQL incluye los privilegios  d...
<ul><li>La autorización  update  puede concederse sobre todos los atributos de la relación o sólo sobre algunos. Si se inc...
Upcoming SlideShare
Loading in …5
×

INTEGRIDAD Y SEGURIDAD

5,517 views

Published on

  • Be the first to comment

INTEGRIDAD Y SEGURIDAD

  1. 1. EQUIPO 9 FRAGOSO PEÑA FERNANDO HUERTA GÓMEZ DANIEL PÉREZ OCHOA VALERI PÉREZ SAN JUAN ALDO PAILLES RUBIÑOS FRANCISCO NICOLÁS
  2. 2. <ul><li>Las restricciones de integridad proporcionan un medio de asegurar que las modificaciones hechas a la base de datos por los usuarios autorizados no provoquen la pérdida de la consistencia de los datos. </li></ul><ul><li>Restricciones de integridad para el modelo E-R: </li></ul><ul><li>Declaración de claves. </li></ul><ul><li>Forma de la relación. </li></ul>
  3. 3. RESTRICCIONES DE LOS DOMINIOS <ul><li>Las restricciones de los dominios son la forma más simple de restricción de integridad. El sistema las verifica fácilmente siempre que se introduce en la base de datos un nuevo elemento de datos. Es posible que varios atributos tengan el mismo dominio. </li></ul><ul><li>Una definición adecuada de las restricciones de los dominios no sólo permite verificar los valores introducidos en la base de datos, sino también examinar las consultas para asegurarse de que tengan sentido las comparaciones que hagan. </li></ul>
  4. 4. <ul><li>La cláusula create domain se puede usar para definir nuevos dominios. Para las instrucciones: </li></ul><ul><li>create domain Euros numeric (12,2) </li></ul><ul><li>create domain Dólares numeric (12,2) </li></ul><ul><li>Definen los dominios Euros y Dólares como números decimales con un total de 12 dígitos dos de los cuales se sitúan después de la coma decimal. </li></ul>
  5. 5. <ul><li>Los valores de un dominio pueden ser convertidos a otro dominio. Si el atributo A de la relación r es de tipo Euros, se puede convertir a Dólares escribiendo: </li></ul><ul><li>cast r.A as Dólares </li></ul><ul><li>SQL también proporciona las cláusulas drop domain y alter domain para borrar o modificar dominios que se hayan declarado anteriormente. </li></ul>
  6. 6. <ul><li>La cláusula check de SQL permite restringir los dominios de maneras poderosas que no permiten la mayor parte de los sistemas de tipos de los lenguajes de programación. </li></ul><ul><li>create domain sueldo-por-hora numeric (5,2) </li></ul><ul><li>constrain comprobación-valor-sueldo </li></ul><ul><li>check ( value >- 4.oo) </li></ul>
  7. 7. <ul><li>La cláusula check también puede utilizarse para restringir un dominio para que no contenga valores nulos: </li></ul><ul><li>create domain número-cuenta char (10) </li></ul><ul><li>constrain comprobación-número-cuenta-nulo </li></ul><ul><li>check(value not null) </li></ul>
  8. 8. <ul><li>El dominio se puede limitar para que contenga sólo un conjunto especificado de valores usando la cláusula in : </li></ul><ul><li>create domain tipo-cuenta char (10) </li></ul><ul><li>constrain comprobación-tipo-cuenta </li></ul><ul><li>check ( value in (‘Corriente’, ‘Ahorro’)) </li></ul>
  9. 9. INTEGRIDAD REFERENCIAL <ul><li>Se denomina integridad referencial al deseo de asegurar que un valor que aparece en una relación para un conjunto de atributos determinado aparezca también en otra relación para un cierto conjunto de atributos. </li></ul>
  10. 10. <ul><li>Integridad referencial en el modelo E-R </li></ul><ul><li>Las restricciones de integridad referencial aparecen con frecuencia. Si se obtiene el esquema de la base de datos relacional creando tablas a partir de los diagramas E-R, cada relación que proceda de un conjunto de relaciones tendrá restricciones de integridad referencial. Otra fuente de restricciones de integridad referencial son los conjuntos de entidades débiles. </li></ul><ul><li>Modificación de la base de datos </li></ul><ul><li>La modificación de la base de datos puede ocasionar violaciones de la integridad referencial. </li></ul>
  11. 11. <ul><li>Integridad referencial en SQL </li></ul><ul><li>Las claves primarias pueden especificarse como parte de la instrucción create table de SQL usando la cláusula foreign key . </li></ul><ul><li>De manera predeterminada, una clave externa referencia los atributos que forman la clave primaria de la tabla referenciada. SQL también soporta una versión de la cláusula references, donde se puede especificar explícitamente una lista de atributos de la relación referenciada. Esta lista se debe declarar como clave candidata de la relación referenciada. </li></ul><ul><li>Forma abreviada como parte de la definición de un atributo para declarar que el atributo forma una clave externa: </li></ul><ul><li>n ombre-sucursal char (15) references sucursal </li></ul>
  12. 12. <ul><li>Cuando se viola una restricción de integridad referencial, el procedimiento normal es rechazar la acción que provocó la violación. Sin embargo, la cláusula foreign key puede especificar que si una acción de borrado o de actualización de la relación a la que hace referencia viola la restricción, en lugar de rechazar la acción, hay que adoptar medidas para modificar tupla de la relación que hace la referencia con objeto de restaurar la restricción. Considérese la siguiente definición de una restricción de integridad de la relación cuenta: </li></ul><ul><li>create table cuenta </li></ul><ul><li>(… </li></ul><ul><li>f oreign key (nombre-sucursal) references sucursal </li></ul><ul><li>on delete cascade </li></ul><ul><li>on delete cascade, </li></ul><ul><li>… ) </li></ul>
  13. 13. <ul><li>Debido a la cláusula on delete cascade asociada con la declaración de la clave externa, si un borrado de una tupla de sucursal da lugar a que se viole la restricción de integridad referencial, el sistema no rechaza el borrado. En su lugar, el borrado se realiza en <<cascada>> en la relación cuenta, borrando la tupla que hace referencia a la sucursal que se borró. </li></ul><ul><li>SQL también permite que la cláusula foreign key especifique una acción diferente a cascade si se viola la restricción; el campo que hace la referencia (nombre-sucursal) se puede establecer en nulo o darle un valor predeterminado para el dominio (usando set default). </li></ul>
  14. 14. <ul><li>Si hay cadena de dependencias de claves externas entre varias relaciones, un borrado o una actualización en uno de sus extremos pueden propagarse por toda la cadena. Si una actualización o borrado en cascada crea una violación de la restricción que no puede resolverse mediante una nueva operación en cascada, el sistema aborta la transacción. En consecuencia, todas las modificaciones generadas por la transacción y por sus acciones en cascada se deshacen. </li></ul><ul><li>En SQL la semántica de las claves se complica por el hecho de que SQL permite valores nulos. Los atributos de las claves externas pueden ser nulos. </li></ul>
  15. 15. <ul><li>ASERTOS </li></ul><ul><li>Un aserto es un predicado que expresa una condición que se desea que la base de datos satisfaga siempre. Las restricciones de dominio y las de integridad referencial son formas especiales de los asertos. Sin embargo, hay muchas restricciones que no se pueden expresar utilizando únicamente estas formas especiales. </li></ul><ul><li>En SQL los asertos adoptan la forma: </li></ul><ul><li>create assertion <nombre-aserto> check <predicado> </li></ul>
  16. 16. <ul><li>La suma de todos los importes de los préstamos de cada sucursal debe ser menor que la suma de todos los saldos de las cuentas de esa sucursal. </li></ul><ul><li>create assertion <nombre-aserto> check <predicado> </li></ul><ul><li>Las dos restricciones mencionadas pueden escribirse: </li></ul><ul><li>create assertion restricción-suma check </li></ul><ul><li>( not exist ( select*from sucursal </li></ul><ul><li>where ( select sum (importe) from préstamo </li></ul><ul><li> where préstamo.nombre-sucursal </li></ul><ul><li> =sucursal.nombre-sucursal) </li></ul><ul><li>>= ( select sum (importe) from cuenta </li></ul><ul><li> Where préstamo.nombre-sucursal </li></ul><ul><li> =sucursal.nombre-sucursal))) </li></ul>
  17. 17. <ul><li>Cada préstamo tiene al menos un cliente que tiene una cuenta con un saldo mínimo de 1.ooo Euros. </li></ul><ul><li>create assertion restricción-saldo check </li></ul><ul><li>( not exist ( select*from préstamo </li></ul><ul><li>where not exist ( select* </li></ul><ul><li> from prestatario, impositor, cuenta </li></ul><ul><li> where préstamo.número-préstamo </li></ul><ul><li> = prestatario.número-préstamo </li></ul><ul><li>and prestatario.nombre-prestatario </li></ul><ul><li> = impositor.nombre-cliente </li></ul><ul><li>and imposotor.número-cuenta </li></ul><ul><li> = cuenta.número-cuenta </li></ul><ul><li>and cuenta.saldo >= 100))) </li></ul>
  18. 18. <ul><li>DISPARADORES </li></ul><ul><li>Un disparador es una orden que el sistema ejecuta de manera automática como efecto secundario de la modificación de la base de datos. Para diseñar un mecanismo disparador hay que cumplir dos requisitos: </li></ul><ul><li>Especificar las condiciones en las que se va a ejecutar el disparador. Esto se descompone en un evento que causa la comprobación del disparador u una condición que se debe cumplir para la ejecutar el disparador. </li></ul><ul><li>Especificar las acciones que se van a realizar cuando se ejecute el disparador. </li></ul>
  19. 19. <ul><li>Necesidades de los disparadores </li></ul><ul><li>Los disparadores son mecanismos útiles para alertar a los usuarios o para realizar de manera automática ciertas tareas cuando se cumplen determinadas condiciones. </li></ul><ul><li>Ejemplo: </li></ul><ul><li>Insertar una nueva tupla s a la relación préstamo con </li></ul><ul><li>s{nombre-sucursal}=t{nombre-sucursal} </li></ul><ul><li>s{número-préstamo}=t{número-cuenta} </li></ul><ul><li>s{importe}=-t{saldo} </li></ul><ul><li>  </li></ul><ul><li>Insertar una nueva tupla u a la relación prestatario con </li></ul><ul><li>u{nombre-cliente}=<<Santos>> </li></ul><ul><li>u{número-préstamo}=t{número-cuenta} </li></ul>
  20. 20. <ul><li>Disparadores en SQL </li></ul><ul><li>Una instrucción de actualización SQL podría actualizar múltiples tuplas de la realización, y la cláusula for each row en el código del disparador se iteraría explícitamente por cada fila actualizada. La cláusula referencing new row as crea una variable nfila (denominada variable de transición ) que almacena el valor de una fila actualizada después de la actualización. </li></ul><ul><li>La instrucción when especifica una condición, en este caso nfila…saldo <0. El sistema ejecuta el resto del cuerpo del disparador sólo para las tuplas que satisfacen la condición. La cláusula begin atomic…end sirve para encuadrar varias instrucciones SQL en una única instrucción compuesta. Las dos instrucciones insert en la estructura begin…end realizan las tareas específicas para la creación de nuevas tuplas en las relaciones prestatario y préstamo para representar el nuevo préstamo. La instrucción update sirve para establecer en 0 el saldo de la cuenta. </li></ul>
  21. 21. <ul><li>El evento del disparador puede tener varias formas: </li></ul><ul><li>El evento del disparador puede ser insert o delete en lugar de update. </li></ul><ul><li>Para las actualizaciones el disparador puede especificar columnas cuya actualización cause la ejecución del disparador. </li></ul><ul><li>La cláusula referencing old row as se puede usar para crear una variable que almacene el valor anterior de una fila actualizada o borrada. La cláusula referencing new row as se puede usar con las inserciones además de las actualizaciones. </li></ul><ul><li>Los disparadores se pueden activar antes (before) del evento (insert/delete/update) en lugar de después (after) del evento. </li></ul>
  22. 22. <ul><li>Estos disparadores pueden servir como restricciones extras que pueden evitar actualizaciones no válidas. Se puede definir un disparador que reemplace el valor por el valor null . Se puede usar la instrucción set para realizar modificaciones. </li></ul><ul><li>create trigger poner-nulo before update on r </li></ul><ul><li>referencing new row as nfila </li></ul><ul><li>for each row </li></ul><ul><li>when nfila.número-teléfono = ‘’ </li></ul><ul><li>set nfila.número-teléfono = ‘’ </li></ul>
  23. 23. <ul><li>En lugar de realizar una acción por cada fila afectada, se puede realizar una acción única para la instrucción SQL completa que causó la inserción, borrado o actualización. Para hacerlo se usa la cláusula for each statement en lugar de for each row. </li></ul><ul><li>Las cláusulas referencing old table as o referencing new table as se pueden usar entonces para hacer referencia a tablas temporales (denominadas tablas de transición ) conteniendo todas las filas afectadas. Las tablas de transición no se pueden usar con los disparadores before , pero sí con los after , independientemente de si son disparadores de instrucción ( statement ) o de filas ( row ). </li></ul><ul><li>Una instrucción SQL única se puede usar para realizar varias acciones en términos de las tablas de transición. </li></ul>
  24. 24. SEGURIDAD Y AUTORIZACIÓN <ul><li>Los datos guardados en la base de datos deben estar protegidos contra los accesos no autorizados, de la destrucción o alteración malintencionadas además de la introducción accidental de inconsistencias que evitan las restricciones de integridad. </li></ul><ul><li>Violaciones de la seguridad </li></ul><ul><li>Entre las formas de acceso malintencionados se encuentran: </li></ul><ul><li>La lectura no autorizada de los datos (robo de información). </li></ul><ul><li>La modificación no autorizada de los datos. </li></ul><ul><li>La destrucción no autorizada de los datos. </li></ul>
  25. 25. <ul><li>La seguridad de las bases de datos se refiere a la protección frente a accesos malintencionados. No es posible la protección absoluta de la base de datos contra el uso malintencionado, pero se puede elevar lo suficiente el costo para quien lo comete como para disuadir la mayor parte, sino la totalidad, de los intentos de tener acceso a la base de datos sin la autorización adecuada. </li></ul><ul><li>Para proteger la base de datos hay que adoptar medidas de seguridad en varios niveles: </li></ul><ul><li>Sistemas de bases de datos. </li></ul><ul><li>Sistema operativo. </li></ul><ul><li>Red. </li></ul><ul><li>Físico. </li></ul><ul><li>Humano. </li></ul>
  26. 26. <ul><li>Autorizaciones </li></ul><ul><li>Los usuarios pueden tener varios tipos de autorización para diferentes partes de la base de datos. Entre ellas están las siguientes: </li></ul><ul><li>La autorización de lectura permite la lectura de los datos pero no su modificación. </li></ul><ul><li>La autorización de inserción permite la inserción de datos nuevos, pero no la modificación de los existentes. </li></ul><ul><li>La autorización de actualización permite la modificación de los datos, pero no su borrado. </li></ul><ul><li>La autorización de borrado permite el borrado de los datos. </li></ul>
  27. 27. <ul><li>Los usuarios pueden recibir todos los tipos de autorización, ninguno de ellos o una combinación determinada de los mismos. Además de estas formas de autorización para el acceso a los datos, los usuarios pueden recibir autorización para modificar el esquema de la base de datos: </li></ul><ul><li>La autorización de índices permite la creación y borrado de índices. </li></ul><ul><li>La autorización de recursos permite la creación de relaciones nuevas. </li></ul><ul><li>La autorización de alteración permite el añadido o el borrado de atributos de las relaciones. </li></ul><ul><li>La autorización de la eliminación permite el borrado de las relaciones. </li></ul>
  28. 28. <ul><li>Autorizaciones y vistas </li></ul><ul><li>Una vista puede ocultar los datos que un usuario no necesita ver. La capacidad de las vistas para ocultar datos sirve para simplificar el uso del sistema y para mejorar la seguridad. El uso del sistema se simplifica porque se permite al usuario restringir su atención a los datos de interés. Aunque puede que se niegue el acceso a una relación mediante una vista. Por tanto, se puede usar una combinación de seguridad en el nivel relacional y en el nivel de las vistas para limitar el acceso de un usuario precisamente a los datos que necesita. </li></ul><ul><li>La creación de vistas no necesita la autorización de recursos. El usuario que crea una vista no recibe necesariamente todos los privilegios sobre la misma. Ese usuario sólo recibe los privilegios que no proporcionan autorizaciones adicionales respecto de las que ya posee. Si un usuario crea una vista sobre la que no se puede conceder ninguna autorización, se deniega la solicitud de creación de la vista. </li></ul>
  29. 29. <ul><li>Concesión de privilegios </li></ul><ul><li>El usuario al que se la ha concedido alguna forma de autorización puede ser autorizado a transmitir esa autorización a otros usuarios. Sin embargo hay que tener cuidado con el modo en que se puede transmitir la autorización entre los usuarios para asegurar que la misma pueda retirarse en el futuro. La transmisión de la autorización de un usuario a otro puede representarse mediante un grafo de autorización. </li></ul>
  30. 30. <ul><li>AUTORIZACIÓN EN SQL </li></ul><ul><li>Privilegios en SQL </li></ul><ul><li>La norma SQL incluye los privilegios delete, insert, select y update. El privilegio select se corresponde con el privilegio de lectura. SQL también incluye un privilegio references que permite a un usuario o papel declarar claves externas al crear relaciones. Si la relación que se va a crear incluye una clave que hace referencia a atributos de otra relación, el usuario o papel debe haber recibido el privilegio references sobre esos atributos. El motivo de que el privilegio references sea una característica útil es algo sutil. </li></ul><ul><li>El lenguaje de definición de datos de SQL incluye órdenes para conceder y retirar privilegios. La instrucción grant se utiliza para conferir autorizaciones. La forma básica de esta instrucción es la siguiente: </li></ul><ul><li>grant <lista de privilegios> on <nombre de la relación o de la lista> to <lista de usuarios/papeles> </li></ul>
  31. 31. <ul><li>La autorización update puede concederse sobre todos los atributos de la relación o sólo sobre algunos. Si se incluye la autorización update en una instrucción grant, la lista de atributos sobre los que se va a conceder la autorización update opcionalmente aparece entre paréntesis justo después de la palabra clave update. Si se omite la lista de atributos se concede el privilegio update sobre los atributos de la relación. </li></ul><ul><li>En SQL, el privilegio insert, también puede especificar una lista de atributos; cualquier inserción en la relación debe especificar sólo esos atributos y al resto de los atributos se les conceden valores predeterminados (si hay alguno definido para ellos) o se les da el valor nulo. </li></ul><ul><li>El privilegio SQL references se concede sobre atributos concretos de manera parecida a la mostrada para el privilegio update. </li></ul><ul><li>El privilegio all privileges puede utilizarse como una forma abreviada de todos los privilegios que se pueden conceder. SQL incluye también un privilegio usage que autoriza a un usuario a utilizar un dominio especificado. </li></ul>

×