SlideShare une entreprise Scribd logo
1  sur  18
3. Restricciones de las Bases de
Datos


  3.1 Tipos de restricciones de integridad.
  3.2 Uso de restricciones.
  3.3 Caso de pruebas para restricciones.
Definición




                                Ayudan a mantener la
                                    consistencia
                                 semántica en la BD



                                  Aseguran que los
                                 usuarios autorizados
                                   no provoquen la
                                      pérdida de
                                consistencia de datos.



Elaborado por :Luz Alondra Katt Morales
Definición


                                           Entidad


                                           Dominio


                                          Referencial


                               Definida por el usuario


Elaborado por :Luz Alondra Katt Morales     http://msdn.microsoft.com/es-es/library/ms184276.aspx
Integridad de Entidad
La integridad de entidad define una fila como entidad única para una tabla
determinada. La integridad de entidad exige la integridad de las columnas de
los identificadores o la clave principal de una tabla, mediante índices y
restricciones UNIQUE, o restricciones PRIMARY KEY.

En esta no está permitido que algún componente de la clave primaria acepte
valores nulos.
Las razones de esta regla son:

   Las tuplas en las relaciones base representan entidades en la realidad.

   Las entidades en la realidad son identificables por definición.

   Sus contrapartes en la base de datos también deben ser identificables.

   Los valores de la clave primaria sirven como identificadores en la base de datos.

   Los valores de clave primaria no pueden ser nulos.


Elaborado por :Luz Alondra Katt Morales           http://msdn.microsoft.com/es-es/library/ms184276.aspx
                     http://juanin.bligoo.com/content/view/606209/Integridad-en-las-Bases-de-Datos.html
Integridad de Entidad - unicidad
La restricción UNIQUE asegura que todos los valores en una columna sean
distintos.

Por ejemplo, en la siguiente instrucción,
CREATE TABLE Customer
(SID integer Unique,
Last_Name varchar (30),
First_Name varchar(30));
D
La columna “SID” no puede incluir valores duplicados, mientras dicha
restricción no se aplica para columnas “Last_Name” y “First_Name”.




Elaborado por :Luz Alondra Katt Morales   http://sql.1keydata.com/es/sql-constraint.php
Integridad de Entidad – Clave Primaria
MySQL:
CREATE TABLE Customer
(SID integer,
Last_Name varchar(30),
First_Name varchar(30),
PRIMARY KEY (SID));
                                        Oracle:
                               CREATE TABLE Customer
                              (SID integer PRIMARY KEY,
                                Last_Name varchar(30),
                                First_Name varchar(30));
                                                                       SQL Server:
                                                         CREATE TABLE Customer
                                                        (SID integer PRIMARY KEY,
                                                            Last_Name varchar(30),
                                                           First_Name varchar(30));


Elaborado por :Luz Alondra Katt Morales
                                          http://sql.1keydata.com/es/sql-constraint.php
Integridad de Dominio
La integridad de dominio viene dada por la validez de las entradas para una
columna determinada. Puede exigir la integridad de dominio para restringir el
tipo mediante tipos de datos, el formato mediante reglas y restricciones
CHECK, o el intervalo de valores posibles mediante restricciones FOREIGN
KEY, restricciones CHECK, definiciones DEFAULT, definiciones NOT NULL y
reglas.
                     Dato              Longitud         Descripción
               Bit                1 byte            Valores true/false
               Byte               1 byte            Entero entre 0 y
                                                    255
               Counter            4 bytes           Campo ID (long)
               Currency           8 bytes           Numérico
               Datetime           8 bytes           Fecha
               Text               1 byte/caracter   De 0 a 255
                                                    caracteres


Elaborado por :Luz Alondra Katt Morales   http://msdn.microsoft.com/es-es/library/ms184276.aspx
Integridad de Dominio – No nulo
NOT NULL
En forma predeterminada, una columna puede ser NULL. Si no desea permitir
un valor NULL en una columna, querrá colocar una restricción en esta columna
especificando que NULL no es ahora un valor permitido.

Por ejemplo, en la siguiente instrucción,

CREATE TABLE Customer
(SID integer NOT NULL,
Last_Name varchar (30) NOT NULL,
First_Name varchar(30));


Las columnas “SID” y “Last_Name” no incluyen NULL, mientras que
“First_Name” puede incluir NULL.



Elaborado por :Luz Alondra Katt Morales
                                          http://sql.1keydata.com/es/sql-constraint.php
Integridad de Dominio – Check
La restricción CHECK asegura que todos los valores en una columna cumplan
ciertas condiciones.

Por ejemplo, en la siguiente instrucción,
CREATE TABLE Customer
(SID integer CHECK (SID > 0),
Last_Name varchar (30),
First_Name varchar(30));


La columna “SID” sólo debe incluir enteros mayores a 0.




Elaborado por :Luz Alondra Katt Morales
                                          http://sql.1keydata.com/es/sql-constraint.php
Integridad de Dominio – Llave Foranea
MySQL:
CREATE TABLE ORDERS
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
Primary Key (Order_ID),
Foreign Key (Customer_SID) references CUSTOMER(SID));

                                           Oracle:
                                 CREATE TABLE ORDERS
                               (Order_ID integer primary key,
                                      Order_Date date,
                      Customer_SID integer references CUSTOMER(SID),
                                      Amount double);
                                                                                 SQL Server:
                                                                   CREATE TABLE ORDERS
                                                                (Order_ID integer primary key,
                                                                        Order_Date datetime,
                                           Customer_SID integer references CUSTOMER(SID),
                                                                              Amount double);

Elaborado por :Luz Alondra Katt Morales
                                            http://sql.1keydata.com/es/sql-constraint.php
Integridad Referencial
protege las relaciones definidas entre las tablas cuando se crean o se eliminan
filas. La integridad referencial garantiza que los valores de clave sean
coherentes en las distintas tablas. Para conseguir esa coherencia, es preciso
que no haya referencias a valores inexistentes y que, si cambia el valor de una
clave, todas las referencias a ella se cambien en consecuencia en toda la base
de datos.
                       No se podrá introducir un valor en la tabla
                       relacionada si antes no ha sido introducida en la
                       tabla principal.

                       No se puede eliminar un registro de una tabla
                       principal si existen registros coincidentes en la
                       tabla relacionada.

                       No se puede cambiar un valor de la clave
                       primaria en la tabla principal si el registro tiene
                       registros relacionados.


Elaborado por :Luz Alondra Katt Morales      http://msdn.microsoft.com/es-es/library/ms184276.aspx
Integridad Referencial

Por ejemplo, en las tablas Sales.SalesOrderDetail y Production.Product de la
base de datos AdventureWorks2008R2, la integridad referencial se basa en la
relación entre la clave externa (ProductID) de la tabla Sales.SalesOrderDetail y
la clave principal (ProductID) de la tabla Production.Product. Esta relación
garantiza que un pedido de ventas no pueda nunca hacer referencia a un
producto que no existe en la tabla Production.Product.




Elaborado por :Luz Alondra Katt Morales   http://msdn.microsoft.com/es-es/library/ms184276.aspx
Integridad definida por el usuario

La integridad definida por el usuario permite definir reglas de empresa específicas
que no pertenecen a ninguna otra categoría de integridad. Todas las categorías
de integridad admiten la integridad definida por el usuario. Esto incluye todas las
restricciones de nivel de columna y nivel de tabla en CREATE TABLE,
procedimientos almacenados y desencadenadores.




Elaborado por :Luz Alondra Katt Morales   http://msdn.microsoft.com/es-es/library/ms184276.aspx
Constraints

CREATE TABLE parent
( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB;

CREATE TABLE child
( id INT, parent_id INT, INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE )
ENGINE=INNODB;



        ALTER TABLE yourtablename ADD [CONSTRAINT symbol] FOREIGN
        KEY [id] (index_col_name, ...) REFERENCES tbl_name
        (index_col_name, ...) [ON DELETE {RESTRICT | CASCADE | SET
        NULL | NO ACTION}] [ON UPDATE {RESTRICT | CASCADE | SET
        NULL | NO ACTION}]




Elaborado por :Luz Alondra Katt Morales   http://dev.mysql.com/doc/refman/5.0/es/innodb-foreign-
                                          key-constraints.html
Constraints – NOT NULL

Name                           Null                Type
CATEGORIAID NOT                NULL               CHAR (18)
UBICACIÓN                                         CHAR (18)
NOMBRECATEGORÍA                                    CHAR(18)

Modificamos la restricción de la tabla.

ALTER TABLE CATEGORIA
MODIFY(UBICACIÓN NOT NULL);
CATEGORIAID NOT NULL CHAR(18)
UBICACIÓN NOT NULL CHAR(18)
NOMBRECATEGORÍA CHAR(18)




Elaborado por :Luz Alondra Katt Morales
                                          http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints
Constraints

Insertamos valores a nuestra tabla.
INSERT INTO CATEGORIAVALUES ('AL12', ,'ALIMENTOS');

ERROR:Error starting at line 1 in command:
INSERT INTO CATEGORIAVALUES ('AL12',,'ALIMENTOS')
Error at Command Line:2
Column:15Error report:SQL
Error: ORA-00936: falta una expresión00936. 00000 - "missing
expression"*Cause:*Action:




Elaborado por :Luz Alondra Katt Morales
                                          http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints
Constraints - UNIQUE

Name           Null                                Type
RUCDNICTE      NOT NULL                             CHAR(18)
DIRECCION                                          CHAR(18)
EMAIL                                               CHAR(18)
TELEFONO1                                          CHAR(18)
RAZONSOCNOMBRE                                     CHAR(18)
TELEFONO2                                          CHAR(18)

En este caso realizamos dos restricciones UNIQUE a los campos de Email
yRazonSocial.

ALTER TABLE CLIENTEMODIFY (CONSTRAINT UNMAIL UNIQUE(EMAIL))

Insertamos algunas filas a nuestra tabla.
INSERT INTO CLIENTEVALUES('43918908','LOSALIZOS
212','arzame@yahoo.es','8762412','ArmandoZamora','976457238');
1 rows inserted
Elaborado por :Luz Alondra Katt Morales
                                          http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints
Constraints - UNIQUE

INSERT INTO CLIENTEVALUES
('439874232','EL SOL 12', 'arzame@yahoo.es', '9878712', 'ArmandoSanchez',
'976897638');

ERROR:Error starting at line 1 in command:INSERT INTO
CLIENTEVALUES('439874232','EL SOL
#212','arzame@yahoo.es','9878712','ArmandoSanchez','976897638')

Error report:SQL Error: ORA-00001: restricción única (SYSTEM.XPKCLIENTE)
violada00001. 00000 - "unique constraint (%s.%s) violated"*Cause: An
UPDATE or INSERT statement attempted to insert a duplicatekey.

For Trusted Oracle configured in DBMS MAC mode, you may seethis message if
a duplicate entry exists at a different level.*Action: Either remove the unique
restriction or do not insert the key



 Elaborado por :Luz Alondra Katt Morales
                                           http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints

Contenu connexe

Tendances

Working with Databases and MySQL
Working with Databases and MySQLWorking with Databases and MySQL
Working with Databases and MySQLNicole Ryan
 
Diccionario de base de datos
Diccionario de base de datosDiccionario de base de datos
Diccionario de base de datosalexis armas
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de javainnovalabcun
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacionalMaria Garcia
 
Modelo entidad relación de base de datos
Modelo entidad relación de base de datosModelo entidad relación de base de datos
Modelo entidad relación de base de datosani_tuza
 
Administracion de usuarios y grupos
Administracion de usuarios y gruposAdministracion de usuarios y grupos
Administracion de usuarios y gruposJACKELIN SORALUZ
 
Ventana de inicio de MySQL Workbench
Ventana de inicio de MySQL WorkbenchVentana de inicio de MySQL Workbench
Ventana de inicio de MySQL WorkbenchJair Ospino Ardila
 
DDL - Lenguaje de definición de datos
DDL - Lenguaje de definición de datosDDL - Lenguaje de definición de datos
DDL - Lenguaje de definición de datosvargasaldanajohanna
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosJosé Antonio Sandoval Acosta
 
Introducción al Análisis Orientado a Objetos
Introducción al Análisis Orientado a ObjetosIntroducción al Análisis Orientado a Objetos
Introducción al Análisis Orientado a ObjetosWilfredo Mogollón
 

Tendances (20)

Working with Databases and MySQL
Working with Databases and MySQLWorking with Databases and MySQL
Working with Databases and MySQL
 
Lenguaje SQL
Lenguaje SQLLenguaje SQL
Lenguaje SQL
 
Diccionario de base de datos
Diccionario de base de datosDiccionario de base de datos
Diccionario de base de datos
 
Clases y objetos de java
Clases y objetos de javaClases y objetos de java
Clases y objetos de java
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Fundamentos de BD - unidad 3 modelo relacional
Fundamentos de BD - unidad 3 modelo relacionalFundamentos de BD - unidad 3 modelo relacional
Fundamentos de BD - unidad 3 modelo relacional
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Modelo entidad relación de base de datos
Modelo entidad relación de base de datosModelo entidad relación de base de datos
Modelo entidad relación de base de datos
 
MySQL Basics
MySQL BasicsMySQL Basics
MySQL Basics
 
Administracion de usuarios y grupos
Administracion de usuarios y gruposAdministracion de usuarios y grupos
Administracion de usuarios y grupos
 
Uml clase 04_uml_clases
Uml clase 04_uml_clasesUml clase 04_uml_clases
Uml clase 04_uml_clases
 
Ventana de inicio de MySQL Workbench
Ventana de inicio de MySQL WorkbenchVentana de inicio de MySQL Workbench
Ventana de inicio de MySQL Workbench
 
SQL Commands
SQL Commands SQL Commands
SQL Commands
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
DDL - Lenguaje de definición de datos
DDL - Lenguaje de definición de datosDDL - Lenguaje de definición de datos
DDL - Lenguaje de definición de datos
 
Taller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 ConectividadTaller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 Conectividad
 
Manual de Erwin
Manual de ErwinManual de Erwin
Manual de Erwin
 
SGBD Postgresql
SGBD PostgresqlSGBD Postgresql
SGBD Postgresql
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
Introducción al Análisis Orientado a Objetos
Introducción al Análisis Orientado a ObjetosIntroducción al Análisis Orientado a Objetos
Introducción al Análisis Orientado a Objetos
 

En vedette

Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Sergio Sanchez
 
Unidad 6 Lenguaje Sql 2
Unidad 6 Lenguaje Sql 2Unidad 6 Lenguaje Sql 2
Unidad 6 Lenguaje Sql 2Sergio Sanchez
 
Reglas de integridad bd relacional
Reglas de integridad bd relacionalReglas de integridad bd relacional
Reglas de integridad bd relacionalDenisse C
 
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESSINTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESSitsl
 

En vedette (6)

INTEGRIDAD DE DATOS
INTEGRIDAD DE DATOSINTEGRIDAD DE DATOS
INTEGRIDAD DE DATOS
 
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
Unidad 6 Lenguaje Sql 3 (Restricciones Ddl Avanzado)
 
Unidad 6 Lenguaje Sql 2
Unidad 6 Lenguaje Sql 2Unidad 6 Lenguaje Sql 2
Unidad 6 Lenguaje Sql 2
 
Reglas de integridad bd relacional
Reglas de integridad bd relacionalReglas de integridad bd relacional
Reglas de integridad bd relacional
 
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESSINTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
INTEGRIDAD DE ENTIDAD E INTEGRIDAD REFERENCIAL EN SQL SERVER Y ACCESS
 
control de concurrencia
control de concurrenciacontrol de concurrencia
control de concurrencia
 

Similaire à Restricciones bd

04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdfssuser78e8eb
 
Integridad
IntegridadIntegridad
Integridad99909
 
Investigacion alter, create y integridad referencial
Investigacion alter, create y integridad referencialInvestigacion alter, create y integridad referencial
Investigacion alter, create y integridad referencial500y
 
Sql manipulacion de tabla
Sql manipulacion de tablaSql manipulacion de tabla
Sql manipulacion de tabladmonges
 
Ddl-Lenguaje de definición de datos
Ddl-Lenguaje de definición de datosDdl-Lenguaje de definición de datos
Ddl-Lenguaje de definición de datosvargasaldanajohanna
 
Guia n7 lenguaje de definicion de datos en sql server 2012
Guia n7 lenguaje de definicion de datos en sql server 2012Guia n7 lenguaje de definicion de datos en sql server 2012
Guia n7 lenguaje de definicion de datos en sql server 2012Johan Silva Cueva
 
Integridad Y Seguridad Completo
Integridad Y Seguridad CompletoIntegridad Y Seguridad Completo
Integridad Y Seguridad CompletoDrakonis11
 
SQL: DDL, DML y SQL
SQL: DDL, DML y SQLSQL: DDL, DML y SQL
SQL: DDL, DML y SQLCarmen Soler
 
Diapositivas de tablas y tipos de datos
Diapositivas de tablas y tipos de datosDiapositivas de tablas y tipos de datos
Diapositivas de tablas y tipos de datosTAPIA SILVA EVELINA
 
DDL oracle - base de datos
DDL oracle - base de datosDDL oracle - base de datos
DDL oracle - base de datosLuis Bando
 
Constraints (restricciones).pptx
Constraints (restricciones).pptxConstraints (restricciones).pptx
Constraints (restricciones).pptxNahumNegrete
 
ManualPracticoSQL.pdf
ManualPracticoSQL.pdfManualPracticoSQL.pdf
ManualPracticoSQL.pdfJenny29068
 

Similaire à Restricciones bd (20)

04-SQL.pdf
04-SQL.pdf04-SQL.pdf
04-SQL.pdf
 
04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf04-SQLBuenaPresentaciónyConceptos.pdf
04-SQLBuenaPresentaciónyConceptos.pdf
 
Sql 04 tablas
Sql 04 tablasSql 04 tablas
Sql 04 tablas
 
Integridad
IntegridadIntegridad
Integridad
 
Bases de datos sql
Bases de datos  sqlBases de datos  sql
Bases de datos sql
 
Bdii 09 ddl_new
Bdii 09 ddl_newBdii 09 ddl_new
Bdii 09 ddl_new
 
Unidad IV SQL
Unidad IV SQLUnidad IV SQL
Unidad IV SQL
 
Guía de Sql - Lissette Torrealba
Guía de Sql  - Lissette TorrealbaGuía de Sql  - Lissette Torrealba
Guía de Sql - Lissette Torrealba
 
Investigacion alter, create y integridad referencial
Investigacion alter, create y integridad referencialInvestigacion alter, create y integridad referencial
Investigacion alter, create y integridad referencial
 
Sql presentacion
Sql presentacionSql presentacion
Sql presentacion
 
Sql manipulacion de tabla
Sql manipulacion de tablaSql manipulacion de tabla
Sql manipulacion de tabla
 
Ddl-Lenguaje de definición de datos
Ddl-Lenguaje de definición de datosDdl-Lenguaje de definición de datos
Ddl-Lenguaje de definición de datos
 
Guia n7 lenguaje de definicion de datos en sql server 2012
Guia n7 lenguaje de definicion de datos en sql server 2012Guia n7 lenguaje de definicion de datos en sql server 2012
Guia n7 lenguaje de definicion de datos en sql server 2012
 
Integridad Y Seguridad Completo
Integridad Y Seguridad CompletoIntegridad Y Seguridad Completo
Integridad Y Seguridad Completo
 
SQL: DDL, DML y SQL
SQL: DDL, DML y SQLSQL: DDL, DML y SQL
SQL: DDL, DML y SQL
 
Diapositivas de tablas y tipos de datos
Diapositivas de tablas y tipos de datosDiapositivas de tablas y tipos de datos
Diapositivas de tablas y tipos de datos
 
DDL oracle - base de datos
DDL oracle - base de datosDDL oracle - base de datos
DDL oracle - base de datos
 
Constraints (restricciones).pptx
Constraints (restricciones).pptxConstraints (restricciones).pptx
Constraints (restricciones).pptx
 
Fundamentos sql server2
Fundamentos sql server2Fundamentos sql server2
Fundamentos sql server2
 
ManualPracticoSQL.pdf
ManualPracticoSQL.pdfManualPracticoSQL.pdf
ManualPracticoSQL.pdf
 

Plus de Alondra Katt

Plus de Alondra Katt (9)

Katt_tarea2.4.pptx
Katt_tarea2.4.pptxKatt_tarea2.4.pptx
Katt_tarea2.4.pptx
 
Valores
ValoresValores
Valores
 
Instrucciones
InstruccionesInstrucciones
Instrucciones
 
Conceptos basicos
Conceptos basicosConceptos basicos
Conceptos basicos
 
Nivel cognitivo
Nivel cognitivoNivel cognitivo
Nivel cognitivo
 
Aprendizaje procedimental
Aprendizaje procedimentalAprendizaje procedimental
Aprendizaje procedimental
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Diccionario dedatos
Diccionario dedatosDiccionario dedatos
Diccionario dedatos
 
Consultas avanzadas
Consultas avanzadasConsultas avanzadas
Consultas avanzadas
 

Restricciones bd

  • 1. 3. Restricciones de las Bases de Datos 3.1 Tipos de restricciones de integridad. 3.2 Uso de restricciones. 3.3 Caso de pruebas para restricciones.
  • 2. Definición Ayudan a mantener la consistencia semántica en la BD Aseguran que los usuarios autorizados no provoquen la pérdida de consistencia de datos. Elaborado por :Luz Alondra Katt Morales
  • 3. Definición Entidad Dominio Referencial Definida por el usuario Elaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
  • 4. Integridad de Entidad La integridad de entidad define una fila como entidad única para una tabla determinada. La integridad de entidad exige la integridad de las columnas de los identificadores o la clave principal de una tabla, mediante índices y restricciones UNIQUE, o restricciones PRIMARY KEY. En esta no está permitido que algún componente de la clave primaria acepte valores nulos. Las razones de esta regla son: Las tuplas en las relaciones base representan entidades en la realidad. Las entidades en la realidad son identificables por definición. Sus contrapartes en la base de datos también deben ser identificables. Los valores de la clave primaria sirven como identificadores en la base de datos. Los valores de clave primaria no pueden ser nulos. Elaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx http://juanin.bligoo.com/content/view/606209/Integridad-en-las-Bases-de-Datos.html
  • 5. Integridad de Entidad - unicidad La restricción UNIQUE asegura que todos los valores en una columna sean distintos. Por ejemplo, en la siguiente instrucción, CREATE TABLE Customer (SID integer Unique, Last_Name varchar (30), First_Name varchar(30)); D La columna “SID” no puede incluir valores duplicados, mientras dicha restricción no se aplica para columnas “Last_Name” y “First_Name”. Elaborado por :Luz Alondra Katt Morales http://sql.1keydata.com/es/sql-constraint.php
  • 6. Integridad de Entidad – Clave Primaria MySQL: CREATE TABLE Customer (SID integer, Last_Name varchar(30), First_Name varchar(30), PRIMARY KEY (SID)); Oracle: CREATE TABLE Customer (SID integer PRIMARY KEY, Last_Name varchar(30), First_Name varchar(30)); SQL Server: CREATE TABLE Customer (SID integer PRIMARY KEY, Last_Name varchar(30), First_Name varchar(30)); Elaborado por :Luz Alondra Katt Morales http://sql.1keydata.com/es/sql-constraint.php
  • 7. Integridad de Dominio La integridad de dominio viene dada por la validez de las entradas para una columna determinada. Puede exigir la integridad de dominio para restringir el tipo mediante tipos de datos, el formato mediante reglas y restricciones CHECK, o el intervalo de valores posibles mediante restricciones FOREIGN KEY, restricciones CHECK, definiciones DEFAULT, definiciones NOT NULL y reglas. Dato Longitud Descripción Bit 1 byte Valores true/false Byte 1 byte Entero entre 0 y 255 Counter 4 bytes Campo ID (long) Currency 8 bytes Numérico Datetime 8 bytes Fecha Text 1 byte/caracter De 0 a 255 caracteres Elaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
  • 8. Integridad de Dominio – No nulo NOT NULL En forma predeterminada, una columna puede ser NULL. Si no desea permitir un valor NULL en una columna, querrá colocar una restricción en esta columna especificando que NULL no es ahora un valor permitido. Por ejemplo, en la siguiente instrucción, CREATE TABLE Customer (SID integer NOT NULL, Last_Name varchar (30) NOT NULL, First_Name varchar(30)); Las columnas “SID” y “Last_Name” no incluyen NULL, mientras que “First_Name” puede incluir NULL. Elaborado por :Luz Alondra Katt Morales http://sql.1keydata.com/es/sql-constraint.php
  • 9. Integridad de Dominio – Check La restricción CHECK asegura que todos los valores en una columna cumplan ciertas condiciones. Por ejemplo, en la siguiente instrucción, CREATE TABLE Customer (SID integer CHECK (SID > 0), Last_Name varchar (30), First_Name varchar(30)); La columna “SID” sólo debe incluir enteros mayores a 0. Elaborado por :Luz Alondra Katt Morales http://sql.1keydata.com/es/sql-constraint.php
  • 10. Integridad de Dominio – Llave Foranea MySQL: CREATE TABLE ORDERS (Order_ID integer, Order_Date date, Customer_SID integer, Amount double, Primary Key (Order_ID), Foreign Key (Customer_SID) references CUSTOMER(SID)); Oracle: CREATE TABLE ORDERS (Order_ID integer primary key, Order_Date date, Customer_SID integer references CUSTOMER(SID), Amount double); SQL Server: CREATE TABLE ORDERS (Order_ID integer primary key, Order_Date datetime, Customer_SID integer references CUSTOMER(SID), Amount double); Elaborado por :Luz Alondra Katt Morales http://sql.1keydata.com/es/sql-constraint.php
  • 11. Integridad Referencial protege las relaciones definidas entre las tablas cuando se crean o se eliminan filas. La integridad referencial garantiza que los valores de clave sean coherentes en las distintas tablas. Para conseguir esa coherencia, es preciso que no haya referencias a valores inexistentes y que, si cambia el valor de una clave, todas las referencias a ella se cambien en consecuencia en toda la base de datos. No se podrá introducir un valor en la tabla relacionada si antes no ha sido introducida en la tabla principal. No se puede eliminar un registro de una tabla principal si existen registros coincidentes en la tabla relacionada. No se puede cambiar un valor de la clave primaria en la tabla principal si el registro tiene registros relacionados. Elaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
  • 12. Integridad Referencial Por ejemplo, en las tablas Sales.SalesOrderDetail y Production.Product de la base de datos AdventureWorks2008R2, la integridad referencial se basa en la relación entre la clave externa (ProductID) de la tabla Sales.SalesOrderDetail y la clave principal (ProductID) de la tabla Production.Product. Esta relación garantiza que un pedido de ventas no pueda nunca hacer referencia a un producto que no existe en la tabla Production.Product. Elaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
  • 13. Integridad definida por el usuario La integridad definida por el usuario permite definir reglas de empresa específicas que no pertenecen a ninguna otra categoría de integridad. Todas las categorías de integridad admiten la integridad definida por el usuario. Esto incluye todas las restricciones de nivel de columna y nivel de tabla en CREATE TABLE, procedimientos almacenados y desencadenadores. Elaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
  • 14. Constraints CREATE TABLE parent ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; CREATE TABLE child ( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ) ENGINE=INNODB; ALTER TABLE yourtablename ADD [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...) REFERENCES tbl_name (index_col_name, ...) [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}] [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}] Elaborado por :Luz Alondra Katt Morales http://dev.mysql.com/doc/refman/5.0/es/innodb-foreign- key-constraints.html
  • 15. Constraints – NOT NULL Name Null Type CATEGORIAID NOT NULL CHAR (18) UBICACIÓN CHAR (18) NOMBRECATEGORÍA CHAR(18) Modificamos la restricción de la tabla. ALTER TABLE CATEGORIA MODIFY(UBICACIÓN NOT NULL); CATEGORIAID NOT NULL CHAR(18) UBICACIÓN NOT NULL CHAR(18) NOMBRECATEGORÍA CHAR(18) Elaborado por :Luz Alondra Katt Morales http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints
  • 16. Constraints Insertamos valores a nuestra tabla. INSERT INTO CATEGORIAVALUES ('AL12', ,'ALIMENTOS'); ERROR:Error starting at line 1 in command: INSERT INTO CATEGORIAVALUES ('AL12',,'ALIMENTOS') Error at Command Line:2 Column:15Error report:SQL Error: ORA-00936: falta una expresión00936. 00000 - "missing expression"*Cause:*Action: Elaborado por :Luz Alondra Katt Morales http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints
  • 17. Constraints - UNIQUE Name Null Type RUCDNICTE NOT NULL CHAR(18) DIRECCION CHAR(18) EMAIL CHAR(18) TELEFONO1 CHAR(18) RAZONSOCNOMBRE CHAR(18) TELEFONO2 CHAR(18) En este caso realizamos dos restricciones UNIQUE a los campos de Email yRazonSocial. ALTER TABLE CLIENTEMODIFY (CONSTRAINT UNMAIL UNIQUE(EMAIL)) Insertamos algunas filas a nuestra tabla. INSERT INTO CLIENTEVALUES('43918908','LOSALIZOS 212','arzame@yahoo.es','8762412','ArmandoZamora','976457238'); 1 rows inserted Elaborado por :Luz Alondra Katt Morales http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints
  • 18. Constraints - UNIQUE INSERT INTO CLIENTEVALUES ('439874232','EL SOL 12', 'arzame@yahoo.es', '9878712', 'ArmandoSanchez', '976897638'); ERROR:Error starting at line 1 in command:INSERT INTO CLIENTEVALUES('439874232','EL SOL #212','arzame@yahoo.es','9878712','ArmandoSanchez','976897638') Error report:SQL Error: ORA-00001: restricción única (SYSTEM.XPKCLIENTE) violada00001. 00000 - "unique constraint (%s.%s) violated"*Cause: An UPDATE or INSERT statement attempted to insert a duplicatekey. For Trusted Oracle configured in DBMS MAC mode, you may seethis message if a duplicate entry exists at a different level.*Action: Either remove the unique restriction or do not insert the key Elaborado por :Luz Alondra Katt Morales http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints