La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tema 6. Integridad de Datos

Presentaciones similares


Presentación del tema: "Tema 6. Integridad de Datos"— Transcripción de la presentación:

1 Tema 6. Integridad de Datos
Ing. Lenin Huayta Flores U.D. Taller de Base de Datos C.P. Computación e Informática

2 Índice 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

3 Tipos de integridad de datos
Integridad de dominio (columnas) Integridad de entidad (filas) Integridad referencial (entre tablas)

4 Exigir integridad de los datos
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

5 Definición de restricciones
Determinación del tipo de restricción que se va a utilizar Creación de restricciones Consideraciones para el uso de restricciones

6 Determinación del tipo de restricción que se va a utilizar
Tipo de integridad Tipo de restricción Dominio DEFAULT CHECK REFERENTIAL Entidad PRIMARY KEY UNIQUE Referencial FOREIGN KEY CHECK

7 Creación de restricciones
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

8 Consideraciones para el uso de restricciones
Pueden cambiarse sin volver a crear una tabla Requieren comprobación de errores en aplicaciones y transacciones Comprueban los datos existentes

9 Tipos de restricciones
Restricciones DEFAULT Restricciones CHECK Restricciones PRIMARY KEY Restricciones UNIQUE Restricciones FOREIGN KEY Integridad referencial en cascada

10 Restricciones DEFAULT
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

11 Restricciones CHECK 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 > ' ' AND FechaNacimiento < getdate())

12 Restricciones PRIMARY KEY
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)

13 Restricciones UNIQUE 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)

14 Restricciones FOREIGN KEY
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 bventas ALTER TABLE Pedido ADD CONSTRAINT FK_Pedido_Clientes FOREIGN KEY (IDCliente) REFERENCES Clientes(IDCliente)

15 Integridad referencial en cascada
NINGUNA ACCIÓN CASCADA Customers Customers CustomerID (PK) CustomerID (PK) 1 1 UPDATE CustomerID INSERT new CustomerID CASCADA Orders CustomerID (FK) Orders 2 CustomerID (FK) UPDATE old CustomerID to new CustomerID Customers CustomerID (PK) 3 DELETE old CustomerID

16 Deshabilitación de restricciones
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

17 Deshabilitación de la comprobación de las restricciones en los datos existentes
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)

18 Deshabilitación de la comprobación de las restricciones al cargar datos nuevos
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

19 Uso de valores predeterminados y reglas
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) ' GO EXEC sp_unirdefault telefono_no_default, 'Cliente.Telefono' CREATE RULE codigoregion_regla IN ('IA', 'IL', 'KS', 'MO') GO EXEC sp_unirregla codigoregion_regla, 'Clientes.Region'

20 Decisión del método de implementación que va a utilizar
Componente de integridad de datos Restricciones Valores predetermi- nados y reglas Desencadenadores Funcionalidad Media Baja Alta Costos de rendimiento Medio-alto Antes o después de la transacción Antes Después Tipos de datos, Null/Not Null

21 Caso Práctico: Sincronización e Integridad de Datos en MySQL
Ing. Lenin Huayta Flores - Taller de Base de Datos 13/09/2018

22 Trabajo encargado: 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 13/09/2018

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

24 Tabla: aula NomAula varchar(30), NumAula int(4) zerofill,
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 13/09/2018

25 Tabla: carreraprofesional
idcarrera int(2) zerofill not null auto_increment, NomCarrera varchar(30), NumResolucion varchar (15), FecCreacion date default ' ', primary key (CodCarrera) ); Volver Ing. Lenin Huayta Flores - Taller de Base de Datos 13/09/2018

26 Tabla: docente Create Table Docente( iddocente int(3) zerofill not null auto_increment, NomDocente varchar(30), ApePaterno varchar (25), ApeMaterno varchar (25), Cargo varchar (30), NumDocumento int (8) zerofill, ConDocente enum ('NOMBRADO','CONTRATADO'), FecNacimiento date default ' ', Sexo enum ('M','F'), Direccion varchar (45), Telefono varchar (9), varchar (30), Observaciones text, primary key (CodDocente) ); Volver Ing. Lenin Huayta Flores - Taller de Base de Datos 13/09/2018

27 Tabla: semestre Volver
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 13/09/2018

28 Tabla: unidaddidactica
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 13/09/2018

29 Tabla: usuario 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 13/09/2018


Descargar ppt "Tema 6. Integridad de Datos"

Presentaciones similares


Anuncios Google