Post on 06-Jan-2016
description
Ing. Lenin Huayta FloresU.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 integridadTipo de integridadTipo de integridadTipo de integridad Tipo de restricciónTipo de restricciónTipo de restricciónTipo de restricción
DominioDominioDEFAULTDEFAULT
CHECKCHECK
REFERENTIALREFERENTIAL
EntidadEntidad PRIMARY KEYPRIMARY KEY
UNIQUEUNIQUE
ReferencialReferencial FOREIGN KEYFOREIGN KEY
CHECKCHECK
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 dbventasALTER TABLE clienteADDCONSTRAINT DF_nombrecontacto DEFAULT 'UNKNOWN' FOR NombreContacto
USE dbventasALTER TABLE clienteADDCONSTRAINT 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 dbventasALTER TABLE EmpleadosADD CONSTRAINT CK_fechanacimientoCHECK (FechaNacimiento > '01-01-1900' AND FechaNacimiento < getdate())
USE dbventasALTER TABLE EmpleadosADD CONSTRAINT CK_fechanacimientoCHECK (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 dbventasALTER TABLE Clientes ADD CONSTRAINT PK_Clientes PRIMARY KEY (IDCliente)
USE dbventasALTER 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 dbventasALTER TABLE ProveedoresADD CONSTRAINT U_NombreCompanhia UNIQUE (NombreCompanhia)
USE dbventasALTER TABLE ProveedoresADD 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 sólo la cláusula REFERENCES en la tabla de ejemplo
USE bventasALTER TABLE Pedido ADD CONSTRAINT FK_Pedido_Clientes FOREIGN KEY (IDCliente) REFERENCES Clientes(IDCliente)
USE bventasALTER TABLE Pedido ADD CONSTRAINT FK_Pedido_Clientes FOREIGN KEY (IDCliente) REFERENCES Clientes(IDCliente)
CASCADANINGUNAACCIÓN CustomersCustomersCustomersCustomers
INSERT new CustomerIDINSERT new CustomerID
CustomerID (PK)
11
OrdersOrdersOrdersOrders
CustomerID (FK)
UPDATE old CustomerID to new CustomerID
UPDATE old CustomerID to new CustomerID
22
CustomersCustomersCustomersCustomers
CustomerID (PK)
UPDATE CustomerIDUPDATE CustomerID
OrdersOrdersOrdersOrders
CustomerID (FK)
11
CASCADA
CustomersCustomersCustomersCustomers
DELETE old CustomerIDDELETE old CustomerID
CustomerID (PK)
33
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 restriccionesUSE dbventasALTER TABLE Empleados WITH NOCHECK ADD CONSTRAINT FK_Empleados_Empleados FOREIGN KEY (AReportes) REFERENCES Empleados(IDEmpleado)
USE dbventasALTER 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 dbventasALTER TABLE Empleados NOCHECK CONSTRAINT FK_Empleados_Empleados
USE dbventasALTER 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' GOEXEC sp_unirdefault telefono_no_default, 'Cliente.Telefono'
CREATE DEFAULT telefono_no_default AS '(000)000-0000' GOEXEC sp_unirdefault telefono_no_default, 'Cliente.Telefono'
CREATE RULE codigoregion_regla AS @codigoregion IN ('IA', 'IL', 'KS', 'MO')GOEXEC sp_unirregla codigoregion_regla, 'Clientes.Region'
CREATE RULE codigoregion_regla AS @codigoregion IN ('IA', 'IL', 'KS', 'MO')GOEXEC sp_unirregla codigoregion_regla, 'Clientes.Region'
Componente deComponente deintegridad de datosintegridad de datos
Componente deComponente deintegridad de datosintegridad de datos
RestriccionesRestricciones
Valores predetermi-nados y reglas
Valores predetermi-nados y reglas
DesencadenadoresDesencadenadores
FuncionalidadFuncionalidadFuncionalidadFuncionalidad
MediaMedia
BajaBaja
AltaAlta
Costos de Costos de rendimientorendimiento
Costos de Costos de rendimientorendimiento
BajaBaja
BajaBaja
Medio-altoMedio-alto
Antes o despuésAntes o despuésde la transacciónde la transacción
Antes o despuésAntes o despuésde la transacciónde la transacción
AntesAntes
AntesAntes
DespuésDespués
Tipos de datos,Null/Not Null
Tipos de datos,Null/Not Null BajaBaja BajaBaja AntesAntes
20/04/23Ing. Lenin Huayta Flores - Taller
de Base de Datos 21
Completar las siguientes tablas de la base de datos DBIESTPD:◦ alumno◦ aula◦ carreraprofesional◦ docente◦ semestre◦ unidaddidactica◦ usuario
20/04/23Ing. Lenin Huayta Flores - Taller
de Base de Datos 22
20/04/23Ing. Lenin Huayta Flores - Taller
de Base de Datos 23
Volver
idaula INT( 2 ) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT NomAula varchar(30),NumAula int(4) zerofill,primary key (idaula));
20/04/23Ing. Lenin Huayta Flores - Taller
de Base de Datos 24
Volver
idcarrera int(2) zerofill not null auto_increment,NomCarrera varchar(30),NumResolucion varchar (15),FecCreacion date default '1980-01-01',primary key (CodCarrera));
20/04/23Ing. Lenin Huayta Flores - Taller
de Base de Datos 25
Volver
20/04/23Ing. Lenin Huayta Flores - Taller
de Base de Datos 26
Volver
idsemestre int(2) zerofill not null auto_increment,Semestre varchar (3),Detalle varchar (25),Primary Key (CodSemestre));
20/04/23Ing. Lenin Huayta Flores - Taller
de Base de Datos 27
Volver
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));
20/04/23Ing. Lenin Huayta Flores - Taller
de Base de Datos 28
Volver
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));
20/04/23Ing. Lenin Huayta Flores - Taller
de Base de Datos 29
Volver