Integrity


Identity Integrity

It allows distinguishing a set of data from a another set of data. Each table in a database must have a primary key to distinguish each row. Each row in the table must have a unique identity, therefore, two or more rows cannot have the same primary key value. Identity Integrity is about the values of the Primary Key.
Permite distinguir un conjunto de datos de otro. Cada tabla en una base de datos debe tener una llave primaria para distinguir cada renglón en ella. Cada renglón en la tabla debe tener una identidad única, por lo que dos o más renglones no pueden tener el mismo valor en la llave primaria. La Integridad de Identidad es acerca de los valores de la llave primaria.

IdentityIntegrity

Tip
To prevent an integrity identity violation, NULL values are not allowed to any attribute that forms part of the primary key.
Para evitar una violación de la integridad de identidad, la llave primaria en una tabla NO PUEDE tomar el valor de NULL

Referential Integrity

It states that every non-null value that exists in a foreign key attribute must also exist in the relation for which it is the primary key. NULL values are not allowed to any attribute that is a foreign key. Referential Integrity is about the values of a Foreign Key (and therefore of the value of a Primary Key in another table).
Establece que por cada valor diferente de NULL que exista en una columna marcada como llave extranjera debe existir una tabla para la cual ésta es la llave primaria. Los valores nulos no se permiten en ningún atributo que sea una llave extranjera. La Integridad de Referencia es acerca de los valores de una llave extranjera (y por lo tanto del valor de una llave primaria en otra tabla).

Tip
Referential integrity brings up special problems regarding the updating or deleting of rows in a table. For instance, if the value of emp_id is modified in the employee table, all the references to emp_id will be invalid. There are three possible strategies:
  • Restrict
  • Cascade
  • Set to NULL

La integridad de referencia introduce algunos problemas cuando los renglones de una tabla se modifican o se borran. Por ejemplo, si se cambia el valor de emp_id en el tabla empleado, invalidando las referencias al valor previo de emp_id. Existen tres estrategias para resolver este problema:
  • Restrict
  • Cascade
  • Set to NULL

Tip
Referential integrity concerns that use of foreign keys. In the emp_skill table, emp_id is a foreign key that makes reference to the employee table. This means that in order to insert a row in the emp_skill table a valid value of emp_id must be found in the employee table, and a valid value of skill_id must be found in the skill table.
La integridad de referencia controla el uso de las llaves extranjeras. Por ejemplo en la tabla emp_skill, emp_id es una llave extranjera que hace referencia a la tabla empleado. Esto quiere decir que para poder agregar un renglón a la tabla emp_skill se requiere un valor emp_id que se encuentre en la tabla empleado y un valor de skill_id que se encuentre en la tabla skill.

Tip
Referential integrity connects the values in a column to the values in another column. The name of the columns may be different but it is recommended to use the same name in both tables. The important thing to remember it that each values in the foreign key must make reference to an existing value in the primary key.
La integridad de referencia conecta una columna de una tabla con una columna en otra tabla. El nombre de las columnas puede ser diferente pero se recomienda que sea el mismo en ambas tablas. Lo importante es que cada valor en la llave extranjera debe hacer referencia a un valor existente en la llave primaria.

Restrict

With this strategy, we ban any alterations to a primary key if there are foreign references to it. Thus, if we wanted to remove emp_id 100 from the employee table, or alter the value of emp_id from 100 to 200, the database system will not allow it. It is possible to delete or change emp_id values for those employees who did not have an entry in the skill table. If RESTRICT is placed on deletions, then a row in a referenced table may not be removed if there are any rows that reference it. If RESTRICT is placed on updates, then a row in a referenced table may not be updated if there are any rows that reference it. If no restriction is indicated, Restrict is the default.
Con esta estrategia, se prohíbe cualquier cambio a la llave primaria si ésta tiene referencias. De esta forma, si se quisiera remover el empleado con emp_id de 100, o modificar el emp_id de 100 a 200, el sistema de base de datos no lo permitirá. Solo es posible borrar o cambiar los valores de emp_id para aquellos empleados que no tienen información de la tabla emp_skill. Si el comando RESTRICT es usado para borrar, entonces cada renglón referenciado en la tabla no podrá ser eliminado si hay renglones haciendo referencia a él. Si RESTRICT es usado para modificar, entonces cada renglón en una tabla con referencias no podrá ser modificado si hay otros renglones haciendo referencia a él. Si no se establece ninguna restricción, Resctrict el valor por defecto.

Restrict

Cascade Update

If there is change in the value of the primary key, this effect will be automatically propagated in all the rows of the tables that make reference to this value. For instance, if the emp_id value for Steven King is modified from 100 to 200, then all the rows in the emp_skill table will be modified so that they still make reference to Steven King.
Si hay un cambio en el valor de llave primaria el efecto se propagará automáticamente en todos los renglones de las tablas que hagan referencia a este valor. Por ejemplo, si se modifica el emp_id de Steven King de 100 a 200, todos los renglones en la tabla emp_skill se modificarán para ajustarse al cambio en la llave primaria principal.

CascadeUpdate

Cascade Delete

It deletes child rows when you delete a parent row. For instance, it the employee with emp_id 103 is deleted, the database system will automatically delete all his skills from the emp_skill table when CASCADE DELETE is active. This option will be manage with care as it is possible to delete great amounts of data.
Se borrar todos los renglones hijos cuando se borrar el renglón padre. Por ejemplo si se decide eliminar el empleado con emp_id 103, el sistema de base de datos automáticamente eliminar todas las habilidades de este empleado de la tabla emp_skill cuando al opción de CASCADE DELETE este activa. Esta opción debe manejarse con cuidado, ya que es posible fácilmente borrar gran cantidad de datos.

CascadeDelete

SET TO NULL

In this case, this option allows the update or deletion to take place in the original table, but in order to maintain referential integrity, all corresponding foreign key values are set to null. For instance, if the Accounting department disappears, the value of dept_id in the employee table is set to NULL. For what department these employees work now? In order to keep Identity Integrity and Reference Integrity, SET TO NULL is not an option and it must not be used.
En este caso, se permite modificar o borrar en la tabla original, pero a fin de mantener la integridad de referencia, se fijan todos los valores respectivos de las llaves extranjeras a NULL. Por ejemplo si el departamento de Contabilidad desaparece, el valor de dept_id en la tabla empleado se fija a NULL. Para que departamento trabajan estos empleados ahora? A fin de mantener la identidad de integridad y la identidad de referencia, SET TO NULL no es una opción y no se debe de usar.

SetToNull

Problem 1
Indicate whether this is true or false: Suppose that the option SET TO NULL is being used between the employee table and the emp_skill table in the motorola database. Suppose now that Steven King is deleted from the table, therefore the emp_id in the emp_skill table will be set to NULL. However, emp_id is part of the primary key in the emp_skill table and set it to NULL will violate the identity integrity.
Diga si es cierto o falso: Suponga que se está usando la opción de fijar a NULL entre las tablas empleado y emp_skill en la base de datos de motorola . Suponga ahora que se borra Steven King de la tabla, por lo que el valor de emp_id en la tabla emp_skill se fijará a NULL. Sin embargo, emp_id es parte de la llave primaria en la tabla emp_skill y fijarla a NULL violará la integridad de identidad.

Tip
Avoid as much as possible the use of NULL when defining attributes in a table. Never allow NULL values in primary nor foreign keys.
Evite en lo posible el uso de NULL cuando defina atributos en una tabla. Nunca permita valores NULL en una llave primaria ni una llave extranjera.

Tip
By default Microsoft SQL Server, Oracle and MySQL, any column with references has the Restrict rule to keep the integrity in the database. Microsoft SQL Server, Oracle and MySQL have the option to setup Cascade Delete; on the other hand Set to NULL and Cascade Update are not implemented by any database software.
Por defecto Microsoft SQL Server, Oracle y MySQL, cualquier columna con referencia tiene la regla de Restrict para mantener la integridad en la base de datos. Microsoft SQL Server, Oracle y MySQL tienen la opción de configurar Cascade Delete; por otro lado Set to NULL y Cascade Update no son implementados por ningún software de base de datos.

Tip
Identity Integrity requires that:
  • Primary key values do not repeat (they are unique)
  • Primary key values are not NULL (they always have a value)
  • Primary key values are not editable (their values are constant)

  • Los valores de las llaves primaria no se repiten (Los valores son únicos)
  • Los valores de las llaves primaria no son NULL (Siempre tienen un valor las llaves)
  • Los valores de las llaves primaria no se editan (Los valores permanecen constantes)

Tip
Referencial Integrity requires that:
  • Foreign key values are not NULL (they always have a value)
  • Foreign key values are not editable (their values are constant)
  • Each foreign key value must be a primary key value in the respective table

  • Los valores de las llaves extranjeras no son NULL (Siempre tienen un valor las llaves)
  • Los valores de las llaves extranjeras no se editan (Los valores permanecen constantes)
  • Cada valor de la llave extranjera debe ser un valor de llave primaria en la tabla respectiva

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home