El documento describe los diferentes tipos de restricciones que se pueden aplicar en una base de datos para mantener la integridad de los datos, incluyendo restricciones de entidad, dominio, referenciales y las definidas por el usuario. Explica cómo se usan restricciones como NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY y CHECK para asegurar que los datos sean válidos y consistentes.
1. 3. Restricciones de las Bases de
Datos
3.1 Tipos de restricciones de integridad.
3.2 Uso de restricciones.
3.3 Caso de pruebas para restricciones.
2. Definición
Ayudan a mantener la
consistencia
semántica en la BD
Aseguran que los
usuarios autorizados
no provoquen la
pérdida de
consistencia de datos.
Elaborado por :Luz Alondra Katt Morales
3. Definición
Entidad
Dominio
Referencial
Definida por el usuario
Elaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
4. Integridad de Entidad
La integridad de entidad define una fila como entidad única para una tabla
determinada. La integridad de entidad exige la integridad de las columnas de
los identificadores o la clave principal de una tabla, mediante índices y
restricciones UNIQUE, o restricciones PRIMARY KEY.
En esta no está permitido que algún componente de la clave primaria acepte
valores nulos.
Las razones de esta regla son:
Las tuplas en las relaciones base representan entidades en la realidad.
Las entidades en la realidad son identificables por definición.
Sus contrapartes en la base de datos también deben ser identificables.
Los valores de la clave primaria sirven como identificadores en la base de datos.
Los valores de clave primaria no pueden ser nulos.
Elaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
http://juanin.bligoo.com/content/view/606209/Integridad-en-las-Bases-de-Datos.html
5. Integridad de Entidad - unicidad
La restricción UNIQUE asegura que todos los valores en una columna sean
distintos.
Por ejemplo, en la siguiente instrucción,
CREATE TABLE Customer
(SID integer Unique,
Last_Name varchar (30),
First_Name varchar(30));
D
La columna “SID” no puede incluir valores duplicados, mientras dicha
restricción no se aplica para columnas “Last_Name” y “First_Name”.
Elaborado por :Luz Alondra Katt Morales http://sql.1keydata.com/es/sql-constraint.php
7. Integridad de Dominio
La integridad de dominio viene dada por la validez de las entradas para una
columna determinada. Puede exigir la integridad de dominio para restringir el
tipo mediante tipos de datos, el formato mediante reglas y restricciones
CHECK, o el intervalo de valores posibles mediante restricciones FOREIGN
KEY, restricciones CHECK, definiciones DEFAULT, definiciones NOT NULL y
reglas.
Dato Longitud Descripción
Bit 1 byte Valores true/false
Byte 1 byte Entero entre 0 y
255
Counter 4 bytes Campo ID (long)
Currency 8 bytes Numérico
Datetime 8 bytes Fecha
Text 1 byte/caracter De 0 a 255
caracteres
Elaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
8. Integridad de Dominio – No nulo
NOT NULL
En forma predeterminada, una columna puede ser NULL. Si no desea permitir
un valor NULL en una columna, querrá colocar una restricción en esta columna
especificando que NULL no es ahora un valor permitido.
Por ejemplo, en la siguiente instrucción,
CREATE TABLE Customer
(SID integer NOT NULL,
Last_Name varchar (30) NOT NULL,
First_Name varchar(30));
Las columnas “SID” y “Last_Name” no incluyen NULL, mientras que
“First_Name” puede incluir NULL.
Elaborado por :Luz Alondra Katt Morales
http://sql.1keydata.com/es/sql-constraint.php
9. Integridad de Dominio – Check
La restricción CHECK asegura que todos los valores en una columna cumplan
ciertas condiciones.
Por ejemplo, en la siguiente instrucción,
CREATE TABLE Customer
(SID integer CHECK (SID > 0),
Last_Name varchar (30),
First_Name varchar(30));
La columna “SID” sólo debe incluir enteros mayores a 0.
Elaborado por :Luz Alondra Katt Morales
http://sql.1keydata.com/es/sql-constraint.php
11. Integridad Referencial
protege las relaciones definidas entre las tablas cuando se crean o se eliminan
filas. La integridad referencial garantiza que los valores de clave sean
coherentes en las distintas tablas. Para conseguir esa coherencia, es preciso
que no haya referencias a valores inexistentes y que, si cambia el valor de una
clave, todas las referencias a ella se cambien en consecuencia en toda la base
de datos.
No se podrá introducir un valor en la tabla
relacionada si antes no ha sido introducida en la
tabla principal.
No se puede eliminar un registro de una tabla
principal si existen registros coincidentes en la
tabla relacionada.
No se puede cambiar un valor de la clave
primaria en la tabla principal si el registro tiene
registros relacionados.
Elaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
12. Integridad Referencial
Por ejemplo, en las tablas Sales.SalesOrderDetail y Production.Product de la
base de datos AdventureWorks2008R2, la integridad referencial se basa en la
relación entre la clave externa (ProductID) de la tabla Sales.SalesOrderDetail y
la clave principal (ProductID) de la tabla Production.Product. Esta relación
garantiza que un pedido de ventas no pueda nunca hacer referencia a un
producto que no existe en la tabla Production.Product.
Elaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
13. Integridad definida por el usuario
La integridad definida por el usuario permite definir reglas de empresa específicas
que no pertenecen a ninguna otra categoría de integridad. Todas las categorías
de integridad admiten la integridad definida por el usuario. Esto incluye todas las
restricciones de nivel de columna y nivel de tabla en CREATE TABLE,
procedimientos almacenados y desencadenadores.
Elaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
14. Constraints
CREATE TABLE parent
( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB;
CREATE TABLE child
( id INT, parent_id INT, INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE )
ENGINE=INNODB;
ALTER TABLE yourtablename ADD [CONSTRAINT symbol] FOREIGN
KEY [id] (index_col_name, ...) REFERENCES tbl_name
(index_col_name, ...) [ON DELETE {RESTRICT | CASCADE | SET
NULL | NO ACTION}] [ON UPDATE {RESTRICT | CASCADE | SET
NULL | NO ACTION}]
Elaborado por :Luz Alondra Katt Morales http://dev.mysql.com/doc/refman/5.0/es/innodb-foreign-
key-constraints.html
15. Constraints – NOT NULL
Name Null Type
CATEGORIAID NOT NULL CHAR (18)
UBICACIÓN CHAR (18)
NOMBRECATEGORÍA CHAR(18)
Modificamos la restricción de la tabla.
ALTER TABLE CATEGORIA
MODIFY(UBICACIÓN NOT NULL);
CATEGORIAID NOT NULL CHAR(18)
UBICACIÓN NOT NULL CHAR(18)
NOMBRECATEGORÍA CHAR(18)
Elaborado por :Luz Alondra Katt Morales
http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints
16. Constraints
Insertamos valores a nuestra tabla.
INSERT INTO CATEGORIAVALUES ('AL12', ,'ALIMENTOS');
ERROR:Error starting at line 1 in command:
INSERT INTO CATEGORIAVALUES ('AL12',,'ALIMENTOS')
Error at Command Line:2
Column:15Error report:SQL
Error: ORA-00936: falta una expresión00936. 00000 - "missing
expression"*Cause:*Action:
Elaborado por :Luz Alondra Katt Morales
http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints
17. Constraints - UNIQUE
Name Null Type
RUCDNICTE NOT NULL CHAR(18)
DIRECCION CHAR(18)
EMAIL CHAR(18)
TELEFONO1 CHAR(18)
RAZONSOCNOMBRE CHAR(18)
TELEFONO2 CHAR(18)
En este caso realizamos dos restricciones UNIQUE a los campos de Email
yRazonSocial.
ALTER TABLE CLIENTEMODIFY (CONSTRAINT UNMAIL UNIQUE(EMAIL))
Insertamos algunas filas a nuestra tabla.
INSERT INTO CLIENTEVALUES('43918908','LOSALIZOS
212','arzame@yahoo.es','8762412','ArmandoZamora','976457238');
1 rows inserted
Elaborado por :Luz Alondra Katt Morales
http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints
18. Constraints - UNIQUE
INSERT INTO CLIENTEVALUES
('439874232','EL SOL 12', 'arzame@yahoo.es', '9878712', 'ArmandoSanchez',
'976897638');
ERROR:Error starting at line 1 in command:INSERT INTO
CLIENTEVALUES('439874232','EL SOL
#212','arzame@yahoo.es','9878712','ArmandoSanchez','976897638')
Error report:SQL Error: ORA-00001: restricción única (SYSTEM.XPKCLIENTE)
violada00001. 00000 - "unique constraint (%s.%s) violated"*Cause: An
UPDATE or INSERT statement attempted to insert a duplicatekey.
For Trusted Oracle configured in DBMS MAC mode, you may seethis message if
a duplicate entry exists at a different level.*Action: Either remove the unique
restriction or do not insert the key
Elaborado por :Luz Alondra Katt Morales
http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints