Sunteți pe pagina 1din 6

DDL

– Restricciones de Integridad (Constraints)


Son herramientas que provee el manejador de la base datos para proteger la integridad y la consistencia
de los datos que manejan las tablas. Estas herramientas se aplican a nivel del esquema de la base de
datos es se basan un conjunto de reglas que se aplican en diferentes niveles.

Las restricciones de integridad las podemos agrupar en cuatro grupos:

a) Integridad del dominio


b) Entidad
c) Referencial
d) Del usuario

Cuando aplicamos estas reglas a nivel del esquema de la base de datos, es importante tener en cuenta el
nombre lógico que le ponemos, esto los ayuda a entender los errores cuando se violenta alguna de
dichas reglas.

Integridad de la Entidad

Son reglas de integridad que aplican a la totalidad de los registros de la tabla, como un conjunto. Por
ejemplo: Si validamos que el valor de un campo no se repita, estamos diciendo que solo un registro
puede tener un determinado valor en ese campo. Como reglas de este nivel tenemos el PRIMARY KEY y
el UNIQUE INDEX.

Primary Key

Permite definir las columnas de una tabla que son seleccionadas como clave o parte de la clave. La clave
sirve para indicar el identificador único de cada registro, no puede haber dos registros con la misma
clave. Importante tener en cuenta que las columnas seleccionadas como claves no deben permitir nulos.

Ejemplos:

a) Indicando la restricción en el momento que la tabla se define. En este caso el nombre de esta
restricción lo genera la base de datos. Esta es la forma más común.

Create table cliente


(
IdCliente int not null primary key,
Nombrevar char(20),
Tipo int not null
)

b) Indicando la restricción en el momento que la tabla se define, pero esta vez indicando el nombre
que necesitamos que esa restricción tenga. El nombre de una restricción de tipo PRIMARY KEY por lo
regular comienza con “PK_”, seguida del nombre de la tabla: “PK_Cliente”.

INTRODUCCION BASES DE DATOS – Ing. Carlos Caraballo Page 54



Createtable cliente
(
IdCliente int not null constraint pk_cliente primary key,
Nombre varchar(20),
Tipo int not null
)

c) Si la clave está formada por más de una columna entonces, se debe expresar al final de los campos.

Create table cliente


(
IdCliente int not null,
Nombre varchar(20),
Tipo int not null,
Constraint pk_cliente primary key(idCliente,tipo)
)

d) Agregando la restricción mediante una alteración de la tabla que ya fue previamente creada.

Alter table cliente
Add constraint pk_cliente primary key(idcliente)

Eliminar la restricción PRIMARY KEY

Para eliminar esta restricción, aplicamos un ALTER de la tabla, por lo que es preciso saber el nombre de
la restricción:

Alter table cliente drop constraint pk_cliente


Unique Index

Los índices son estructuras que están mayormente destinadas a incrementar la velocidad de las
consultas, pero también pueden ser utilizadas como herramienta de integridad.

Un índice único se puede utilizar para marcar una clave candidata, eso es cualquier otra clave que
también pudiera ser utilizado como identificador de los registros. Una tabla sólo puede tener una clave
primaria.

Pero puede tener muchos otros índices únicos.

El tema de los índices será abordado con más detalles más adelante.

Ejemplos:

En este caso, tenemos que el cliente tiene su clave, pero también queremos que existan dos clientes con
la misma cédula. Veamos tres formas:

INTRODUCCION BASES DE DATOS – Ing. Carlos Caraballo Page 55



a) Sin nombre de la restricción durante la definición de la tabla:


Create table cliente


(
IdCliente int not null primary key,
Nombre varchar(20),
Tipo int not null,
Cedula varchar(20) unique
)

b) Con nombre durante la definición:

Create table cliente


(
IdCliente int not null primary key,
Nombrevar char(20),
Tipo int not null,
Cedula varchar(20) constraint idx1_cliente unique
)


c) Agregando la restricción a una tabla ya creada.

Create unique index idx_cliente on cliente(cedula)

Integridad de Dominio

Son reglas orientadas a validar las entradas de una determinada columna. Estas reglas validan el tipo y
el valor en sí.

Las reglas que podemos aplicar en este nivel son:

a) El tipo de datos o dominio: entero, numérico, fecha, etc.


Una columna de tipo numérico no permite valores alfanuméricos, por ejemplo.

b) La existencia de valor: NOT NULL.
Es obligatorio poner un valor en esa columna.

c) Valor defecto: DEFAULT.
De no indicarse un valor se asume un valor indicado con esta regla.

INTRODUCCION BASES DE DATOS – Ing. Carlos Caraballo Page 56



d) Valida que el dato cumpla con alguna expresión lógica: CHECK.
Es una regla que definida por el usuario, por ejemplo: que el campo sueldo sea mayor que 100 (
sueldo > 100).

Ejemplos:

a) Restricciones aplicadas durante la creación de la tabla.


Créate table empleado
(
idEmpleado int not null primary key,
Nombre varchar(60),
Sexo char(1) check(sexo in('F','M')),
Sueldo decimal(13,2) check(sueldo>100),
FechaIngreso date default GetDate()
)
El campo “IdEmpleado” solo permite valores de tipo entero y no permite nulos.
El campo “Sexo” permite un solo carácter alfanumérico que debe ser una “M” o una “F”.
El campo “sueldo” solo permite valores numéricos mayores que 100.
El campo “FechaInreso” solo permite una valor fecha, y si no se indica nada entonces asume la
fecha del día (GETDATE es una función de SQL SERVER que retorna la fecha actual).


b) Restricciones aplicadas luego de crear la tabla.

Alter table empleado


Add constraint ck_sueldo check(sueldo>100)
Agrega una restricción tipo CHECK a la tabla empleado.

Cambiar la columna “sexo” para que no permita nulos:

Alter table empleado alter column sexo char(1) not null


Altera la tabla empleado para que no permita nulo en el campo “sexo”. Aplica a SQL SERVER.

ALTER TABLE empleado


MODIFY COLUMN sexo char(1) NOT NULL
Altera la tabla empleado para que no permita nulo en el campo “sexo”. Aplica a MySQL.


ALTER TABLE empleado
MODIFY COLUMN sexo char(1) NOT NULL
Altera la tabla empleado para que no permita nulo en el campo “sexo”. Aplica a ORACLE.


INTRODUCCION BASES DE DATOS – Ing. Carlos Caraballo Page 57





Integridad Referencial

La integridad referencial valida la relación entre dos tablas, manteniendo la consistencia de las llaves
foráneas.

Por ejemplo: Si un cliente pertenece a un país, no es posible que el país al que ese cliente pertenece no
exista o pueda ser borrado.

La regla que mantiene esta integridad se llama “FOREIGN KEY”.

Ejemplos:

En estos ejemplos, aplicamos un FOREIGN KEY para la columna “idDepartamento”. Ningún empleado
puede pertenecer a un departamento que no exista.

a) Definiendo la restricción al momento de crear la tabla.


Create table departamento


(
idDepartamento int not null primary key,
Nombre varchar(60),

)

Create table empleado


(
idEmpleado int not null primary key,
Nombre varchar(60),
idDepartamento int not null references departamento
)
FOREING KEY para departamento.Aplica a SQL SERVER.

Create table empleado


(
idEmpleado int not null primary key,
Nombre varchar(60),
idDepartamento int not null,
constraint fk_emp_dep foreign key(idDepartamento) references
departamento
)
FOREING KEY para departamento, indicando el nombre de la restricción. Aplica a SQL SERVER.

INTRODUCCION BASES DE DATOS – Ing. Carlos Caraballo Page 58



Create table empleado
(
idEmpleado int not null primary key,
Nombre varchar(60),
idDepartamento int not null,
constraint fk_emp_dep foreign key(idDepartamento) references
departamento(idDepartamento)
)
FOREING KEY para departamento, indicando el nombre de la restricción. Aplica a MYSQL y
Oracle.







b) Creando la restricción para una tabla ya existe.

Alter table empleado
Add constraint fk_emp_dep foreign key(iddepartamento)
References departamento(iddepartamento)

FOREING KEY para departamento, indicando el nombre de la restricción. Aplica a MYSQL, SQL
SERVER y Oracle.

Integridad del Usuario

Se refiere a restricciones programadas por el usuario utilizando herramientas como los “Triggers” y
“Procedimiento almacenados”. De esto, hablaremos más adelante.

INTRODUCCION BASES DE DATOS – Ing. Carlos Caraballo Page 59

S-ar putea să vă placă și