Integridad de Datos Guia 4

c c        c  c    c  c  c            

Views 43 Downloads 0 File size 174KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

c c        c  c    c  c  c                    

  c      c    c   c        

c c       c  c    c  c  c                        

  c      c    c   c        

    c ?

÷   c c     ? ?  c ?    ?? c  c? ??   ?? c  ? ?? ?   ?? c? ??    ??  c cc ? ? ?   ??  c cc ?    ?? c  ?c c   ??  cc ? c ?   ??  ? ?    ??     ?   ?? c c ?    ??  ??  c?c  c? ??  ?? c  c? ?? c ?  ?? c  c? ?? c ?  ??  cc ?    ?? c? ?c  c? ??   ?? c  c? ? c?   ?? c  c? ?c c?   ?? c  c?   c?   ?? c  c? c c?? ?c?  ? ?  ? ? cc ?   ? ?  c??   ??  c ? ?  ? ?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?  ?c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!? " c ?c??? #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!? ?

c cc!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ?

 ?

?

?

c 

c 

Ciertos errores de integridad pueden provocar que una base de datos deje de ser usable. Los problemas de integridad se suelen producir cuando varios usuarios están editando datos, de la misma base de datos de forma simultánea. Por ejemplo, un usuario crea un nuevo registro, mientras otro edita uno de los existentes, y un tercero borra otro. El DBMS debe asegurar que se pueden realizar estas tareas sin que se produzcan error es que afecten la integridad de la base de datos. El desarrollo de la presente guía tiene por objeto generar capacidades que permitan decidir la mejor forma de implementar la integridad de los datos, en las bases de datos. Vamos a conocer las razones para su adecuada implementación, teniendo en cuenta propiedades que aseguren la integridad, los métodos para conseguirla, los tipos de integridad y los tipos de restricciones

 c! 

1. 2. 3. 4. 5.

conocer definiciones de SQL SERVER para implementar el vocabulario por medio de ejercicios aprender integridad referencial. Mirar cómo se utiliza las expresiones. Saber que es y cómo es una transacción de base de datos. Implementar el conocimiento de las propiedades de las tablas

. ? ?

?

c c  ?

c"#$%&'()(($()#*++$&$,'$&$)-$+#)(*($.*&&$..'/"0.*12-$#'#3(($-*+ ()#*+'"%&$+)(*+$"3")  )+$($()#*+ *+   &$-).'*")- ($ $" $".)&%)&+$ ($ 1)"#$"$& -) '"#$%&'()( ($ -*+ ()#*+ )-1).$")(*+ $" 3") base de datos .*" &$+2$.#* ) -)+ &$%-)+ 2&$($,'"'()+ * &$+#&'..'*"$+ ) '"#$%&'()( #)1 '4" 23$($ 5$&','.)&+$ '"1$(')#)1$"#$ )"#$+ ($- 1*1$"#* ($ '"#&*(3.'& -*+ ()#*+ ) -)  )+$ ($ ()#*+62*&$7$12-*$"3" ,*&13-)&'* $12-$)"(* 5)-'().'/"($()#*+8  " .-)&* $7$12-* ($ $&&*& ($ '"#$%&'()( $+ $- '"%&$+* ($ 3" #'2* ($ ()#* '".*&&$.#* ($"#&* ($ 3" .)12* *& $7$12-* '"%&$+)& 3" #$9#* .3)"(*+$$+2$&)3"":1$&*$"#$&*  )1 '4" 3") $&&*& $" -) '"#$%&'()( $" 3")  )+$ ($ ()#*+ 23$($ +$& -) $9'+#$".') ($ 3" 5)-*& "314&'.* 6'( .-'$"#$8 $" -) compra de 3" 2&*(3.#* 2*&2)&#$($3".-'$"#$;3$"*$9'+#$$"+3.*&&$+2*"('$"#$#) -).*"$+$ ":1$&*6'"#$%&'()(&$,$&$".')-8  )1 '4"23$($+3.$($&;3$+$$-'1'"$3"),'-)2)(&$.*"(*+*1)"?=34&,)")+? 

Cuando se trabaja con bases de datos, generalmente los datos se reparten entre varios ficheros. Si la base de datos está disponible para varios usuarios de forma simultánea, deben existir mecanismos que aseguren que las interrelaciones entre registros se mantienen coherentes, que se respetan las dependencias de existencia y que las claves únicas no se repitan. Por ejemplo, un usuario no debe poder borrar una entidad de una base de datos, si otro usuario está usando los datos de esa entidad. Este tipo de situaciones son potencialmente peligrosas, ya que provocan situaciones con frecuencia imprevistas. Ciertos errores de integridad pueden provocar que una base de datos deje de ser usable. Los problemas de integridad se suelen producir cuando varios usuarios están editando datos de la misma base de datos de for ma simultánea. Por ejemplo, un usuario crea un nuevo registro, miestras otro edita uno de los existentes, y un tercero borra otro. El DBMS debe asegurar que se pueden realizar estas tareas sin que se produzcan errores que afecten a la integridad de la base de datos. Por tanto, un paso importante en el diseño de una base de datos es decidir la mejor forma de implementar la integridad de los datos. La integridad de los datos hace referencia a la coherencia y la precisión de los datos que están almacenados en una base de datos.

c      ?

Las Propiedades de las Tablas que aseguran la Integridad de Datos son: Tipos de Datos, Definiciones NOT NULL, Definiciones DEFAULT, Propiedades IDENTITY, Restricciones, Reglas, Desencadenadores, Índices.

c  

Un tipo de dato es un atributo que especifica el tipo de dato (carácter, entero, binario, etc.) que puede ser almacenado en una columna, parámetro o variable. SQL Server provee de un conjunto de tipos de dato, aún cuando se pueden crear tipos de dato definidos por el usuario que se crean sobre la base de tipos de dato provisto por el SQL Server. Los tipos de dato provistos por el sistema definen todos los tipos de dato que se pueden usar en SQL Server. Los tipos de dato pueden ser utilizados para asegurar la integridad de los datos porque los datos ingresados o modificados deben cumplir con el tipo de dato especificado para el objeto correspondiente. Por ejemplo, no se puede almacenar el nombre de alguien en una columna con un tipo de dato date time, ya que esta columna solo aceptará valores válidos de fecha y hora.

c c c      La anulabilidad de una columna determina si las filas en la tabla pueden contener valores nulos para esa columna. Un valor nulo no es lo mismo que un cero, un blanco o una cadena de caracteres de longitud cero. Un valor nulo significa que no se ha ingresado ningún valor para esa columna o que el valor es desconocido o indefinido. La anulabilidad de una columna se define cuando se crea o se modifica una tabla. Si se usan columnas que permiten o no valores nulos, se debería usar siempre las cláusula NULL y NOT NULL dada la complejidad que tiene el SQL Server para manejar los valores nulos y no prestarse a confusión. La cláusula NULL se usa si se permiten valores nulos en la columna y la cláusula NOT NULL si no.

c c c    Los valores por defecto indican que valor será guardado en una columna si no se especifica un valor para la columna cuando se inserta una fila. Las definiciones DEFAULT pueden ser creadas cuando la tabla es creada (como

parte de la definición de la tabla) o pueden ser agregadas a una tabla existente. Cada columna en una tabla puede contener una sola definición DEFAULT.

c c c Cada tabla puede tener sólo una columna de identificación, la que contendrá una secuencia de valores generados por el sistema que unívocamente identifican a cada fila de la tabla. Las columnas de identificación contienen valores únicos dentro de la tabla para la cual son definidas, no así con relación a otras tablas que pueden contener esos valores en sus propias columnas de identificación. Esta situación no es generalmente un problema, pero en los casos que así lo sea (por ejemplo cuando diferentes tablas referidas a una misma entidad conceptual, como ser clientes, son cargadas en diferentes servidores distribuidos en el mundo y existe la posibilidad que en algún momento para generar reporte o consolidación de información sean unidas) se pueden utilizar columnas ROWGUIDCOL como se vio anteriormente.

 c

c  6  c  8 Las restricciones permiten definir el modo en que SQL Server automáticamente fuerza la integridad de la base de datos. Las restricciones definen reglas indicando los valores permitidos en las columnas y son el mecanismo estándar para asegurar integridad. Usar restricciones es preferible a usar desencadenadores, reglas o valores por defecto. El query optimizer (optimizador de consultas) de SQL Server utiliza definiciones de restricciones para construir planes de ejecución de consultas de alto rendimiento.

  6  8 Las reglas son capacidades mantenidas p or compatibilidad con versiones anteriores de SQL Server, que realizan algunas de las mismas funcionalidades que las restricciones CHECK. Las restricciones CHECK son el modo preferido y estándar de restringir valores para una columna. Las restricciones CHE CK, por otro lado, son mas concisas que las reglas; se puede aplicar solo una regla por columna mientras que se pueden aplicar múltiples restricciones CHECK. Las restricciones CHECK son especificadas como parte del comando CREATE TABLE, mientras que las reglas son creadas como objetos separados y luego vinculadas a la columna.

Se utiliza el comando CREATE RULE para crear una regla, y luego se debe utilizar el procedimiento almacenado sp_bindrule para vincular la regla a una columna o a un tipo de dato defin ido por el usuario.

     Los desencadenadores son una clase especial de procedimientos almacenados que son definidos para ser ejecutados automáticamente cuando es ejecutado un comando UPDATE, INSERT o DELETE sobre una tabla o una vista. Los desencadenadores son poderosas herramientas que pueden ser utilizados para aplicar las reglas de negocio de manera automática en el momento en que los datos son modificados. Los desencadenadores pueden comprender el control lógico que realizan loas restricci ones, valores por defecto, y reglas de SQL Server (aún cuando es recomendable usar restricciones y valores por defecto antes que desencadenadores en la medida que respondan a todas las necesidades de control de integridad de datos).

c c   Un índice es una estructura que ordena los datos de una o más columnas en una tabla de base de datos. Un índice provee de punteros a los valores de los datos almacenados en columnas especificadas de una tabla y luego ordena esos punteros de acuerdo al orden que se especifique. Las bases de datos utilizan los índices del mismos modo que se utilizan los índices de un libro: se busca en el índice para encontrar un determinado valor y luego se sigue un puntero a la fila que contiene ese valor. Un índice con clave única asegu ra la unicidad en la columna.

   cc c  ?

Puede conseguir la integridad de los datos mediante dos métodos: integridad de datos declarativa o integridad de datos procedimental.

 c c  c! ?

Con la integridad declarativa, se definen los criterios que los datos tienen que cumplir como parte de la definición de un objeto y, después, Microsoft® SQL ServerŒ versión 2000 asegura automáticamente que los datos cumplan dichos criterios. El método preferido p ara implementar la integridad de datos básica es la integridad declarativa. Tenga en cuenta los hechos siguientes acerca del método declarativo: A

A

La integridad declarativa se declara como parte de la definición de la base de datos, mediante el uso de restri cciones declarativas que se definen directamente en las tablas y las columnas. Implemente la integridad declarativa mediante la utilización de restricciones, valores predeterminados y reglas.

?

c c  c    Con la integridad procedimen tal se escriben secuencias de comandos que definen los criterios que los datos tienen que cumplir y que aseguran que dichos criterios se cumplen. Debe limitar el uso de la integridad procedimental a situaciones excepcionales y a aquellas con una lógica com plicada. Por ejemplo, utilice la integridad procedimental cuando desee implementar una eliminación en cascada. Los hechos siguientes se aplican a la integridad procedimental: A A

La integridad procedimental se puede implementar en el cliente o en el servidor mediante otros lenguajes y herramientas de programación. Implemente la integridad procedimental utilizando desencadenadores y procedimientos almacenados.

 c

c   ?

La restricciones permiten definir la forma en que SQL Server automáticamente asegurará la integridad de la base de datos. Las restricciones definen reglas en base a los valores permitidos en las columnas y son los mecanismos estándar para asegurar la integridad. Se deberían usar restricciones en vez de desencadenadores, procedimientos almacenados, valores por defecto o reglas. Las restricciones pueden ser restricciones de columnas o de tablas: ·

Una restricción de columna es especificada como parte de la definición de la columna y se aplica solo a esta columna.

·

Una restricción de tabla es declarada independientemente de las definiciones de la columna y se puede aplicar a mas de una columna en la tabla.

Las restricciones de tabla deben ser usada s cuando mas de una columna se incluye en la formulación de la condición. ? ?

?

c c c  ?

SQL Server soporta cuatro tipos de integridad de datos: integridad de entidad, integridad de dominio, integridad referencial e integridad definida po r el usuario.

c c c La integridad de entidad define una fila como una única instancia de una entidad para una tabla en particular. La integridad de entidad asegura la integridad de la columna de identificación o la clave primaria de una ta bla ( a través de índices, restricciones UNIQUE, restricciones PRIMARY KEY, o propiedades IDENTITY).

c c c c La integridad de dominio es la validación de las entradas en una determinada columna. Se puede asegurar la integridad de dominio res tringiendo el tipo (a través de tipos de datos), el formato (a través de las restricciones CHECK y de las reglas), o el rango de valores posibles ( a través de restricciones FOREIGN KEY, restricciones CHECK, definiciones DEFAULT, definiciones NOT NULL, y reglas)

c c c  La integridad referencial preserva las relaciones definidas entre tablas, cuando se entran, modifican o borran registros. En SQL Server, la integridad referencial está basada en interrelaciones entre claves ajenas y claves pr imarias o entre claves ajenas y claves únicas (a través de la restricciones FOREIGN KEY y CHECK). La integridad referencial asegura que los valores de las claves son consistentes a través de distintas tablas. Tal consistencia requiere que no exista referencia a valores inexistentes y que, si un valor clave cambia, todas las referencias cambien consistentemente a lo largo de la base de datos. Cuando se fuerza la integridad referencial, SQL Server previene a los usuarios de realizar lo siguiente:

·

Agregar registros a una tabla relacionada si no hay registros asociados en la correspondiente tabla primaria.

·

Cambiar valores en la tabla primaria que resulten en registros huérfanos en las tablas relacionadas.

·

Borrar registros desde una ta bla primaria si existen registros relacionados en la tabla ajena.

Por ejemplo, con las tablas Ventas y Títulos en la base de datos Pubs, la integridad referencial está basada sobre las relaciones entre la clave ajena (tit_ID) en la tabla ventas y la clave primaria (tit_ID) en la tabla Titulos, como se muestra en la Figura.

! c             

c cc c  c La integridad definida por el usuario permite definir reglas de negocios específicas que no caigan dentro de alguna de las categorías anteriores. Todas las categorías soportan integridad definida por el usuario (todas las restricciones a nivel columna y a nivel tabla en el comando CREATE TABLE, procedimientos almacenados y desencadenadores) ? ? ?

  c

c   ?

c c c 

c c  c 

c c  c c 

c c  c  

c  c

c  

Restricciones PRIMARY KEY Restricciones UNIQUE Restricciones FOREIGN KEY Restricciones CHECK Restricciones FOREIGN KEY Restricciones CHECK

Todas las c c restricciones a nivel c c  columna y a nivel  c tabla en el comando  CREATE TABLE ? ? ? ? ? ?

 c c  

   @  

Define una fila como una única   ? instancia de una '? entidad para una tabla en particular

Es la validación de   ? las entradas en una '? determinada columna.

Preserva las relaciones definidas   ? entre tablas, cuando '? se entran, modifican  o borran registros. Permite definir reglas de negocios específicas que no   ? caigan dentro de '? alguna de las categorías anteriores

.&/"'1*  $" $- .*"#$9#* ($ )+$+ ($ )#*+ 0 ;34 2*->#'.)+($%)&)"#>) ($c"#$%&'()( &$,$&$".')-+$ 2&$+$"#)"$" $+)+*2$&).'*"$+

 es el acrónimo de Crear, Obtener, Actualizar y Borrar (Create, Retrieve, Update y Delete en inglés). Es usado para referirse a las funciones básicas en bases de datos o la capa de persistencia en un sistema de software.

Modificar y borrar presentan: Las políticas de garantía de Integridad referencial, se presentan en esas operaciones son las siguientes.  A La operación completa arreglar integridad referencial para borrar.    Se debe sustituir por otro valor primero lo anulo para que cambie referencia.  Si se quiere borrar una tabla de departamento se debe borrar a todos los empleados que hagan parte de ese departamento. 

")&)"+)..'/"$" )+$+($)#*+  Una transacción en un Sistema de Gestión de Bases de Datos (SGBD), es un conjunto de órdenes que se ejecutan formando una unidad de trabajo, es decir, en forma indivisible o atómica. Una transacción de base de datos, por la definición, debe ser atómica, constante, aislada y durable. Estas características de las transacciones de base de datos son referidas a menudo por las siglas ÁCIDO. Además Las transacciones proporcionan un asunto ³todo o nada´ que indica que las unidades del trabajo realizadas en una base de datos deben ser terminadas en su totalidad o tomar a ningún efecto cualesqui era.

&3$ ) c  En bases de datos se denomina ACID a un conjunto de características necesarias para que una serie de instrucciones puedan ser consideradas como una transacción.

En concreto ACID es un acrónimo de Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad en español.

Se dice que toda "Base de Datos" debe cumplir con la prueba del acido, denominada "ACID" ( tomicity, *"+'+#$".0c+*-)#'*"3&) '-'#0 ). A

A

A

A

#*1*.'#0 La atomicidad de una transacción garantiza que todas sus acciones sean realizadas o ninguna sea ejecutada , en el caso de la transacción bancaria o se ejecuta tanto el "deposito -deducción" o ninguna acción será realizada.

*"+'+#$".0 Muy similar a la "Atomicidad", la consistencia garantiza que las reglas que hayan sido declaradas para una transacción sean cumplidas, regresando a la transacción bancaria, supongamos que cada vez que se realice una transferencia inter-bancaria de $100,000 sea necesario notif icar a la sucursal del tarjeta-habiente, si no es posible comunicarse y actualizar la información en la sucursal del cliente, toda la transacción será abortada. c+*-)#'*" : Esto garantiza que las transacciones que se estén realizando en el sistema sean invisibles a todos los usuarios hasta que estas hayan sido declaradas finales, en la transacción bancaria es posible que el sistema este programado para intentar en 5 o 10 oc asiones más antes de abortar una transacción por completo, a pesar que este ultimo paso no ha sido finalizado ya existen otras modificaciones en el sistema, este aislamiento "Isolation" garantiza que los usuarios del sistema no observen estos cambios intermedios hasta que sea finalizada la última acción de actualización. 3&) '-'#0 La durabilidad de una transacción garantiza que al instante en el que se finaliza la transacción esta perdure a pesar de otras consecuencias, esto es, si el disco duro falla, e l sistema aún será capaz de recordar todas la transacciones que han sido realizadas en el sistema.  

"  $+#&)"+)..'*")- Un SGBD se dice transaccional, si es capaz de mantener la integridad de los datos, haciendo que estas transacciones no puedan fin alizar en un estado intermedio. Cuando por alguna causa el sistema debe cancelar la transacción, empieza a deshacer las órdenes ejecutadas hasta dejar la base de datos en su estado inicial (llamado punto de integridad), como si la orden de la transacción nunca se hubiese realizado. Para esto, el lenguaje de consulta de datos SQL (Structured Query Language), provee los mecanismos para especificar que un conjunto de acciones deben constituir una transacción. BEGIN TRAN: Especifica que va a empezar una transacción.

COMMIT TRAN: Le indica al motor que puede considerar la transacción completada con éxito. ROLLBACK TRAN: Indica que se ha alcanzado un fallo y que debe restablecer la base al punto de integridad. "$7$12-*($#&)"+)..'/" 

Un ejemplo habitual de trans acción es el traspaso de una cantidad de dinero entre cuentas bancarias. Normalmente se realiza mediante dos operaciones distintas, una en la que se decremento el saldo de la cuenta origen y otra en la que incrementamos el saldo de la cuenta destino. Para garantizar la consistencia del sistema (es decir, para que no aparezca o desaparezca dinero), las dos operaciones deben ser atómicas, es decir, el sistema debe garantizar que, bajo cualquier circunstancia (incluso una caída del sistema), el resultado final es que, o bien se han realizado las dos operaciones, o bien no se ha realizado ninguna. 

)+$92&$+'*"$+ *11'#0*-- ).B ÷ c       finalizara  ÷: deshacerla. Una sentencia COMMIT en SQL finaliza una transacción de base de datos dentro de un sistema gestor de base de datos relacional y pone visibles todos los cambios a otros usuarios. Una sentencia ROLLBACK se puede emitir, la cual deshace todo el trabajo realizado desde que se emitió BEGIN WORK.

Si queremos validar los cambios en la base de datos, completaremos la transacción con el uso de la sentencia COMMIT. Si ejecutamos ROLLBACK justo después de hacer el COMMIT, los cambios realizados sobre la base de datos permanecerán, debid o a que anteriormente se validó la transacción.

*" $- ,'" ($ .*12&$"($& -) '12*&#)".') ($ -) c"#$%&'()( ($ )#*+ 0  )+)(*+ $" -) $92-'.).'/" ()() &$)-'.$ -*+ +'%3'$"#$+ $7$&.'.'*+($c"#$%&'()(&$,$&$".')-)2)&#'&($-$+#)(*'"'.')-($ -) +'%3'$"#$  )+$ ($ ()#*+ 3#'-'.$ $- 14#*(* &*2)%)& 6 )+.)()8  BOR(UNIVERSIDAD.NUM=1)

LO QUE ESTA EN AMARILLO SE DEBE ELIMINAR

@     

@ 

    

    @    

        

  

      @    @    

      @           

         

@     

 MOD(UNIVERSIDAD.NUM=2,10)

SE DEBE DE MODIFICAR EL 2 A 10

  

  

  

   

@ 

@ 

 

    @    

@    

      @      

 MOD(UNIVERSIDAD.NUM=3,20)

SE CAMBIA DE 3 A 20

  

  

  

@ 

 

    @    

@    

      @       



   

@ 

 BOR(UNIVERSIDAD.NUM=4)

SE BEDE BORRAR LA UNIVERSIDAD 4 Y ES MAS FACIL YA QUE NO TIENE REFERENCIA

  

@    

  

  

   

@ 

@ 

 

    @    

      @      

 BOR(DEPARTAMENTO.COD=DLSI,DEPARTAMENTO.U=20) SE DEBE ELIMINAR

  

@   

  

  

@ 

 

    @  

      @      

   

@ 

 BOR(PROFESOR.DNI=22444444)

  

@   

  

  

   

@ 

@ 

 

    @  

      @   

FINALMENTE LA BASE DE DATOS QUE DARA ASI:

 

@   

  

 @ 

 

    @  

      @   

  

 

@

c cc

â $%&$%'%() '*)+$&)('+)+'$*,%)%,%-.,-.) $%â & â /$0 0,+$&) +â 0$12#3 â %4(&)5+$&+,* $&$.0($cc- )%" â )(,3%)+$&) '+'* ,3 '.).6.,6.) $%â â %4(&)5+$&+,* $&$.0($cc- )%"



? ? ? ? ? ? ?

? ? ?