tema 6. integridad de datos

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

Upload: xiu

Post on 06-Jan-2016

60 views

Category:

Documents


1 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Tema 6.  Integridad de Datos

Ing. Lenin Huayta FloresU.D. Taller de Base de Datos

C.P. Computación e Informática

Page 2: Tema 6.  Integridad de Datos

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

Page 3: Tema 6.  Integridad de Datos

Integridad de dominio (columnas)

Integridad de entidad (filas)

Integridad referencial(entre tablas)

Page 4: Tema 6.  Integridad de 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

Page 5: Tema 6.  Integridad de Datos

Determinación del tipo de restricción que se va a utilizar

Creación de restricciones Consideraciones para el uso de

restricciones

Page 6: Tema 6.  Integridad de Datos

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

Page 7: Tema 6.  Integridad de Datos

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

Page 8: Tema 6.  Integridad de Datos

Pueden cambiarse sin volver a crear una tabla

Requieren comprobación de errores en aplicaciones y transacciones

Comprueban los datos existentes

Page 9: Tema 6.  Integridad de Datos

Restricciones DEFAULT Restricciones CHECK Restricciones PRIMARY KEY Restricciones UNIQUE Restricciones FOREIGN KEY Integridad referencial en cascada

Page 10: Tema 6.  Integridad de Datos

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

Page 11: Tema 6.  Integridad de Datos

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())

Page 12: Tema 6.  Integridad de Datos

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)

Page 13: Tema 6.  Integridad de Datos

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)

Page 14: Tema 6.  Integridad de Datos

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)

Page 15: Tema 6.  Integridad de Datos

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

Page 16: Tema 6.  Integridad de Datos

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

Page 17: Tema 6.  Integridad de Datos

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)

Page 18: Tema 6.  Integridad de Datos

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

Page 19: Tema 6.  Integridad de Datos

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'

Page 20: Tema 6.  Integridad de Datos

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

Page 21: Tema 6.  Integridad de Datos

20/04/23Ing. Lenin Huayta Flores - Taller

de Base de Datos 21

Page 22: Tema 6.  Integridad de Datos

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

Page 23: Tema 6.  Integridad de Datos

20/04/23Ing. Lenin Huayta Flores - Taller

de Base de Datos 23

Volver

Page 24: Tema 6.  Integridad de Datos

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

Page 25: Tema 6.  Integridad de Datos

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

Page 26: Tema 6.  Integridad de Datos

20/04/23Ing. Lenin Huayta Flores - Taller

de Base de Datos 26

Volver

Page 27: Tema 6.  Integridad de Datos

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

Page 28: Tema 6.  Integridad de Datos

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

Page 29: Tema 6.  Integridad de Datos

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