Sei sulla pagina 1di 29

Ing.

Lenin Huayta Flores


U.D. Taller de Base de Datos
C.P. Computación e Informática
 Tipos de integridad de datos
 Exigir la integridad de los datos
 Definición de restricciones
 Tipos de restricciones
 Deshabilitación de restricciones
 Uso de valores predeterminados y reglas
 Decisión del método de implementación
que va a utilizar
Integridad de dominio
(columnas)

Integridad de entidad (filas)

Integridad referencial
(entre tablas)
 Integridad de datos declarativa
◦ Los criterios se definen en la definición del objeto
◦ Asegurada automáticamente por MySQL Worbench.
◦ Implementada mediante restricciones, valores
predeterminados y reglas.
 Integridad de datos procedimental
◦ Los criterios se definen en una secuencia de
comandos
◦ Asegurada mediante secuencia de comandos
◦ Implementada mediante desencadenadores y
prodedimientos almacenados
 Determinación del tipo de restricción que se va a
utilizar
 Creación de restricciones
 Consideraciones para el uso de restricciones
Tipo de integridad Tipo de restricción
DEFAULT
Dominio CHECK
REFERENTIAL
PRIMARY KEY
Entidad
UNIQUE
FOREIGN KEY
Referencial
CHECK
 Utilizar CREATE TABLE o ALTER TABLE
 Puede agregar restricciones a una tabla con datos
existentes
 Puede aplicar restricciones a una sola columna o a
varias columnas
◦ Una sola columna, se llama restricción de columna
◦ Varias columnas, se llama restricción de tabla
 Pueden cambiarse sin volver a crear una tabla
 Requieren comprobación de errores en aplicaciones y
transacciones
 Comprueban los datos existentes
 Restricciones DEFAULT
 Restricciones CHECK
 Restricciones PRIMARY KEY
 Restricciones UNIQUE
 Restricciones FOREIGN KEY
 Integridad referencial en cascada
 Sólo se aplica a las instrucciones INSERT
 Sólo una restricción DEFAULT por columna
 No se puede utilizar con la propiedad
IDENTITY o el tipo de datos rowversion
 Permite que se especifiquen algunos valores
proporcionados por el sistema
USE dbventas
ALTER TABLE cliente
ADD
CONSTRAINT DF_nombrecontacto DEFAULT 'UNKNOWN'
FOR NombreContacto
 Se utilizan con las instrucciones INSERT y
UPDATE
 Pueden hacer referencia a otras columnas en la
misma tabla
 No pueden:
◦ Utilizarse con el tipo de datos rowversion
◦ Contener subconsultas
USE dbventas
ALTER TABLE Empleados
ADD
CONSTRAINT CK_fechanacimiento
CHECK (FechaNacimiento > '01-01-1900' AND
FechaNacimiento < getdate())
 Sólo una restricción PRIMARY KEY por tabla
 Los valores deben ser exclusivos
 No se permiten valores nulos
 Crea un índice exclusivo en las columnas especificadas

USE dbventas
ALTER TABLE Clientes
ADD
CONSTRAINT PK_Clientes
PRIMARY KEY (IDCliente)
 Permite un valor nulo
 Permite varias restricciones UNIQUE en una tabla
 Definidas con una o más columnas
 Exigida con un índice único

USE dbventas
ALTER TABLE Proveedores
ADD
CONSTRAINT U_NombreCompanhia
UNIQUE (NombreCompanhia)
 Deben hacer referencia a una restricción
PRIMARY KEY o UNIQUE
 Proporcionan integridad referencial de una o de
varias columnas
 No crean índices automáticamente
 Los usuarios deben tener permisos SELECT o
REFERENCES en las tablas a las que se hace
referencia
 Usa
USE sólo la cláusula REFERENCES en la tabla de
bventas
ALTER TABLE Pedido
ejemplo
ADD CONSTRAINT FK_Pedido_Clientes
FOREIGN KEY (IDCliente)
REFERENCES Clientes(IDCliente)
NINGUNA CASCADA
Customers Customers
ACCIÓN CustomerID (PK)
CustomerID (PK)
1 1
INSERT new UPDATE CustomerID
CustomerID
CASCADA
Orders
CustomerID (FK) Orders
2 CustomerID (FK)
UPDATE old
CustomerID to new
CustomerID
Customers
CustomerID (PK)
3
DELETE old
CustomerID
 Deshabilitación de la comprobación de las
restricciones en los datos existentes
 Deshabilitación de la comprobación de las
restricciones al cargar datos nuevos
 Se aplica a las restricciones CHECK y FOREIGN KEY
 Utilice la opción WITH NOCHECK cuando agregue
una restricción nueva
 Utilizar si los datos existentes no cambian
 Se pueden cambiar los datos existentes antes de
agregar restricciones
USE dbventas
ALTER TABLE Empleados
WITH NOCHECK
ADD CONSTRAINT FK_Empleados_Empleados
FOREIGN KEY (AReportes)
REFERENCES Empleados(IDEmpleado)
 Se aplica a las restricciones CHECK y FOREIGN KEY
 Utilizar si:
◦ Los datos cumplen las restricciones
◦ Carga datos nuevos que no cumplen las restricciones

USE dbventas
ALTER TABLE Empleados
NOCHECK
CONSTRAINT FK_Empleados_Empleados
 Como objetos independientes:
◦ Se definen una vez
◦ Pueden vincularse a una o más columnas
o a tipos de datos definidos por el usuario

CREATE DEFAULT telefono_no_default


AS '(000)000-0000'
GO
EXEC sp_unirdefault telefono_no_default,
'Cliente.Telefono'

CREATE RULE codigoregion_regla


AS @codigoregion IN ('IA', 'IL', 'KS', 'MO')
GO
EXEC sp_unirregla codigoregion_regla,
'Clientes.Region'
Componente de Costos de Antes o después
Funcionalidad
integridad de datos rendimiento de la transacción

Restricciones Media Baja Antes

Valores predetermi-
Baja Baja Antes
nados y reglas

Desencadenadores Alta Medio-alto Después

Tipos de datos,
Baja Baja Antes
Null/Not Null
Ing. Lenin Huayta Flores - Taller de Base
de Datos 10/04/2018 21
 Completar las siguientes tablas de la base de datos
DBIESTPD:
◦ alumno
◦ aula
◦ carreraprofesional
◦ docente
◦ semestre
◦ unidaddidactica
◦ usuario

Ing. Lenin Huayta Flores - Taller de Base


de Datos 10/04/2018 22
Create Table Alumno( FicInscripcion bit,
idalumno int(4) zerofill not null CerEstudios bit,
auto_increment, CopDni bit,
NomAlumno varchar(30), CopPartida bit,
ApePaterno varchar (25), Fotografia bit,
ApeMaterno varchar (25), Decjurada bit,
NumDocumento int (8), Observaciones text,
FecNacimiento date, Unique(CodAlumno),
Sexo enum ('M','F'), Unique(NumDocumento),
Direccion varchar (45), primary key (CodAlumno)
Email varchar (30), );//Insertar un alumno con código
Telefono varchar (9), vacío sin carrera profesional
NomCarrera varchar (30), Volver
Ing. Lenin Huayta Flores - Taller de Base
de Datos 10/04/2018 23
idaula INT( 2 ) UNSIGNED ZEROFILL NOT NULL
AUTO_INCREMENT
NomAula varchar(30),
NumAula int(4) zerofill,
primary key (idaula)
);

Volver
Ing. Lenin Huayta Flores - Taller de Base
de Datos 10/04/2018 24
idcarrera int(2) zerofill not null auto_increment,
NomCarrera varchar(30),
NumResolucion varchar (15),
FecCreacion date default '1980-01-01',
primary key (CodCarrera)
);

Volver
Ing. Lenin Huayta Flores - Taller de Base
de Datos 10/04/2018 25
Create Table Docente( Direccion varchar (45),
iddocente int(3) zerofill not null Telefono varchar (9),
auto_increment, Email varchar (30),
NomDocente varchar(30), Observaciones text,
ApePaterno varchar (25), primary key (CodDocente)
ApeMaterno varchar (25), );
Cargo varchar (30),
NumDocumento int (8) zerofill,
ConDocente enum
('NOMBRADO','CONTRATADO'),
FecNacimiento date default '1980-
01-01',
Sexo enum ('M','F'), Volver
Ing. Lenin Huayta Flores - Taller de Base
de Datos 10/04/2018 26
idsemestre int(2) zerofill not null auto_increment,
Semestre varchar (3),
Detalle varchar (25),
Primary Key (CodSemestre)
);

Volver
Ing. Lenin Huayta Flores - Taller de Base
de Datos 10/04/2018 27
idunidaddidactica int(3) zerofill not null auto_increment,
NomUnidad varchar (150),
HorSemana int (2),
CreUnidad float (2,1),
HorSemestre int (3),
Primary Key (CodUnidad),
CodCarrera int(2) zerofill unsigned references
carreraprofesional (CodCarrera),
CodSemestre int(2) zerofill unsigned references
semestreacademico (CodSemestre)
); Volver
Ing. Lenin Huayta Flores - Taller de Base
de Datos 10/04/2018 28
CodUsuario int(3) zerofill not null auto_increment,
NomUsuario varchar(30),
ApePaterno varchar (25),
ApeMaterno varchar (25),
TipUsuario enum ('ALUMNO','DOCENTE','ADMINISTRADOR') default 'ALUMNO',
Usuario varchar (8),
Password varchar (8),
FecIngreso date,
FecCaducidad date,
Observaciones text,
primary key (CodUsuario),
check (fecIngreso < FecCaducidad),
unique (usuario)
); Volver
Ing. Lenin Huayta Flores - Taller de Base
de Datos 10/04/2018 29

Potrebbero piacerti anche