Restricciones bd

8,211 views

Published on

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,211
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
202
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Restricciones bd

  1. 1. 3. Restricciones de las Bases deDatos 3.1 Tipos de restricciones de integridad. 3.2 Uso de restricciones. 3.3 Caso de pruebas para restricciones.
  2. 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. 3. Definición Entidad Dominio Referencial Definida por el usuarioElaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
  4. 4. Integridad de EntidadLa integridad de entidad define una fila como entidad única para una tabladeterminada. La integridad de entidad exige la integridad de las columnas delos identificadores o la clave principal de una tabla, mediante índices yrestricciones UNIQUE, o restricciones PRIMARY KEY.En esta no está permitido que algún componente de la clave primaria aceptevalores 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. 5. Integridad de Entidad - unicidadLa restricción UNIQUE asegura que todos los valores en una columna seandistintos.Por ejemplo, en la siguiente instrucción,CREATE TABLE Customer(SID integer Unique,Last_Name varchar (30),First_Name varchar(30));DLa columna “SID” no puede incluir valores duplicados, mientras dicharestricció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. 6. Integridad de Entidad – Clave PrimariaMySQL: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. 7. Integridad de DominioLa integridad de dominio viene dada por la validez de las entradas para unacolumna determinada. Puede exigir la integridad de dominio para restringir eltipo mediante tipos de datos, el formato mediante reglas y restriccionesCHECK, o el intervalo de valores posibles mediante restricciones FOREIGNKEY, restricciones CHECK, definiciones DEFAULT, definiciones NOT NULL yreglas. 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 caracteresElaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
  8. 8. Integridad de Dominio – No nuloNOT NULLEn forma predeterminada, una columna puede ser NULL. Si no desea permitirun valor NULL en una columna, querrá colocar una restricción en esta columnaespecificando 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. 9. Integridad de Dominio – CheckLa restricción CHECK asegura que todos los valores en una columna cumplanciertas 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. 10. Integridad de Dominio – Llave ForaneaMySQL: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. 11. Integridad Referencialprotege las relaciones definidas entre las tablas cuando se crean o se eliminanfilas. La integridad referencial garantiza que los valores de clave seancoherentes en las distintas tablas. Para conseguir esa coherencia, es precisoque no haya referencias a valores inexistentes y que, si cambia el valor de unaclave, todas las referencias a ella se cambien en consecuencia en toda la basede 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. 12. Integridad ReferencialPor ejemplo, en las tablas Sales.SalesOrderDetail y Production.Product de labase de datos AdventureWorks2008R2, la integridad referencial se basa en larelación entre la clave externa (ProductID) de la tabla Sales.SalesOrderDetail yla clave principal (ProductID) de la tabla Production.Product. Esta relacióngarantiza que un pedido de ventas no pueda nunca hacer referencia a unproducto que no existe en la tabla Production.Product.Elaborado por :Luz Alondra Katt Morales http://msdn.microsoft.com/es-es/library/ms184276.aspx
  13. 13. Integridad definida por el usuarioLa integridad definida por el usuario permite definir reglas de empresa específicasque no pertenecen a ninguna otra categoría de integridad. Todas las categoríasde integridad admiten la integridad definida por el usuario. Esto incluye todas lasrestricciones 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. 14. ConstraintsCREATE 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. 15. Constraints – NOT NULLName Null TypeCATEGORIAID NOT NULL CHAR (18)UBICACIÓN CHAR (18)NOMBRECATEGORÍA CHAR(18)Modificamos la restricción de la tabla.ALTER TABLE CATEGORIAMODIFY(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. 16. ConstraintsInsertamos 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:2Column:15Error report:SQLError: ORA-00936: falta una expresión00936. 00000 - "missingexpression"*Cause:*Action:Elaborado por :Luz Alondra Katt Morales http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints
  17. 17. Constraints - UNIQUEName Null TypeRUCDNICTE 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 EmailyRazonSocial.ALTER TABLE CLIENTEMODIFY (CONSTRAINT UNMAIL UNIQUE(EMAIL))Insertamos algunas filas a nuestra tabla.INSERT INTO CLIENTEVALUES(43918908,LOSALIZOS212,arzame@yahoo.es,8762412,ArmandoZamora,976457238);1 rows insertedElaborado por :Luz Alondra Katt Morales http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints
  18. 18. Constraints - UNIQUEINSERT INTO CLIENTEVALUES(439874232,EL SOL 12, arzame@yahoo.es, 9878712, ArmandoSanchez,976897638);ERROR:Error starting at line 1 in command:INSERT INTOCLIENTEVALUES(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: AnUPDATE or INSERT statement attempted to insert a duplicatekey.For Trusted Oracle configured in DBMS MAC mode, you may seethis message ifa duplicate entry exists at a different level.*Action: Either remove the uniquerestriction or do not insert the key Elaborado por :Luz Alondra Katt Morales http://es.scribd.com/doc/13991883/Creacion-y-Uso-de-Constraints

×