1 / 29

Tema 6. Integridad de Datos

Tema 6. Integridad de Datos. Ing. Lenin Huayta Flores U.D. Taller de Base de Datos C.P. Computación e Informática. Í ndice. Tipos de integridad de datos Exigir la integridad de los datos Definición de restricciones Tipos de restricciones Deshabilitación de restricciones

xiu
Télécharger la présentation

Tema 6. Integridad de Datos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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ónde 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ónque 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. Tiposde 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 dbventasALTER TABLE clienteADDCONSTRAINT 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 dbventasALTER TABLE EmpleadosADD CONSTRAINT CK_fechanacimientoCHECK (FechaNacimiento > '01-01-1900' 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 • Usasó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 NINGUNAACCIÓN CASCADA Customers Customers CustomerID (PK) CustomerID (PK) 1 1 UPDATE CustomerID INSERT new CustomerID CASCADA Orders Orders CustomerID (FK) 2 CustomerID (FK) UPDATE old CustomerID to new CustomerID Customers CustomerID (PK) 3 DELETE old CustomerID

  16. Deshabilitaciónde 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 lasrestricciones en los datosexistentes • 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 lasrestricciones al cargardatosnuevos • 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 columnaso 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 RULE codigoregion_regla AS @codigoregion IN ('IA', 'IL', 'KS', 'MO')GOEXEC sp_unirregla codigoregion_regla, 'Clientes.Region'

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

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

  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

  23. Tabla: alumno CreateTable Alumno( idalumnoint(4) zerofillnotnullauto_increment, NomAlumnovarchar(30), ApePaternovarchar (25), ApeMaternovarchar (25), NumDocumentoint (8), FecNacimiento date, Sexo enum ('M','F'), Direccionvarchar (45), Email varchar (30), Telefonovarchar (9), NomCarreravarchar (30), FicInscripcion bit, CerEstudios bit, CopDni bit, CopPartida bit, Fotografia bit, Decjurada bit, Observaciones text, Unique(CodAlumno), Unique(NumDocumento), primarykey (CodAlumno) );//Insertar un alumno con código vacío sin carrera profesional Volver Ing. Lenin Huayta Flores - Taller de Base de Datos

  24. Tabla: aula 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

  25. Tabla: carreraprofesional 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

  26. Tabla: docente CreateTable Docente( iddocenteint(3) zerofillnotnullauto_increment, NomDocentevarchar(30), ApePaternovarchar (25), ApeMaternovarchar (25), Cargo varchar (30), NumDocumentoint (8) zerofill, ConDocenteenum ('NOMBRADO','CONTRATADO'), FecNacimiento date default '1980-01-01', Sexo enum ('M','F'), Direccionvarchar (45), Telefonovarchar (9), Email varchar (30), Observaciones text, primarykey (CodDocente) ); Volver Ing. Lenin Huayta Flores - Taller de Base de Datos

  27. Tabla: semestre 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

  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

  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

More Related