Está en la página 1de 22

Implementacióó n de la

integridad de datós
Base de Datos II
Restricciónes de integridad
Con el fin de asegurar la integridad de los datos,
SQL proporciona una serie de restricciones de
integridad, reglas que se aplican a la base de datos
para restringir los valores que se pueden colocar
en esas tablas.
Restricciónes de integridad
Restricciónes NOT NULL
• Un valor nulo significa que un valor no está
definido o no se conoce.
• Esto no es lo mismo que cero, en blanco, una
cadena vacía o un valor predeterminado.
• Cada columna tiene una característica de nulo
que indica si la columna acepta valores nulos.
• Se puede anular la característica de nulo
predeterminada utilizando una restricción NOT
NULL, que indica que la columna no acepta
valores nulos.
Restricciónes NOT NULL
La restricción NOT NULL sólo puede utilizarse como una
restricción de columna.

<nombre de columna> <tipo de datos> NOT NULL

Ejemplo:

CREATE TABLE artistas_disco_compacto


(id_artista INT NOT NULL,
nombre_artista VARCHAR(60) NOT NULL,
lugar_de_nacimiento varchar(60) );
Restricciónes UNIQUE
La restricción UNIQUE permite exigir que una columna o
conjunto de columnas contengan valores únicos.
Restricciónes UNIQUE
• Para crear una restricción de columna:
<nombre de columna> <tipo de datos> UNIQUE
Ejemplo:
CREATE TABLE cd_inventario (nombre_artista VARCHAR(40),
nombre_cd VARCHAR(60) UNIQUE, derechosdeautor INT );

• Para crear una restricción de tabla:


[ CONSTRAINT <nombre de la restricción> ]
UNIQUE ( <nombre de columna> [{, <nombre de columna>}… ] )
Ejemplo:
CREATE TABLE cd_inventario (nombre_artista VARCHAR(40),
nombre_cd VARCHAR(60), derechosdeautor INT, CONSTRAINT
un_artista_cd UNIQUE (nombre_artista, nombre_cd ) );
Restricciónes PRIMARY KEY
• La clave primaria (PRIMARY KEY) surge de una clave
candidato.
• Una clave de candidato es un conjunto de una o más
columnas que identifican de forma exclusiva a cada fila.
• Cada tabla debe contener una clave primaria.
• Para definir una clave primaria, se debe utilizar una
restricción de PRIMARY KEY para especificar qué
columna o columnas servirán como la clave primaria de
una tabla.
Restricciónes PRIMARY KEY
• Para crear una restricción de columna:
<nombre de columna> <tipo de datos> PRIMARY KEY
Ejemplo:
CREATE TABLE cd_artistas (id_artista INT PRIMARY KEY,
nombre_artista VARCHAR(60), id_agencia INT);

• Para crear una restricción de tabla:


[CONSTRAINT <nombre de la restricción> ]
PRIMARY KEY (<nombre de columna> [ {, <nombre de columna> }… ])
• Ejemplo:
CREATE TABLE cd_artistaS (id_artista INT, nombre_artista
VARCHAR(60), id_agencia INT, CONSTRAINT pk_id_artista PRIMARY
KEY (ID_ARTISTA, NOMBRE_ARTISTA ) );
Restricciónes FOREIGN KEY
La restricción FOREIGN KEY se ocupa de cómo los datos en
una tabla hacen referencia a los datos en otra tabla, que es
la razón por la que se conoce como una estricción
referencial (en relación con otra tabla).
Restricciónes FOREIGN KEY
• Crear una restricción de columna
<nombre de columna> <tipo de datos> REFERENCES
<tabla referenciada> [( <columnas referenciadas> )]

Ejemplo:
CREATE TABLE titulos_cd (id_titulo_cd INT,
titulo_cd VARCHAR(60), id_editor INT REFERENCES
editores_cd );
Restricciónes FOREIGN KEY
• Crear una restricción de tabla
[CONSTRAINT <nombre de la restricción>]
FOREIGN KEY (<columna referenciada> [{, <columna
referenciada>}...]) REFERENCES <tabla referida>
[(columnas de referencia>)]

Ejemplo:
CREATE TABLE titulos_cd (id_titulo_cd INT,
titulo_cd VARCHAR(60), id_editor INT,
CONSTRAINT fk_id_editor FOREIGN KEY (id_editor)
REFERENCES editores_cd (id_editor) );
CLAUSULA MATCH
Su propósito es permitirle decidir cómo tratar los valores nulos
en las columnas de clave foránea con respecto a los valores que
permiten que se inserten en las columnas de referencia.

MATCH FULL

• Todas las columnas de referencia deben tener un valor nulo o ninguna de esas
columnas puede tener un valor nulo.

MATCH PARTIAL

• una o más columnas de referencia pueden tener valores nulos siempre y cuando
el resto de las columnas de referencia tengan valores que igualen a las columnas
de referencia correspondientes

MATCH SIMPLE

• Una o más columnas de referencia tienen valores nulos, entonces el resto de las
columnas de referencia pueden tener valores que no están contenidos en las
columnas de referencia correspondientes.
MATCH SIMPLE
MATCH PARTIAL
MATCH FULL
CLAUÚ SULA <accióó n referencial
desencadenada>
Permite definir qué tipos de acciones se deben tomar
cuando se intenta actualizar o eliminar datos desde
columnas referenciadas.

Se puede definir una cláusula ON UPDATE, y una cláusula


ON DELETE, o ambas, y se pueden definir en cualquier
orden. Para cada una de estas cláusulas se puede escoger
una de cinco acciones referenciales.
Acciónes referenciales
CASCADE

• Los datos se actualizan o eliminan en las columnas referenciadas y de referencia.

SET NULL

• Los datos se actualizan o eliminan en las columnas referenciadas, y en las columnas de


referencia se establecen como nulos.

SET DEFAULT

• Los datos se actualizan o eliminan en las columnas referenciadas, y en las columnas de


referencia se establecen los valores predeterminados.

RESTRICT

• Los datos en las columnas de referencia nunca pueden violar la restricción FOREIGN KEY.

NO ACTION

• Las violaciones de datos pueden ocurrir temporalmente bajo ciertas condiciones, pero los
datos en la clave foránea nunca se violan en su estado final
Restriccióó n CHECK
Una restricción CHECK permite especificar qué valores se
pueden incluir en una columna.
Se puede definir un rango de valores (por ejemplo, entre
10 y 100), una lista de valores (por ejemplo, blues, jazz,
pop, country), o una serie de otras condiciones que
restringen exactamente qué valores se permiten en una
columna.
Restriccióó n CHECK
• Restricción CHECK de columna
<nombre de columna> <tipo de datos> CHECK ( <condición de
búsqueda> )
Ejemplo:
CREATE TABLE titulos_cd ( id_disco_compacto INT, titulo_cd
VARCHAR(60) NOT NULL, en_existencia INT NOT NULL CHECK
( en_existencia > 0 AND en_existencia < 30 ) );

Restricción CHECK de tabla


[ CONSTRAINT <nombre de restricción> ] CHECK ( <condición de
búsqueda> )
Ejemplo:
CREATE TABLE titulos_cd ( id_disco_compacto INT, titulo_cd
VARCHAR(60) NOT NULL, en_existencia INT NOT NULl, CONSTRAINT
ck_en_existencia CHECK (en_existencia > 0 AND en_existencia < 30 ) );
Restriccióó n CHECK
Otra manera en la que se puede utilizar una restricción CHECK es
explícitamente listar los valores que se pueden introducir en la
columna.

Ejemplo:
CREATE TABLE titulos_cd ( id_disco_compacto INT,
titulo_cd VARCHAR(60) NOT NULL, era CHAR(5),
CONSTRAINT ck_era check ( era IN ( '1940s', '1950s',
'1960s', '1970s', '1980s', '1990s', '2000s' ) ) );
Restriccióó n CHECK
Usando el operador BETWEEN

• Ejemplo:
CREATE TABLE titulos_cd (id_disco_compacto INT, titulo_cd
VARCHAR(60) NOT NULL, en_existencia INT NOT NULL,
constraint ck_en_existencia CHECK ( ( en_existencia BETWEEN 0
AND 30 ) OR ( en_existencia BETWEEN 49 AND 60 ) ) )

También podría gustarte