SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
Implementación de la integridad
 de datos




Contenido

Introducción                            1
Tipos de integridad de datos             2
Exigir integridad de los datos           3
Definición de restricciones              4
Tipos de restricciones                   9
Deshabilitación de restricciones        18
Uso de valores predeterminados
y reglas                                23
Decisión del método de implementación
que va a utilizar                       25
Implementación de la integridad de datos                                                                       i



Notas para el instructor
                             Este módulo proporciona a los alumnos una introducción a los conceptos
                             relativos a la integridad de los datos, incluidos los métodos disponibles para
                             exigir dicha integridad. El módulo presenta a continuación las restricciones,
                             que constituyen el método principal para asegurar la integridad de los datos.
                             También se ilustran varios tipos de restricciones. La creación y la
                             implementación de las restricciones se describe en detalle, así como los
                             medios para deshabilitar las restricciones cuando sea necesario.
                             Los valores predeterminados y las reglas se describen como métodos
                             alternativos para implementar la integridad de los datos, aunque el énfasis se
                             mantiene en las restricciones. El módulo concluye con la comparación de los
                             diferentes métodos para conseguir la integridad de los datos.
                             En la práctica, los alumnos definen restricciones DEFAULT, CHECK,
                             PRIMARY KEY y FOREIGN KEY.
                             Después de completar este módulo, los alumnos serán capaces de:
                                 Describir los tipos de integridad de datos.
                                 Describir los métodos para implementar la integridad de datos.
                                 Determinar qué restricción utilizar y crear restricciones.
                                 Definir y utilizar las restricciones DEFAULT, CHECK, PRIMARY KEY,
                                 UNIQUE y FOREIGN KEY.
                                 Deshabilitar restricciones.
                                 Describir y utilizar valores predeterminados y reglas.
                                 Determinar los métodos que se van a utilizar para implementar la integridad
                                 de los datos.
Implementación de la integridad de datos                                                                    1



Introducción
 Objetivo del tema
 Proporcionar una introduc-
 ción a los temas y objetivos               Tipos de integridad de datos
 del módulo.
 Explicación previa                         Exigir la integridad de los datos
 En este módulo aprenderá                   Definición de restricciones
 acerca de los distintos tipos
 de integridad de datos y las               Tipos de restricciones
 características que los
 posibilitan.                               Deshabilitación de restricciones
                                            Uso de valores predeterminados y reglas
                                            Decisión del método de implementación que va a
                                            utilizar




                                 Este módulo comienza con una introducción a los conceptos relativos a la
                                 integridad de los datos, incluidos los métodos disponibles para exigir dicha
                                 integridad. El módulo presenta a continuación las restricciones, que constituyen
                                 el método clave para asegurar la integridad de los datos, y los diversos tipos de
                                 restricciones. La creación y la implementación de las restricciones se describe
                                 en detalle, así como los medios para deshabilitar las restricciones cuando sea
                                 necesario.
                                 Los valores predeterminados y las reglas se describen como métodos
                                 alternativos para implementar la integridad de los datos, aunque el énfasis
                                 se mantiene en las restricciones. El módulo concluye con la comparación de
                                 los diferentes métodos para conseguir la integridad de los datos.
                                 Después de realizar esta práctica, el alumno será capaz de:
                                    Describir los tipos de integridad de datos.
                                    Describir los métodos para implementar la integridad de datos.
                                    Determinar qué restricción utilizar y crear restricciones.
                                    Definir y utilizar las restricciones DEFAULT, CHECK, PRIMARY KEY,
                                    UNIQUE y FOREIGN KEY.
                                    Deshabilitar la comprobación de restricciones.
                                    Describir y utilizar valores predeterminados y reglas.
                                    Determinar los métodos que se van a utilizar para implementar la integridad
                                    de los datos.
Implementación de la integridad de datos                                                                       2


Tipos de integridad de datos
 Objetivo del tema                      Integridad de dominio
 Presentar los distintos tipos                 (columnas)
 de integridad de datos.
 Explicación previa
 Un paso importante en
 el diseño de una base de
 datos es decidir la mejor
 forma de implementar la                                               Integridad de entidad (filas)
 integridad de los datos.
 La integridad de los
 datos se clasifica en
 tres categorías.



                                                                    Integridad referencial
                                                                          (entre tablas)




                                 Un paso importante en el diseño de una base de datos es decidir la mejor forma
                                 de implementar la integridad de los datos. La integridad de los datos hace
                                 referencia a la coherencia y la precisión de los datos que están almacenados en
                                 una base de datos. Los diferentes tipos de integridad de datos son los siguientes.

 Sugerencia                      Integridad de dominio
 Los tipos de integridad
                                 La integridad de dominio (o columna) especifica un conjunto de valores de
 de datos a los que se hace
 referencia aquí representan
                                 datos que son válidos para una columna y determina si se permiten valores
 el diseño básico de las         nulos. La integridad de dominio se suele implementar mediante el uso de
 bases de datos relacionales.    comprobaciones de validez y, también, mediante la restricción del tipo de datos,
 Explique los conceptos          el formato o el intervalo de los valores posibles permitidos en una columna.
 de forma general. Puede
 aportar un ejemplo con la
 base de datos Northwind.
                                 Integridad de entidad
                                 La integridad de entidad (o tabla) requiere que todas las filas de una tabla
                                 tengan un identificador exclusivo, conocido como clave principal. El que se
                                 pueda modificar el valor de la clave principal o eliminar la fila entera depende
                                 del nivel de integridad requerido entre la clave principal y cualquier otra tabla.

                                 Integridad referencial
                                 La integridad referencial asegura que siempre se mantienen las relaciones
                                 entre las claves principales (en la tabla a la que se hace referencia) y las claves
                                 externas (en las tablas que hacen referencia). No se puede eliminar una fila de
                                 una tabla a la que se hace referencia, ni se puede modificar la clave principal,
                                 si una clave externa hace referencia a la fila, salvo que se permita la acción en
                                 cascada. Puede definir relaciones de integridad referencial dentro de la misma
                                 tabla o entre tablas diferentes.
Implementación de la integridad de datos                                                                 3


Exigir integridad de los datos
 Objetivo del tema
 Presentar la forma en que                 Integridad de datos declarativa
 SQL Server implementa la
 integridad de los datos.                     Los criterios se definen en la definición del objeto
 Explicación previa                           Asegurada automáticamente por SQL Server
 Puede conseguir la
 integridad de los datos                      Implementada mediante restricciones, valores
 mediante dos métodos.                        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



                              Puede conseguir la integridad de los datos mediante dos métodos: integridad de
                              datos declarativa o integridad de datos procedimental.

                              Integridad de datos declarativa
                              Con la integridad declarativa, se definen los criterios que los datos tienen
                              que cumplir como parte de la definición de un objeto y, después, Microsoft®
                              SQL Server™ versión 2000 asegura automáticamente que los datos cumplan
                              dichos criterios. El método preferido para implementar la integridad de datos
                              básica es la integridad declarativa. Tenga en cuenta los hechos siguientes acerca
                              del método declarativo:
                                  La integridad declarativa se declara como parte de la definición de la base
                                  de datos, mediante el uso de restricciones declarativas que se definen
                                  directamente en las tablas y las columnas.
                                  Implemente la integridad declarativa mediante la utilización de
                                  restricciones, valores predeterminados y reglas.

 Sugerencia                   Integridad de datos procedimental
 Mencione que en este
                              Con la integridad procedimental se escriben secuencias de comandos que
 módulo sólo se tratan
 las características de la
                              definen los criterios que los datos tienen que cumplir y que aseguran que
 integridad declarativa:      dichos criterios se cumplen. Debe limitar el uso de la integridad procedimental
 restricciones, valores       a situaciones excepcionales y a aquellas con una lógica complicada. Por
 predeterminados y reglas.    ejemplo, utilice la integridad procedimental cuando desee implementar una
 Los desencadenadores y       eliminación en cascada. Los hechos siguientes se aplican a la integridad
 los procedimientos           procedimental:
 almacenados se tratan en
 módulos siguientes.              La integridad procedimental se puede implementar en el cliente o en el
                                  servidor mediante otros lenguajes y herramientas de programación.
                                  Implemente la integridad procedimental utilizando desencadenadores y
                                  procedimientos almacenados.
Implementación de la integridad de datos                                                                  4


       Definición de restricciones
 Objetivo del tema
 Presentar la implementación
 de la integridad de datos
 con restricciones.                        Determinación del tipo de restricción que se va a utilizar
 Explicación previa                        Creación de restricciones
 Las restricciones son el
 método más adecuado                       Consideraciones para el uso de restricciones
 para implementar la
 integridad de los datos.




                               Las restricciones son el método más adecuado para conseguir la integridad de
                               los datos. En esta sección se describe cómo determinar el tipo de restricción
                               que se tiene que utilizar, qué tipo de integridad de datos implementa cada tipo
                               de restricción y cómo definir las restricciones.
Implementación de la integridad de datos                                                                        5


Determinación del tipo de restricción que se va a utilizar
 Objetivo del tema
 Presentar los distintos
 tipos de restricciones y
                                     Tipo de integridad
                                     Tipo de integridad                   Tipo de restricción
                                                                          Tipo de restricción
 cómo utilizarlas para
 implementar la integridad                                                DEFAULT
                                                                          DEFAULT
 de datos.
                                     Dominio
                                     Dominio                              CHECK
                                                                          CHECK
 Explicación previa                                                       REFERENTIAL
                                                                          REFERENTIAL
 Diferentes tipos de restric-
 ciones aseguran que los                                                  PRIMARY KEY
                                                                          PRIMARY KEY
                                     Entidad
                                     Entidad
 valores que se escriban                                                  UNIQUE
                                                                          UNIQUE
 en los datos de las                                                      FOREIGN KEY
                                                                          FOREIGN KEY
 columnas son válidos y              Referencial
                                     Referencial                          CHECK
                                                                          CHECK
 que se mantienen las
 relaciones entre las tablas.




                                Las restricciones son un método estándar ANSI para implementar la integridad
 Punto clave                    de los datos. Cada tipo de integridad de datos (dominio, entidad y referencial)
 Haga énfasis en que las
 restricciones cumplen el
                                se implementa con tipos de restricciones diferentes. Las restricciones aseguran
 estándar ANSI.                 que los datos que se escriben en las columnas sean válidos y que se mantengan
                                las relaciones entre las tablas. La tabla siguiente describe los diferentes tipos de
                                restricciones.
                                Tipo de        Tipo de
                                integridad     restricción        Descripción

                                Dominio        DEFAULT            Especifica el valor que se proporciona para la
                                                                  columna cuando no se especifica explícitamente
                                                                  en una instrucción INSERT.
                                               CHECK              Especifica los valores de los datos que se aceptan
                                                                  en una columna.
                                               REFERENTIAL        Especifica los valores de datos que se aceptan
                                                                  como actualización en función de los valores de
                                                                  una columna de otra tabla.
                                Entidad        PRIMARY KEY        Identifica de forma exclusiva cada una de las filas;
                                                                  asegura que los usuarios no escriban valores
                                                                  duplicados y que se cree un índice para aumentar
                                                                  el rendimiento. No se permiten valores nulos.
                                               UNIQUE             Impide la duplicación de claves alternativas (no
                                                                  principales) y asegura que se cree un índice para
                                                                  aumentar el rendimiento. Se permiten valores
                                                                  nulos.
                                Referencial    FOREIGN KEY        Define una columna o combinación de columnas
                                                                  cuyos valores coinciden con la clave principal de
                                                                  la misma u otra tabla.
                                               CHECK              Especifica los valores de los datos que se aceptan
                                                                  en una columna en función de los valores de otras
                                                                  columnas de la misma tabla.
Implementación de la integridad de datos                                                                  6


Creación de restricciones
 Objetivo del tema
 Presentar la sintaxis para
 definir restricciones.
 Explicación previa                        Utilizar CREATE TABLE o ALTER TABLE
 Las restricciones se                      Puede agregar restricciones a una tabla con datos
 implementan mediante
 la instrucción CREATE
                                           existentes
 TABLE o ALTER TABLE.                      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




                               Las restricciones se crean mediante la instrucción CREATE TABLE o
                               ALTER TABLE.
                               Puede agregar restricciones a una tabla con datos existentes y puede aplicar
 Sugerencia                    restricciones a una sola columna o a varias columnas:
 Destaque que el término
 “restricción de tabla” hace      Si la restricción se aplica a una sola columna, se llama restricción
 referencia a cualquier           de columna.
 restricción de varias
 columnas.                        Si la restricción hace referencia a varias columnas, se llama restricción
                                  de tabla, incluso si no hace referencia a todas las columnas de la tabla.

Sintaxis parcial               CREATE TABLE Tabla
                                 ( { < definiciónColumna >
                                  | < restricciónTabla > } [ ,...n ])
                               < definiciónColumna > ::= { columnatipoDeDatos }
                                  [ [ DEFAULT expresiónConstante ]
                                  [ < restricciónColumna > ] [ ,..n]
                               < restricciónColumna > ::=
 Sugerencias                    [ CONSTRAINT nombreRestricción ]
 Resalte que la sintaxis se
 divide en restricciones de
                                      | [ { PRIMARY KEY | UNIQUE }
 columna y de tabla.                       [ CLUSTERED | NONCLUSTERED ] ]
                                  | [ [ FOREIGN KEY ]
 Aconseje a los alumnos que
 creen primero la tabla base
                                          REFERENCES tablaRef [ ( columnaRef ) ]
 y después agreguen las                   [ ON DELETE { CASCADE | NO ACTION } ]
 restricciones, lo que                    [ ON UPDATE { CASCADE | NO ACTION } ]]
 simplifica el proceso de              | CHECK ( expresiónLógica ) }
 definición de las tablas.
Implementación de la integridad de datos                                                               7


                              < restricciónTabla > ::=
                                [ CONSTRAINT nombreRestricción ]
                                 { [ { PRIMARY KEY | UNIQUE }
                                     [CLUSTERED | NONCLUSTERED]
                                     { ( columna [ ASC | DESC ] [ ,...n ] ) } ]
                                 | FOREIGN KEY
                                     [ ( columna [ ,...n ] ) ]
                                     REFERENCES tablaRef [ ( columnaRef [ ,...n ] ) ]
                                     [ ON DELETE { CASCADE | NO ACTION } ]
                                     [ ON UPDATE { CASCADE | NO ACTION } ]
                                 | CHECK ( condicionesBúsqueda ) }
Ejemplo                       Este ejemplo crea la tabla Products, define columnas y define restricciones de
                              columna y de tabla.
USE northwind
CREATE TABLE dbo.Products
(
   ProductID      int IDENTITY (1,1) NOT NULL,
   ProductName    nvarchar (40) NOT NULL,
   SupplierID     int      NULL,
   CategoryID     int      NULL,
   QuantityPerUnit nvarchar (20) NULL,
   UnitPrice      money    NULL     CONSTRAINT                 DF_Products_UnitPrice DEFAULT(0),
   UnitsInStock   smallint NULL     CONSTRAINT                 DF_Products_UnitsInStock DEFAULT(0),
   UnitsOnOrder   smallint NULL     CONSTRAINT                 DF_Products_UnitsOnOrder DEFAULT(0),
   ReorderLevel   smallint NULL     CONSTRAINT                 DF_Products_ReorderLevel DEFAULT(0),
   Discontinued   bit      NOT NULL CONSTRAINT                 DF_Products_Discontinued DEFAULT(0),

     CONSTRAINT PK_Products PRIMARY KEY CLUSTERED (ProductID),

     CONSTRAINT FK_Products_Categories FOREIGN              KEY (CategoryID)
        REFERENCES dbo.Categories (CategoryID)              ON UPDATE CASCADE,
     CONSTRAINT FK_Products_Suppliers FOREIGN               KEY (SupplierID)
        REFERENCES dbo.Suppliers (SupplierID)               ON DELETE CASCADE,

     CONSTRAINT     CK_Products_UnitPrice        CHECK   (UnitPrice >=    0),
     CONSTRAINT     CK_ReorderLevel              CHECK   (ReorderLevel    >= 0),
     CONSTRAINT     CK_UnitsInStock              CHECK   (UnitsInStock    >= 0),
     CONSTRAINT     CK_UnitsOnOrder              CHECK   (UnitsOnOrder    >= 0)
)
GO
Implementación de la integridad de datos                                                                   8


Consideraciones para el uso de restricciones
 Objetivo del tema
 Describir algunas de las
 consideraciones para utilizar
 restricciones.                             Pueden cambiarse sin volver a crear una tabla
 Explicación previa                         Requieren comprobación de errores en aplicaciones y
 Considere estos hechos
 cuando implemente o
                                            transacciones
 modifique restricciones.                   Comprueban los datos existentes




                                 Considere estos hechos cuando implemente o modifique restricciones:
 Sugerencia
 Demuestre que SQL Server           Puede crear, modificar y eliminar restricciones sin tener que eliminar y
 crea nombres de restricción        volver a crear una tabla.
 complicados, generados por
 el sistema.                        Tiene que generar lógica de control de errores en sus aplicaciones y
                                    transacciones para probar si se ha infringido una restricción.
                                    SQL Server comprueba los datos existentes cuando se agrega una
                                    restricción a una tabla.

                                 Tiene que especificar los nombres de las restricciones cuando las cree, puesto
                                 que SQL Server proporciona nombres complicados, generados por el sistema.
                                 Los nombres tienen que ser exclusivos para el propietario del objeto de la base
                                 de datos y seguir las reglas de los identificadores de SQL Server.
                                 Para obtener ayuda acerca de las restricciones, ejecute el procedimiento
                                 almacenado del sistema sp_helpconstraint o sp_help, o consulte las vistas del
                                 esquema de información, como check_constraints, referential_constraints y
                                 table_constraints.
                                 Las tablas del sistema siguientes almacenan las definiciones de las
                                 restricciones: syscomments, sysreferences y sysconstraints.
Implementación de la integridad de datos                                                                 9


       Tipos de restricciones
 Objetivo del tema
 Describir los tipos de
 restricciones.
 Explicación previa                        Restricciones DEFAULT
 Esta sección describe los                 Restricciones CHECK
 tipos de restricciones.
                                           Restricciones PRIMARY KEY
                                           Restricciones UNIQUE
                                           Restricciones FOREIGN KEY
                                           Integridad referencial en cascada




                              Esta sección describe los tipos de restricciones. Cada restricción viene definida
                              por su sintaxis, ejemplos y consideraciones de uso.
Implementación de la integridad de datos                                                              10


Restricciones DEFAULT
 Objetivo del tema
 Presentar la restricción
                                           Sólo se aplica a las instrucciones INSERT
 DEFAULT.
 Explicación previa                        Sólo una restricción DEFAULT por columna
 La restricción DEFAULT
 implementa la integridad                  No se puede utilizar con la propiedad IDENTITY o el tipo
 de dominio.                               de datos rowversion
                                           Permite que se especifiquen algunos valores
                                           proporcionados por el sistema
                                    USE Northwind
                                     USE Northwind
                                    ALTER TABLE dbo.Customers
                                     ALTER TABLE dbo.Customers
                                    ADD
                                     ADD
                                    CONSTRAINT DF_contactname DEFAULT 'UNKNOWN'
                                     CONSTRAINT DF_contactname DEFAULT 'UNKNOWN'
                                    FOR ContactName
                                     FOR ContactName




                              La restricción DEFAULT escribe un valor en una columna cuando no se
                              especifica en las instrucciones INSERT. Las restricciones DEFAULT
                              implementan la integridad de dominio.
Sintaxis parcial              [CONSTRAINT nombreRestricción]
                                DEFAULT expresiónConstante
Ejemplo                       En este ejemplo se agrega una restricción DEFAULT que inserta el valor
                              UNKNOWN en la tabla dbo.Customers si no se proporciona el nombre
                              de contacto.
                              USE Northwind
                              ALTER TABLE dbo.Customers
                              ADD
                              CONSTRAINT DF_contactname DEFAULT 'UNKNOWN' FOR ContactName

                              Considere los hechos siguientes cuando aplique una restricción DEFAULT:
                                  La restricción comprueba los datos existentes en la tabla.
                                  Sólo se aplica a las instrucciones INSERT.
                                  Sólo se puede definir una restricción DEFAULT por cada columna.
                                  No se puede aplicar a columnas con la propiedad Identity o a columnas con
                                  el tipo de datos rowversion.
                                  Permite que se especifiquen algunos valores proporcionados por el
                                  sistema (USER, CURRENT_USER, SESSION_USER, SYSTEM_USER
                                  o CURRENT_TIMESTAMP) en lugar de valores definidos por el usuario.
                                  Dichos valores proporcionados por el sistema pueden ser útiles para obtener
                                  un registro de los usuarios que insertan los datos.
Implementación de la integridad de datos                                                                11


Restricciones CHECK
 Objetivo del tema
 Presentar la restricción                  Se utilizan con las instrucciones INSERT y UPDATE
 CHECK.
                                           Pueden hacer referencia a otras columnas en la misma
 Explicación previa                        tabla
 Una restricción CHECK
 restringe los datos escritos              No pueden:
 en una columna a valores
 específicos.                                 Utilizarse con el tipo de datos rowversion
                                              Contener subconsultas
                                   USE Northwind
                                   USE Northwind
                                   ALTER TABLE dbo.Employees
                                   ALTER TABLE dbo.Employees
                                   ADD
                                   ADD
                                   CONSTRAINT CK_birthdate
                                   CONSTRAINT CK_birthdate
                                   CHECK (BirthDate > '01-01-1900' AND BirthDate <
                                   CHECK (BirthDate > '01-01-1900' AND BirthDate <
                                   getdate())
                                   getdate())




                                La restricción CHECK restringe los datos que los usuarios pueden escribir en
                                una columna particular a unos valores específicos. Las restricciones CHECK
                                son similares a las cláusulas WHERE donde se pueden especificar las
                                condiciones bajo las que se aceptan los datos.
Sintaxis parcial                [CONSTRAINT nombreRestricción]
                                 CHECK (expresiónLógica)
Ejemplo                         Este ejemplo agrega una restricción CHECK para garantizar que una fecha de
                                nacimiento cumpla un intervalo aceptable de fechas.
                                USE Northwind
                                ALTER TABLE dbo.Employees
                                ADD
                                CONSTRAINT CK_birthdate
                                CHECK (BirthDate > '01-01-1900' AND BirthDate < getdate())

                                Considere los hechos siguientes cuando aplique una restricción CHECK:
                                   La restricción comprueba los datos cada vez que se ejecuta una instrucción
                                   INSERT o UPDATE.
                                   Puede hacer referencia a otras columnas de la misma tabla.
                                   Por ejemplo, una columna salary podría hacer referencia a un valor de una
                                   columna job_grade.
                                   No se puede aplicar a columnas con el tipo de datos rowversion.
                                   No puede contener subconsultas.
                                   Si alguno de los datos infringe la restricción CHECK, puede ejecutar la
                                   instrucción DBCC CHECKCONSTRAINTS para ver las filas infractoras.
Implementación de la integridad de datos                                                                12


Restricciones PRIMARY KEY
 Objetivo del tema
 Presentar las restricciones
 PRIMARY KEY.
 Explicación previa                        Sólo una restricción PRIMARY KEY por tabla
 Las restricciones PRIMARY                 Los valores deben ser exclusivos
 KEY implementan la
 integridad de entidad.                    No se permiten valores nulos
                                           Crea un índice exclusivo en las columnas especificadas

                                    USE Northwind
                                     USE Northwind
                                    ALTER TABLE dbo.Customers
                                     ALTER TABLE dbo.Customers
                                    ADD
                                     ADD
                                    CONSTRAINT PK_Customers
                                     CONSTRAINT PK_Customers
                                      PRIMARY KEY NONCLUSTERED (CustomerID)
                                       PRIMARY KEY NONCLUSTERED (CustomerID)




                               La restricción PRIMARY KEY define una clave principal en una tabla para
                               identificar de forma exclusiva cada una de sus filas. Implementa la integridad
                               de entidad.
Sintaxis parcial               [CONSTRAINT nombreRestricción]
                                 PRIMARY KEY [CLUSTERED | NONCLUSTERED]
                                   { ( columna[,...n] ) }
Ejemplo                        En este ejemplo se agrega una restricción que especifica que la clave principal
                               de la tabla dbo.Customers es la identificación del cliente e indica que se va a
                               crear un índice no agrupado para implementar la restricción.
                               USE northwind
                               ALTER TABLE dbo.Customers
                               ADD
                               CONSTRAINT PK_Customers
                                  PRIMARY KEY NONCLUSTERED (CustomerID)

                               Considere los hechos siguientes cuando aplique una restricción
 Puntos clave                  PRIMARY KEY:
 La restricción PRIMARY
 KEY siempre es exclusiva y       Sólo se puede definir una restricción PRIMARY KEY por tabla.
 no permite valores nulos.
                                  Los valores escritos tienen que ser exclusivos.
 La restricción PRIMARY           No se permiten valores nulos.
 KEY siempre crea un índice.
                                  Crea un índice exclusivo en las columnas especificadas. Puede especificar
                                  un índice agrupado o un índice no agrupado (el agrupado es el tipo
                                  predeterminado si no existe anteriormente).

                               Nota El índice creado para la restricción PRIMARY KEY no se puede
                               eliminar directamente. Se elimina cuando se quita la restricción.
Implementación de la integridad de datos                                                               13


Restricciones UNIQUE
 Objetivo del tema
 Presentar las restricciones
 UNIQUE.
 Explicación previa                        Permite un valor nulo
 La restricción UNIQUE                     Permite varias restricciones UNIQUE en una tabla
 especifica que dos filas de
 una columna no pueden                     Definidas con una o más columnas
 tener el mismo valor.
                                           Exigida con un índice único

                                    USE Northwind
                                     USE Northwind
                                    ALTER TABLE dbo.Suppliers
                                     ALTER TABLE dbo.Suppliers
                                    ADD
                                     ADD
                                    CONSTRAINT U_CompanyName
                                     CONSTRAINT U_CompanyName
                                      UNIQUE NONCLUSTERED (CompanyName)
                                       UNIQUE NONCLUSTERED (CompanyName)




                               La restricción UNIQUE especifica que dos filas de una columna no pueden
                               tener el mismo valor. Esta restricción implementa la integridad de entidad con
                               un índice único.
                               La restricción UNIQUE es útil cuando ya se tiene una clave principal, como un
                               número de empleado, pero se desea garantizar que otros identificadores, como
                               el número del permiso de conducir de un empleado, también sean exclusivos.
Sintaxis parcial               [CONSTRAINT nombreRestricción]
                                 UNIQUE [CLUSTERED | NONCLUSTERED]
                                   { ( columna[,...n] ) }
Ejemplo                        Este ejemplo crea una restricción UNIQUE sobre la columna company name
                               de la tabla dbo.Suppliers.
                               USE northwind
                               ALTER TABLE dbo.Suppliers
                               ADD
                               CONSTRAINT U_CompanyName
                                  UNIQUE NONCLUSTERED (CompanyName)

                               Considere los hechos siguientes cuando aplique una restricción UNIQUE:
                                  Puede permitir un valor nulo.
                                  Puede aplicar varias restricciones UNIQUE en una misma tabla.
                                  Puede aplicar la restricción UNIQUE a una o varias columnas que tengan
                                  que tener valores exclusivos y no sean la clave principal de una tabla.
                                  La restricción UNIQUE se implementa mediante la creación de un índice
                                  exclusivo en la columna o columnas especificadas.
Implementación de la integridad de datos                                                               14


Restricciones FOREIGN KEY
 Objetivo del tema                     Deben hacer referencia a una restricción PRIMARY KEY o
 Presentar la restricción
                                       UNIQUE
 FOREIGN KEY.
 Explicación previa                    Proporcionan integridad referencial de una o de varias
 La restricción FOREIGN                columnas
 KEY implementa la
 integridad referencial.               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 Northwind
                                     USE Northwind
                                    ALTER TABLE dbo.Orders
                                     ALTER TABLE dbo.Orders
                                    ADD CONSTRAINT FK_Orders_Customers
                                     ADD CONSTRAINT FK_Orders_Customers
                                      FOREIGN KEY (CustomerID)
                                       FOREIGN KEY (CustomerID)
                                      REFERENCES dbo.Customers(CustomerID)
                                       REFERENCES dbo.Customers(CustomerID)



                              La restricción FOREIGN KEY implementa la integridad referencial. La
                              restricción FOREIGN KEY define una referencia a una columna con una
                              restricción PRIMARY KEY o UNIQUE en la misma o en otra tabla.
Sintaxis parcial              [CONSTRAINT nombreRestricción]
                                [FOREIGN KEY] [(columna[,…n])]
                                   REFERENCES tablaRef [(columnaRef [,…n])].
Ejemplo                       Este ejemplo utiliza una restricción FOREIGN KEY para garantizar que
                              la identificación del cliente de la tabla dbo.Orders esté asociada con una
                              identificación válida en la tabla dbo.Customers.
                              USE northwind
                              ALTER TABLE dbo.Orders
                              ADD CONSTRAINT FK_Orders_Customers
                                 FOREIGN KEY (CustomerID)
                                 REFERENCES dbo.Customers(CustomerID)
Implementación de la integridad de datos                                                                15


                              Considere los hechos y recomendaciones siguientes cuando aplique una
                              restricción FOREIGN KEY:
                                  Proporciona integridad referencial de una o de varias columnas.
                                  El número de columnas y los tipos de datos que se especifican en la
                                  instrucción FOREIGN KEY tienen que coincidir con el número de
                                  columnas y los tipos de datos de la cláusula REFERENCES.
                                  Al contrario que las restricciones PRIMARY KEY o UNIQUE, las
                                  restricciones FOREIGN KEY no crean índices automáticamente.
                                  Sin embargo, si la base de datos utiliza muchas combinaciones, tiene
                                  que crear un índice para que FOREIGN KEY aumente el rendimiento
                                  en las combinaciones.
                                  Para modificar los datos, los usuarios deben tener permisos SELECT o
                                  REFERENCES en las tablas a las que se hace referencia en la restricción
                                  FOREIGN KEY.
                                  Sólo se puede utilizar la cláusula REFERENCES sin la cláusula FOREIGN
                                  KEY cuando se hace referencia a una columna de la misma tabla.
Implementación de la integridad de datos                                                                16


Integridad referencial en cascada
 Objetivo del tema
 Describir la integridad          NINGUNA                             CASCADA
                                                                                    Customers
                                                                                    Customers
 referencial en cascada.          ACCIÓN Customers
                                          Customers
                                                                                    CustomerID (PK)
                                              CustomerID (PK)
 Explicación previa                1                                  1
 La integridad referencial             INSERT new
                                       INSERT new                         UPDATE CustomerID
                                                                          UPDATE CustomerID
 en cascada propaga                    CustomerID
                                       CustomerID
                                                                                             CASCADA
 automáticamente los                          Orders
                                              Orders
 cambios realizados a la                      CustomerID (FK)                       Orders
                                                                                    Orders
 base de datos.                    2                                               CustomerID (FK)
                                    UPDATE old
                                    UPDATE old
                                    CustomerID to new
                                    CustomerID to new
                                    CustomerID
                                    CustomerID
                                              Customers
                                              Customers
                                              CustomerID (PK)
                                   3
                                       DELETE old
                                       DELETE old
                                       CustomerID
                                       CustomerID




                              La restricción FOREIGN KEY incluye la opción CASCADE que permite que
                              cualquier cambio en un valor de columna que define una restricción UNIQUE o
                              PRIMARY KEY se propague automáticamente al valor de clave externa. Esta
                              acción se conoce como integridad referencial en cascada.
                              Las cláusulas REFERENCES de las instrucciones CREATE TABLE y ALTER
                              TABLE aceptan cláusulas ON DELETE y ON UPDATE. Estas cláusulas le
                              permiten especificar la opción CASCADE o NO ACTION.
Sintaxis parcial              [CONSTRAINT nombreRestricción]
                                [FOREIGN KEY] [(columna[,…n])]
                                   REFERENCES tablaRef [(columnaRef [,…n])].
                                   [ ON DELETE { CASCADE | NO ACTION } ]
                                   [ ON UPDATE { CASCADE | NO ACTION } ]
                              NO ACTION especifica que cualquier intento de eliminar o actualizar una
                              clave a la que hagan referencia claves externas en otras tablas genere un error
                              y el cambio se deshaga. NO ACTION es la opción predeterminada.
                              Si se selecciona CASCADE y se cambia una fila en la tabla primaria, la fila
                              correspondiente se cambia entonces en la tabla que hace referencia.
                              Por ejemplo, en la base de datos Northwind, la tabla Orders tiene una relación
                              referencial con la tabla Customers; específicamente, la clave externa
                              Orders.CustomerID hace referencia a la clave principal
                              Customers.CustomerID.
                              Si se ejecuta una instrucción UPDATE sobre la columna CustomerID de la
                              tabla Customers y se especifica una acción ON UPDATE CASCADE para
                              Orders.CustomerID, SQL Server busca una o varias filas dependientes en la
                              tabla Orders. Si encuentra alguna, actualiza las filas dependientes de la tabla
                              Orders, así como la fila a la que se hace referencia en la tabla Customers.
Implementación de la integridad de datos                                                          17


                              Considere estos factores al aplicar la opción CASCADE:
                                  Es posible combinar CASCADE y NO ACTION en tablas que mantengan
                                  relaciones referenciales. Si SQL Server encuentra NO ACTION, concluye
                                  y deshace las acciones CASCADE relacionadas.
                                  Cuando una instrucción DELETE provoca la combinación de las acciones
                                  CASCADE y NO ACTION, todas las acciones CASCADE se aplican antes
                                  de que SQL Server busque cualquier acción NO ACTION.
                                  CASCADE no se puede especificar para ninguna columna de clave externa
                                  o principal que se haya definido con una columna rowversion.
Implementación de la integridad de datos                                                                18


       Deshabilitación de restricciones
 Objetivo del tema
 Describir los métodos
 de deshabilitación de
 restricciones.                            Deshabilitación de la comprobación de las restricciones
 Explicación previa                        en los datos existentes
 Por motivos de rendimiento,
 algunas veces resulta
                                           Deshabilitación de la comprobación de las restricciones
 aconsejable deshabilitar                  al cargar datos nuevos
 restricciones.




                               Por motivos de rendimiento, algunas veces resulta aconsejable deshabilitar
                               restricciones. Por ejemplo, es más conveniente permitir que se procesen grandes
                               operaciones por lotes antes que habilitar restricciones. Esta sección describe el
                               modo de deshabilitar la comprobación de restricciones, tanto si va a crear una
                               nueva restricción o deshabilitar una existente.
Implementación de la integridad de datos                                                                     19


Deshabilitación de la comprobación de las restricciones en los
datos existentes
 Objetivo del tema
 Presentar cómo se
 deshabilitan las                          Se aplica a las restricciones CHECK y FOREIGN KEY
 restricciones.
                                           Utilice la opción WITH NOCHECK cuando agregue una
 Explicación previa                        restricción nueva
 Puede deshabilitar la
 comprobación de restric-                  Utilizar si los datos existentes no cambian
 ciones al agregar una
 restricción a una tabla.                  Se pueden cambiar los datos existentes antes de
                                           agregar restricciones
                                    USE Northwind
                                     USE Northwind
                                    ALTER TABLE dbo.Employees
                                     ALTER TABLE dbo.Employees
                                    WITH NOCHECK
                                     WITH NOCHECK
                                      ADD CONSTRAINT FK_Employees_Employees
                                       ADD CONSTRAINT FK_Employees_Employees
                                      FOREIGN KEY (ReportsTo)
                                       FOREIGN KEY (ReportsTo)
                                      REFERENCES dbo.Employees(EmployeeID)
                                       REFERENCES dbo.Employees(EmployeeID)




                              Cuando se define una restricción en una tabla que ya contiene datos,
                              SQL Server los comprueba automáticamente para confirmar que cumplen los
                              requisitos de la restricción. Sin embargo, puede deshabilitar la comprobación
                              de restricciones en los datos existentes al agregar una restricción a una tabla.
                              Considere las recomendaciones siguientes para deshabilitar la comprobación de
                              restricciones en los datos existentes:
                                  Sólo puede deshabilitar las restricciones CHECK y FOREIGN KEY.
                                  El resto de las restricciones se tienen que eliminar y volver a agregar.
                                  Para deshabilitar la comprobación de restricciones cuando se agrega una
                                  restricción CHECK o FOREIGN KEY a una tabla con datos existentes,
                                  incluya la opción WITH NOCHECK en la instrucción ALTER TABLE.
                                  Utilice la opción WITH NOCHECK si los datos existentes no van a
                                  cambiar. Los datos tienen que cumplir las restricciones CHECK si van a
                                  ser actualizados.
                                  Asegúrese de que deshabilitar la comprobación de la restricción es una
                                  acción apropiada. Puede ejecutar una consulta para cambiar los datos
                                  existentes antes de decidir agregar una restricción.
Implementación de la integridad de datos                                                               20


Sintaxis parcial              ALTER TABLE tabla
                               [WITH CHECK⏐WITH NOCHECK]
                               ADD CONSTRAINT restricción
                                  [FOREIGN KEY] [(columna[,…n])]
                                     REFERENCES tablaRef [(columnaRef [,…n])].
                                  [CHECK (condicionesBúsqueda)]
Ejemplo                       En este ejemplo, se agrega una restricción FOREIGN KEY que comprueba
                              que todos los empleados están asociados a un director válido. La restricción no
                              se implementa en los datos existentes en el momento en que se agrega.
                              USE northwind
                              ALTER TABLE dbo.Employees
                              WITH NOCHECK
                                 ADD CONSTRAINT FK_Employees_Employees
                                 FOREIGN KEY (ReportsTo)
                                 REFERENCES dbo.Employees(EmployeeID)
Implementación de la integridad de datos                                                                     21


Deshabilitación de la comprobación de las restricciones al cargar
datos nuevos
 Objetivo del tema
 Describir cómo se desha-
 bilita la comprobación de
 restricciones al cargar datos              Se aplica a las restricciones CHECK y FOREIGN KEY
 nuevos.
                                            Utilizar si:
 Explicación previa
 Esta característica se limita                  Los datos cumplen las restricciones
 a las restricciones CHECK
 y FOREIGN KEY.                                 Carga datos nuevos que no cumplen las restricciones

                                      USE Northwind
                                       USE Northwind
                                      ALTER TABLE dbo.Employees
                                       ALTER TABLE dbo.Employees
                                      NOCHECK
                                       NOCHECK
                                        CONSTRAINT FK_Employees_Employees
                                         CONSTRAINT FK_Employees_Employees




                                 Se puede deshabilitar la comprobación de restricciones CHECK y FOREIGN
                                 KEY existentes, de forma que sea posible modificar o agregar datos a una tabla
                                 sin comprobar la restricción.
                                 Para evitar los costos de la comprobación de las restricciones, puede que le
                                 interese deshabilitar las restricciones cuando:
                                    Ya esté seguro de que los datos cumplen las restricciones.
                                    Desee cargar datos que no cumplan las restricciones. Posteriormente,
                                    puede ejecutar consultas para modificar los datos y volver a habilitar
                                    las restricciones.

                                 Importante La deshabilitación de restricciones en una tabla no afecta a las
                                 restricciones de otras tablas que hagan referencia a la tabla original. Las
                                 actualizaciones de una tabla siguen pudiendo generar errores de infracción de
                                 restricciones.

                                 La habilitación de una restricción que ha estado deshabilitada requiere la
                                 ejecución de otra instrucción ALTER TABLE que contenga una cláusula
                                 CHECK o CHECK ALL.
Sintaxis parcial                 ALTER TABLE tabla
                                  {CHECK | NOCHECK} CONSTRAINT
                                  {ALL | restricción[,...n]}
Implementación de la integridad de datos                                                               22


Ejemplo                       Este ejemplo deshabilita la restricción FK_Employees_Employees. Se puede
                              volver a habilitar si se ejecuta otra instrucción ALTER TABLE con la cláusula
                              CHECK.
                              USE northwind
                              ALTER TABLE dbo.Employees
                              NOCHECK
                                 CONSTRAINT FK_Employees_Employees

                              Para determinar si una restricción está habilitada o deshabilitada en una tabla,
                              ejecute el procedimiento almacenado del sistema sp_help o utilice la propiedad
                              CnstIsDisabled de la función OBJECTPROPERTY.
Implementación de la integridad de datos                                                                  23


Uso de valores predeterminados y reglas
 Objetivo del tema                         Como objetos independientes:
 Especificar cómo se crean
 valores predeterminados y                     Se definen una vez
 reglas.
                                               Pueden vincularse a una o más columnas
 Explicación previa                            o a tipos de datos definidos por el usuario
 Los valores predetermi-
 nados y las reglas son dos           CREATE DEFAULT phone_no_default
                                       CREATE DEFAULT phone_no_default
 métodos adicionales para               AS '(000)000-0000'
                                         AS '(000)000-0000'
 implementar la integridad            GO
                                       GO
 de datos.                            EXEC sp_bindefault phone_no_default,
                                       EXEC sp_bindefault phone_no_default,
                                        'Customers.Phone'
                                         'Customers.Phone'

                                      CREATE RULE regioncode_rule
                                       CREATE RULE regioncode_rule
                                        AS @regioncode IN ('IA', 'IL', 'KS', 'MO')
                                         AS @regioncode IN ('IA', 'IL', 'KS', 'MO')
                                      GO
                                       GO
                                      EXEC sp_bindrule regioncode_rule,
                                       EXEC sp_bindrule regioncode_rule,
                                        'Customers.Region'
                                         'Customers.Region'



                                 Los valores predeterminados y las reglas son objetos que se pueden asociar con
                                 una o varias columnas o tipos de datos definidos por el usuario, lo que permite
                                 que se definan una sola vez y se utilicen varias veces. Un inconveniente del uso
                                 de valores predeterminados y reglas es que no cumplen el estándar ANSI.

                                 Creación de un valor predeterminado
                                 Si no se especifica un valor cuando se insertan datos, el valor predeterminado
                                 especifica el valor de la columna a la que el objeto está asociado. Considere
                                 estos hechos antes de crear valores predeterminados:
                                    Toda regla asociada a la columna y los tipos de datos valida el valor de un
 Punto clave                        valor predeterminado.
 No puede usar una restric-
 ción de valor predetermi-          Cualquier restricción CHECK sobre la columna debe validar el valor de un
 nado en una columna con            valor predeterminado.
 un tipo de datos definido por
 el usuario si ya hay un valor      No se puede crear una restricción DEFAULT en una columna que esté
 predeterminado asociado al         definida con un tipo de datos definido por el usuario si dicha columna o tipo
 tipo de datos o a la misma.        de datos ya tuvieran asociado un valor predeterminado.

Sintaxis                         CREATE DEFAULT predeterminado
                                  AS expresiónConstante

                                 Asociación de un valor predeterminado
                                 Después de crear un valor predeterminado, tiene que asociarlo a una columna
                                 o a un tipo de datos definido por el usuario mediante la ejecución del
                                 procedimiento almacenado del sistema sp_bindefault. Para deshacer dicha
                                 asociación, ejecute el procedimiento almacenado del sistema sp_unbindefault.
Implementación de la integridad de datos                                                                24


Ejemplo                       En este ejemplo se inserta un marcador de posición con el formato correcto para
                              el número de teléfono, hasta que se proporcione el número de teléfono real.
                              USE Northwind
                              GO
                              CREATE DEFAULT phone_no_default
                               AS '(000)000-0000'
                              GO
                              EXEC sp_bindefault phone_no_default, 'Customers.Phone'


                              Creación de una regla
                              Las reglas especifican los valores aceptables que se pueden insertar en una
                              columna. Garantizan que los datos se encuentran dentro de un intervalo de
                              valores especificado, coinciden con un patrón concreto o con las entradas
                              de una lista especificada. Tenga en cuenta estos hechos acerca de las reglas:
                                  La definición de una regla puede contener cualquier expresión válida para
                                  una cláusula WHERE.
                                  Una columna o un tipo de datos definido por el usuario sólo puede tener
                                  asociado una regla.

Sintaxis                      CREATE RULE regla
                               AS condición

                              Asociación de una regla
                              Después de crear una regla, tiene que asociarla a una columna o a un tipo
                              de datos definido por el usuario mediante la ejecución del procedimiento
                              almacenado del sistema sp_bindrule. Para deshacer la asociación de la regla,
                              ejecute el procedimiento almacenado del sistema sp_unbindrule.
Ejemplo                       En este ejemplo, la regla asegura que sólo se acepten los estados especificados.
                              USE Northwind
                              GO
                              CREATE RULE regioncode_rule
                               AS @regioncode IN ('IA', 'IL', 'KS', 'MO')
                              GO
                              EXEC sp_bindrule regioncode_rule, 'Customers.Region'


                              Eliminación de un valor predeterminado o una regla
                              La instrucción DROP quita un valor predeterminado o una regla de la base
                              de datos.
Sintaxis                      DROP DEFAULT predeterminado [,...n]
Sintaxis                      DROP RULE regla [, ...n]
Implementación de la integridad de datos                                                                    25


Decisión del método de implementación que va a utilizar
 Objetivo del tema
 Mostrar las ventajas y los
 inconvenientes de los
                                  Componente de
                                   Componente de                     Costos de               Antes o después
 distintos componentes                                 Funcionalidad Costos de               Antes o después
                                  integridad de datos Funcionalidad rendimiento              de la transacción
 de integridad de datos.           integridad de datos               rendimiento             de la transacción
 Explicación previa               Restricciones            Media           Baja              Antes
                                  Restricciones            Media           Baja              Antes
 Debe tener en cuenta la
 funcionalidad y los costos
                                  Valores predetermi-
 de rendimiento cuando             Valores predetermi- Baja
                                                       Baja                Baja
                                                                           Baja              Antes
                                                                                             Antes
 determine qué métodos va         nados y reglas
                                   nados y reglas
 a utilizar para implementar
 la integridad de datos.          Desencadenadores Alta
                                  Desencadenadores Alta                    Medio-alto
                                                                           Medio-alto        Después
                                                                                             Después

                                  Tipos de datos,
                                  Tipos de datos,          Baja
                                                           Baja            Baja
                                                                           Baja              Antes
                                                                                             Antes
                                  Null/Not Null
                                  Null/Not Null




                                Debe tener en cuenta la funcionalidad y los costos de rendimiento cuando
 Puntos clave                   determine qué métodos va a utilizar para implementar la integridad de datos.
 Utilice restricciones si
 es posible.                        Lo mejor es utilizar la integridad declarativa para la lógica de integridad
 Utilice valores predetermi-        fundamental, como al determinar los valores válidos y al mantener las
 nados y reglas si necesita
                                    relaciones entre las tablas.
 objetos independientes.
 Utilice desencadenadores           Si desea mantener datos redundantes complejos que no forman parte de una
 sólo cuando requiera una           relación de claves principales o externas, debe utilizar desencadenadores o
 lógica compleja.                   procedimientos almacenados.
                                    Sin embargo, como los desencadenadores no se activan hasta que tiene lugar
                                    una modificación, la comprobación de errores ocurre después de que la
                                    instrucción se termina. Cuando un desencadenador detecta una infracción,
                                    tiene que deshacer los cambios.

Componente de                                                                   Costos de       Antes o después de
integridad de datos Efecto                                        Funcionalidad rendimiento     la modificación
Restricciones            Se definen con la tabla y validan los    Media         Baja            Antes
                         datos antes de empezar la transacción,
                         lo que mejora el rendimiento.
Valores                  Implementan la integridad de los datos Baja            Baja            Antes
predeterminados          como objetos independientes que se
y reglas                 pueden asociar con una o varias tablas.
Desencadenadores         Proporcionan funcionalidad adicional, Alta             Medio alto      Después
                         como cascadas y lógica más compleja.                                   (excepto para
                         Las modificaciones se tienen que                                       desencadenadores
                         deshacer.                                                              INSTEAD OF)
Tipos de datos,          Proporcionan el nivel más bajo de        Baja          Baja            Antes
Null/Not Null            integridad de datos. Se implementan
                         para cada columna cuando se crea una
                         tabla. Los datos se validan antes de que
                         comience una transacción.

Más contenido relacionado

La actualidad más candente

Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)katherine revelo gomez
 
Clase 3 Modelo Entidad Relacion
Clase 3   Modelo Entidad   RelacionClase 3   Modelo Entidad   Relacion
Clase 3 Modelo Entidad Relacionoswchavez
 
Software caja negra y caja blanca
Software caja negra y caja blancaSoftware caja negra y caja blanca
Software caja negra y caja blancaStudentPc
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Giancarlo Aguilar
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relaciónjosecuartas
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
 
Curso Java Inicial 5 Relaciones Entre Objetos
Curso Java Inicial   5 Relaciones Entre ObjetosCurso Java Inicial   5 Relaciones Entre Objetos
Curso Java Inicial 5 Relaciones Entre ObjetosEmilio Aviles Avila
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicaslandeta_p
 
Manual de conexion a una base de datos con gambas
Manual de conexion a una base de datos con gambasManual de conexion a una base de datos con gambas
Manual de conexion a una base de datos con gambasMoposita1994
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..NANO-06
 
Diagramas de implementacion
Diagramas de implementacionDiagramas de implementacion
Diagramas de implementacionZonickX
 
Diagramas UML
Diagramas UMLDiagramas UML
Diagramas UML1da4
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Josue Lara Reyes
 

La actualidad más candente (20)

Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)Arquitectura flujo de datos(filtros y tuberías)
Arquitectura flujo de datos(filtros y tuberías)
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Clase 3 Modelo Entidad Relacion
Clase 3   Modelo Entidad   RelacionClase 3   Modelo Entidad   Relacion
Clase 3 Modelo Entidad Relacion
 
Software caja negra y caja blanca
Software caja negra y caja blancaSoftware caja negra y caja blanca
Software caja negra y caja blanca
 
Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.Componentes y Librerías - Tópicos avanzados de programación.
Componentes y Librerías - Tópicos avanzados de programación.
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relación
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
Curso Java Inicial 5 Relaciones Entre Objetos
Curso Java Inicial   5 Relaciones Entre ObjetosCurso Java Inicial   5 Relaciones Entre Objetos
Curso Java Inicial 5 Relaciones Entre Objetos
 
modelo entidad-relacion
modelo entidad-relacionmodelo entidad-relacion
modelo entidad-relacion
 
2 1 vistas arquitectonicas
2 1 vistas arquitectonicas2 1 vistas arquitectonicas
2 1 vistas arquitectonicas
 
Manual de conexion a una base de datos con gambas
Manual de conexion a una base de datos con gambasManual de conexion a una base de datos con gambas
Manual de conexion a una base de datos con gambas
 
Casos de uso
Casos de usoCasos de uso
Casos de uso
 
Listas como estructura de datos..
Listas como estructura de datos..Listas como estructura de datos..
Listas como estructura de datos..
 
Diagramas de implementacion
Diagramas de implementacionDiagramas de implementacion
Diagramas de implementacion
 
UML
UMLUML
UML
 
Diagramas UML
Diagramas UMLDiagramas UML
Diagramas UML
 
Reglas de transformación
Reglas de transformaciónReglas de transformación
Reglas de transformación
 
Vista lógica
Vista lógicaVista lógica
Vista lógica
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
 
Fundamentos de BD - Unidad 6 lenguaje sql
Fundamentos de BD - Unidad 6 lenguaje sqlFundamentos de BD - Unidad 6 lenguaje sql
Fundamentos de BD - Unidad 6 lenguaje sql
 

Destacado

Integridad Y Seguridad En Las Bases De Datos
Integridad Y Seguridad En Las Bases De DatosIntegridad Y Seguridad En Las Bases De Datos
Integridad Y Seguridad En Las Bases De DatosDrakonis11
 
Desencadenadores
DesencadenadoresDesencadenadores
Desencadenadoresloquis01
 
Neptuno 2
Neptuno 2Neptuno 2
Neptuno 2romeno
 
Administración de Base de Datos
Administración de Base de DatosAdministración de Base de Datos
Administración de Base de DatosAxel Mérida
 
INTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDAD
INTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDADINTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDAD
INTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDADelylupita
 
Concurrencia bases datos 2
Concurrencia bases datos 2Concurrencia bases datos 2
Concurrencia bases datos 2Velmuz Buzz
 
Concurrencia en Bases de Datos (I)
Concurrencia en Bases de Datos (I)Concurrencia en Bases de Datos (I)
Concurrencia en Bases de Datos (I)ednaru
 
Tarea 6 consultas en neptuno access
Tarea 6 consultas en neptuno accessTarea 6 consultas en neptuno access
Tarea 6 consultas en neptuno accessmadnesshobbit
 
Conceptos basicos(base de datos)
Conceptos basicos(base de datos)Conceptos basicos(base de datos)
Conceptos basicos(base de datos)claudiachiri
 
Ejercicios de access neptuno
Ejercicios de access neptunoEjercicios de access neptuno
Ejercicios de access neptunoguillerjuan
 

Destacado (20)

INTEGRIDAD DE DATOS
INTEGRIDAD DE DATOSINTEGRIDAD DE DATOS
INTEGRIDAD DE DATOS
 
Integridad Y Seguridad En Las Bases De Datos
Integridad Y Seguridad En Las Bases De DatosIntegridad Y Seguridad En Las Bases De Datos
Integridad Y Seguridad En Las Bases De Datos
 
BD
BDBD
BD
 
Desencadenadores
DesencadenadoresDesencadenadores
Desencadenadores
 
Neptuno 2
Neptuno 2Neptuno 2
Neptuno 2
 
Base datos f01
Base datos f01Base datos f01
Base datos f01
 
Administración de Base de Datos
Administración de Base de DatosAdministración de Base de Datos
Administración de Base de Datos
 
INTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDAD
INTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDADINTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDAD
INTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDAD
 
Concurrencia
ConcurrenciaConcurrencia
Concurrencia
 
Concurrencia bases datos 2
Concurrencia bases datos 2Concurrencia bases datos 2
Concurrencia bases datos 2
 
Base De Datos
Base De DatosBase De Datos
Base De Datos
 
Concurrencia en Bases de Datos (I)
Concurrencia en Bases de Datos (I)Concurrencia en Bases de Datos (I)
Concurrencia en Bases de Datos (I)
 
Redundancia
RedundanciaRedundancia
Redundancia
 
Ejercicios access
Ejercicios accessEjercicios access
Ejercicios access
 
Glosario bases de datos
Glosario bases de datosGlosario bases de datos
Glosario bases de datos
 
Tarea 6 consultas en neptuno access
Tarea 6 consultas en neptuno accessTarea 6 consultas en neptuno access
Tarea 6 consultas en neptuno access
 
Conceptos basicos(base de datos)
Conceptos basicos(base de datos)Conceptos basicos(base de datos)
Conceptos basicos(base de datos)
 
control de concurrencia
control de concurrenciacontrol de concurrencia
control de concurrencia
 
Ejercicios de access neptuno
Ejercicios de access neptunoEjercicios de access neptuno
Ejercicios de access neptuno
 
Integridad de base de datos
Integridad de base de datosIntegridad de base de datos
Integridad de base de datos
 

Similar a Integridad de datos

Similar a Integridad de datos (20)

Reglas de integridad
Reglas de integridadReglas de integridad
Reglas de integridad
 
C:\Fakepath\Bdiii
C:\Fakepath\BdiiiC:\Fakepath\Bdiii
C:\Fakepath\Bdiii
 
Instrucciones Transact Sql
Instrucciones Transact SqlInstrucciones Transact Sql
Instrucciones Transact Sql
 
Instrucciones Transact S Q L
Instrucciones Transact  S Q LInstrucciones Transact  S Q L
Instrucciones Transact S Q L
 
Calidad de datos: conceptos y métodos
Calidad de datos: conceptos y métodosCalidad de datos: conceptos y métodos
Calidad de datos: conceptos y métodos
 
Modelo bd
Modelo bdModelo bd
Modelo bd
 
Modelos de bases de datos
Modelos de bases de datosModelos de bases de datos
Modelos de bases de datos
 
Funciones del aministrador
Funciones del aministradorFunciones del aministrador
Funciones del aministrador
 
Funciones del aministrador
Funciones del aministradorFunciones del aministrador
Funciones del aministrador
 
Funciones del aministrador[1]
Funciones del aministrador[1]Funciones del aministrador[1]
Funciones del aministrador[1]
 
Sistema manejador de bases de datos
Sistema manejador de bases de datosSistema manejador de bases de datos
Sistema manejador de bases de datos
 
Basesdedatosrelacionales
BasesdedatosrelacionalesBasesdedatosrelacionales
Basesdedatosrelacionales
 
Base de datos
Base de datosBase de datos
Base de datos
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 
DISEÑO DE UNA BASE DE DATOS
DISEÑO DE UNA BASE DE DATOSDISEÑO DE UNA BASE DE DATOS
DISEÑO DE UNA BASE DE DATOS
 
Gestor de base de datos
Gestor de base de datosGestor de base de datos
Gestor de base de datos
 
Integridad
IntegridadIntegridad
Integridad
 
encapsulamiento
encapsulamientoencapsulamiento
encapsulamiento
 
Base de datos ( Los Modelos de Datos)
Base de datos ( Los Modelos de Datos) Base de datos ( Los Modelos de Datos)
Base de datos ( Los Modelos de Datos)
 

Último

SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIAAbelardoVelaAlbrecht1
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptAlberto Rubio
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariamarco carlos cuyo
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxMartín Ramírez
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024IES Vicent Andres Estelles
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadJonathanCovena1
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfCarol Andrea Eraso Guerrero
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 

Último (20)

Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).pptPINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
PINTURA ITALIANA DEL CINQUECENTO (SIGLO XVI).ppt
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundaria
 
TL/CNL – 2.ª FASE .
TL/CNL – 2.ª FASE                       .TL/CNL – 2.ª FASE                       .
TL/CNL – 2.ª FASE .
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptxc3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
c3.hu3.p1.p2.El ser humano y el sentido de su existencia.pptx
 
Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024Metabolismo 3: Anabolismo y Fotosíntesis 2024
Metabolismo 3: Anabolismo y Fotosíntesis 2024
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la Sostenibilidad
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdfTarea 5-Selección de herramientas digitales-Carol Eraso.pdf
Tarea 5-Selección de herramientas digitales-Carol Eraso.pdf
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 

Integridad de datos

  • 1. Implementación de la integridad de datos Contenido Introducción 1 Tipos de integridad de datos 2 Exigir integridad de los datos 3 Definición de restricciones 4 Tipos de restricciones 9 Deshabilitación de restricciones 18 Uso de valores predeterminados y reglas 23 Decisión del método de implementación que va a utilizar 25
  • 2. Implementación de la integridad de datos i Notas para el instructor Este módulo proporciona a los alumnos una introducción a los conceptos relativos a la integridad de los datos, incluidos los métodos disponibles para exigir dicha integridad. El módulo presenta a continuación las restricciones, que constituyen el método principal para asegurar la integridad de los datos. También se ilustran varios tipos de restricciones. La creación y la implementación de las restricciones se describe en detalle, así como los medios para deshabilitar las restricciones cuando sea necesario. Los valores predeterminados y las reglas se describen como métodos alternativos para implementar la integridad de los datos, aunque el énfasis se mantiene en las restricciones. El módulo concluye con la comparación de los diferentes métodos para conseguir la integridad de los datos. En la práctica, los alumnos definen restricciones DEFAULT, CHECK, PRIMARY KEY y FOREIGN KEY. Después de completar este módulo, los alumnos serán capaces de: Describir los tipos de integridad de datos. Describir los métodos para implementar la integridad de datos. Determinar qué restricción utilizar y crear restricciones. Definir y utilizar las restricciones DEFAULT, CHECK, PRIMARY KEY, UNIQUE y FOREIGN KEY. Deshabilitar restricciones. Describir y utilizar valores predeterminados y reglas. Determinar los métodos que se van a utilizar para implementar la integridad de los datos.
  • 3. Implementación de la integridad de datos 1 Introducción Objetivo del tema Proporcionar una introduc- ción a los temas y objetivos Tipos de integridad de datos del módulo. Explicación previa Exigir la integridad de los datos En este módulo aprenderá Definición de restricciones acerca de los distintos tipos de integridad de datos y las Tipos de restricciones características que los posibilitan. Deshabilitación de restricciones Uso de valores predeterminados y reglas Decisión del método de implementación que va a utilizar Este módulo comienza con una introducción a los conceptos relativos a la integridad de los datos, incluidos los métodos disponibles para exigir dicha integridad. El módulo presenta a continuación las restricciones, que constituyen el método clave para asegurar la integridad de los datos, y los diversos tipos de restricciones. La creación y la implementación de las restricciones se describe en detalle, así como los medios para deshabilitar las restricciones cuando sea necesario. Los valores predeterminados y las reglas se describen como métodos alternativos para implementar la integridad de los datos, aunque el énfasis se mantiene en las restricciones. El módulo concluye con la comparación de los diferentes métodos para conseguir la integridad de los datos. Después de realizar esta práctica, el alumno será capaz de: Describir los tipos de integridad de datos. Describir los métodos para implementar la integridad de datos. Determinar qué restricción utilizar y crear restricciones. Definir y utilizar las restricciones DEFAULT, CHECK, PRIMARY KEY, UNIQUE y FOREIGN KEY. Deshabilitar la comprobación de restricciones. Describir y utilizar valores predeterminados y reglas. Determinar los métodos que se van a utilizar para implementar la integridad de los datos.
  • 4. Implementación de la integridad de datos 2 Tipos de integridad de datos Objetivo del tema Integridad de dominio Presentar los distintos tipos (columnas) de integridad de datos. Explicación previa Un paso importante en el diseño de una base de datos es decidir la mejor forma de implementar la Integridad de entidad (filas) integridad de los datos. La integridad de los datos se clasifica en tres categorías. Integridad referencial (entre tablas) Un paso importante en el diseño de una base de datos es decidir la mejor forma de implementar la integridad de los datos. La integridad de los datos hace referencia a la coherencia y la precisión de los datos que están almacenados en una base de datos. Los diferentes tipos de integridad de datos son los siguientes. Sugerencia Integridad de dominio Los tipos de integridad La integridad de dominio (o columna) especifica un conjunto de valores de de datos a los que se hace referencia aquí representan datos que son válidos para una columna y determina si se permiten valores el diseño básico de las nulos. La integridad de dominio se suele implementar mediante el uso de bases de datos relacionales. comprobaciones de validez y, también, mediante la restricción del tipo de datos, Explique los conceptos el formato o el intervalo de los valores posibles permitidos en una columna. de forma general. Puede aportar un ejemplo con la base de datos Northwind. Integridad de entidad La integridad de entidad (o tabla) requiere que todas las filas de una tabla tengan un identificador exclusivo, conocido como clave principal. El que se pueda modificar el valor de la clave principal o eliminar la fila entera depende del nivel de integridad requerido entre la clave principal y cualquier otra tabla. Integridad referencial La integridad referencial asegura que siempre se mantienen las relaciones entre las claves principales (en la tabla a la que se hace referencia) y las claves externas (en las tablas que hacen referencia). No se puede eliminar una fila de una tabla a la que se hace referencia, ni se puede modificar la clave principal, si una clave externa hace referencia a la fila, salvo que se permita la acción en cascada. Puede definir relaciones de integridad referencial dentro de la misma tabla o entre tablas diferentes.
  • 5. Implementación de la integridad de datos 3 Exigir integridad de los datos Objetivo del tema Presentar la forma en que Integridad de datos declarativa SQL Server implementa la integridad de los datos. Los criterios se definen en la definición del objeto Explicación previa Asegurada automáticamente por SQL Server Puede conseguir la integridad de los datos Implementada mediante restricciones, valores mediante dos métodos. 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 Puede conseguir la integridad de los datos mediante dos métodos: integridad de datos declarativa o integridad de datos procedimental. Integridad de datos declarativa Con la integridad declarativa, se definen los criterios que los datos tienen que cumplir como parte de la definición de un objeto y, después, Microsoft® SQL Server™ versión 2000 asegura automáticamente que los datos cumplan dichos criterios. El método preferido para implementar la integridad de datos básica es la integridad declarativa. Tenga en cuenta los hechos siguientes acerca del método declarativo: La integridad declarativa se declara como parte de la definición de la base de datos, mediante el uso de restricciones declarativas que se definen directamente en las tablas y las columnas. Implemente la integridad declarativa mediante la utilización de restricciones, valores predeterminados y reglas. Sugerencia Integridad de datos procedimental Mencione que en este Con la integridad procedimental se escriben secuencias de comandos que módulo sólo se tratan las características de la definen los criterios que los datos tienen que cumplir y que aseguran que integridad declarativa: dichos criterios se cumplen. Debe limitar el uso de la integridad procedimental restricciones, valores a situaciones excepcionales y a aquellas con una lógica complicada. Por predeterminados y reglas. ejemplo, utilice la integridad procedimental cuando desee implementar una Los desencadenadores y eliminación en cascada. Los hechos siguientes se aplican a la integridad los procedimientos procedimental: almacenados se tratan en módulos siguientes. La integridad procedimental se puede implementar en el cliente o en el servidor mediante otros lenguajes y herramientas de programación. Implemente la integridad procedimental utilizando desencadenadores y procedimientos almacenados.
  • 6. Implementación de la integridad de datos 4 Definición de restricciones Objetivo del tema Presentar la implementación de la integridad de datos con restricciones. Determinación del tipo de restricción que se va a utilizar Explicación previa Creación de restricciones Las restricciones son el método más adecuado Consideraciones para el uso de restricciones para implementar la integridad de los datos. Las restricciones son el método más adecuado para conseguir la integridad de los datos. En esta sección se describe cómo determinar el tipo de restricción que se tiene que utilizar, qué tipo de integridad de datos implementa cada tipo de restricción y cómo definir las restricciones.
  • 7. Implementación de la integridad de datos 5 Determinación del tipo de restricción que se va a utilizar Objetivo del tema Presentar los distintos tipos de restricciones y Tipo de integridad Tipo de integridad Tipo de restricción Tipo de restricción cómo utilizarlas para implementar la integridad DEFAULT DEFAULT de datos. Dominio Dominio CHECK CHECK Explicación previa REFERENTIAL REFERENTIAL Diferentes tipos de restric- ciones aseguran que los PRIMARY KEY PRIMARY KEY Entidad Entidad valores que se escriban UNIQUE UNIQUE en los datos de las FOREIGN KEY FOREIGN KEY columnas son válidos y Referencial Referencial CHECK CHECK que se mantienen las relaciones entre las tablas. Las restricciones son un método estándar ANSI para implementar la integridad Punto clave de los datos. Cada tipo de integridad de datos (dominio, entidad y referencial) Haga énfasis en que las restricciones cumplen el se implementa con tipos de restricciones diferentes. Las restricciones aseguran estándar ANSI. que los datos que se escriben en las columnas sean válidos y que se mantengan las relaciones entre las tablas. La tabla siguiente describe los diferentes tipos de restricciones. Tipo de Tipo de integridad restricción Descripción Dominio DEFAULT Especifica el valor que se proporciona para la columna cuando no se especifica explícitamente en una instrucción INSERT. CHECK Especifica los valores de los datos que se aceptan en una columna. REFERENTIAL Especifica los valores de datos que se aceptan como actualización en función de los valores de una columna de otra tabla. Entidad PRIMARY KEY Identifica de forma exclusiva cada una de las filas; asegura que los usuarios no escriban valores duplicados y que se cree un índice para aumentar el rendimiento. No se permiten valores nulos. UNIQUE Impide la duplicación de claves alternativas (no principales) y asegura que se cree un índice para aumentar el rendimiento. Se permiten valores nulos. Referencial FOREIGN KEY Define una columna o combinación de columnas cuyos valores coinciden con la clave principal de la misma u otra tabla. CHECK Especifica los valores de los datos que se aceptan en una columna en función de los valores de otras columnas de la misma tabla.
  • 8. Implementación de la integridad de datos 6 Creación de restricciones Objetivo del tema Presentar la sintaxis para definir restricciones. Explicación previa Utilizar CREATE TABLE o ALTER TABLE Las restricciones se Puede agregar restricciones a una tabla con datos implementan mediante la instrucción CREATE existentes TABLE o ALTER TABLE. 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 Las restricciones se crean mediante la instrucción CREATE TABLE o ALTER TABLE. Puede agregar restricciones a una tabla con datos existentes y puede aplicar Sugerencia restricciones a una sola columna o a varias columnas: Destaque que el término “restricción de tabla” hace Si la restricción se aplica a una sola columna, se llama restricción referencia a cualquier de columna. restricción de varias columnas. Si la restricción hace referencia a varias columnas, se llama restricción de tabla, incluso si no hace referencia a todas las columnas de la tabla. Sintaxis parcial CREATE TABLE Tabla ( { < definiciónColumna > | < restricciónTabla > } [ ,...n ]) < definiciónColumna > ::= { columnatipoDeDatos } [ [ DEFAULT expresiónConstante ] [ < restricciónColumna > ] [ ,..n] < restricciónColumna > ::= Sugerencias [ CONSTRAINT nombreRestricción ] Resalte que la sintaxis se divide en restricciones de | [ { PRIMARY KEY | UNIQUE } columna y de tabla. [ CLUSTERED | NONCLUSTERED ] ] | [ [ FOREIGN KEY ] Aconseje a los alumnos que creen primero la tabla base REFERENCES tablaRef [ ( columnaRef ) ] y después agreguen las [ ON DELETE { CASCADE | NO ACTION } ] restricciones, lo que [ ON UPDATE { CASCADE | NO ACTION } ]] simplifica el proceso de | CHECK ( expresiónLógica ) } definición de las tablas.
  • 9. Implementación de la integridad de datos 7 < restricciónTabla > ::= [ CONSTRAINT nombreRestricción ] { [ { PRIMARY KEY | UNIQUE } [CLUSTERED | NONCLUSTERED] { ( columna [ ASC | DESC ] [ ,...n ] ) } ] | FOREIGN KEY [ ( columna [ ,...n ] ) ] REFERENCES tablaRef [ ( columnaRef [ ,...n ] ) ] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] | CHECK ( condicionesBúsqueda ) } Ejemplo Este ejemplo crea la tabla Products, define columnas y define restricciones de columna y de tabla. USE northwind CREATE TABLE dbo.Products ( ProductID int IDENTITY (1,1) NOT NULL, ProductName nvarchar (40) NOT NULL, SupplierID int NULL, CategoryID int NULL, QuantityPerUnit nvarchar (20) NULL, UnitPrice money NULL CONSTRAINT DF_Products_UnitPrice DEFAULT(0), UnitsInStock smallint NULL CONSTRAINT DF_Products_UnitsInStock DEFAULT(0), UnitsOnOrder smallint NULL CONSTRAINT DF_Products_UnitsOnOrder DEFAULT(0), ReorderLevel smallint NULL CONSTRAINT DF_Products_ReorderLevel DEFAULT(0), Discontinued bit NOT NULL CONSTRAINT DF_Products_Discontinued DEFAULT(0), CONSTRAINT PK_Products PRIMARY KEY CLUSTERED (ProductID), CONSTRAINT FK_Products_Categories FOREIGN KEY (CategoryID) REFERENCES dbo.Categories (CategoryID) ON UPDATE CASCADE, CONSTRAINT FK_Products_Suppliers FOREIGN KEY (SupplierID) REFERENCES dbo.Suppliers (SupplierID) ON DELETE CASCADE, CONSTRAINT CK_Products_UnitPrice CHECK (UnitPrice >= 0), CONSTRAINT CK_ReorderLevel CHECK (ReorderLevel >= 0), CONSTRAINT CK_UnitsInStock CHECK (UnitsInStock >= 0), CONSTRAINT CK_UnitsOnOrder CHECK (UnitsOnOrder >= 0) ) GO
  • 10. Implementación de la integridad de datos 8 Consideraciones para el uso de restricciones Objetivo del tema Describir algunas de las consideraciones para utilizar restricciones. Pueden cambiarse sin volver a crear una tabla Explicación previa Requieren comprobación de errores en aplicaciones y Considere estos hechos cuando implemente o transacciones modifique restricciones. Comprueban los datos existentes Considere estos hechos cuando implemente o modifique restricciones: Sugerencia Demuestre que SQL Server Puede crear, modificar y eliminar restricciones sin tener que eliminar y crea nombres de restricción volver a crear una tabla. complicados, generados por el sistema. Tiene que generar lógica de control de errores en sus aplicaciones y transacciones para probar si se ha infringido una restricción. SQL Server comprueba los datos existentes cuando se agrega una restricción a una tabla. Tiene que especificar los nombres de las restricciones cuando las cree, puesto que SQL Server proporciona nombres complicados, generados por el sistema. Los nombres tienen que ser exclusivos para el propietario del objeto de la base de datos y seguir las reglas de los identificadores de SQL Server. Para obtener ayuda acerca de las restricciones, ejecute el procedimiento almacenado del sistema sp_helpconstraint o sp_help, o consulte las vistas del esquema de información, como check_constraints, referential_constraints y table_constraints. Las tablas del sistema siguientes almacenan las definiciones de las restricciones: syscomments, sysreferences y sysconstraints.
  • 11. Implementación de la integridad de datos 9 Tipos de restricciones Objetivo del tema Describir los tipos de restricciones. Explicación previa Restricciones DEFAULT Esta sección describe los Restricciones CHECK tipos de restricciones. Restricciones PRIMARY KEY Restricciones UNIQUE Restricciones FOREIGN KEY Integridad referencial en cascada Esta sección describe los tipos de restricciones. Cada restricción viene definida por su sintaxis, ejemplos y consideraciones de uso.
  • 12. Implementación de la integridad de datos 10 Restricciones DEFAULT Objetivo del tema Presentar la restricción Sólo se aplica a las instrucciones INSERT DEFAULT. Explicación previa Sólo una restricción DEFAULT por columna La restricción DEFAULT implementa la integridad No se puede utilizar con la propiedad IDENTITY o el tipo de dominio. de datos rowversion Permite que se especifiquen algunos valores proporcionados por el sistema USE Northwind USE Northwind ALTER TABLE dbo.Customers ALTER TABLE dbo.Customers ADD ADD CONSTRAINT DF_contactname DEFAULT 'UNKNOWN' CONSTRAINT DF_contactname DEFAULT 'UNKNOWN' FOR ContactName FOR ContactName La restricción DEFAULT escribe un valor en una columna cuando no se especifica en las instrucciones INSERT. Las restricciones DEFAULT implementan la integridad de dominio. Sintaxis parcial [CONSTRAINT nombreRestricción] DEFAULT expresiónConstante Ejemplo En este ejemplo se agrega una restricción DEFAULT que inserta el valor UNKNOWN en la tabla dbo.Customers si no se proporciona el nombre de contacto. USE Northwind ALTER TABLE dbo.Customers ADD CONSTRAINT DF_contactname DEFAULT 'UNKNOWN' FOR ContactName Considere los hechos siguientes cuando aplique una restricción DEFAULT: La restricción comprueba los datos existentes en la tabla. Sólo se aplica a las instrucciones INSERT. Sólo se puede definir una restricción DEFAULT por cada columna. No se puede aplicar a columnas con la propiedad Identity o a columnas con el tipo de datos rowversion. Permite que se especifiquen algunos valores proporcionados por el sistema (USER, CURRENT_USER, SESSION_USER, SYSTEM_USER o CURRENT_TIMESTAMP) en lugar de valores definidos por el usuario. Dichos valores proporcionados por el sistema pueden ser útiles para obtener un registro de los usuarios que insertan los datos.
  • 13. Implementación de la integridad de datos 11 Restricciones CHECK Objetivo del tema Presentar la restricción Se utilizan con las instrucciones INSERT y UPDATE CHECK. Pueden hacer referencia a otras columnas en la misma Explicación previa tabla Una restricción CHECK restringe los datos escritos No pueden: en una columna a valores específicos. Utilizarse con el tipo de datos rowversion Contener subconsultas USE Northwind USE Northwind ALTER TABLE dbo.Employees ALTER TABLE dbo.Employees ADD ADD CONSTRAINT CK_birthdate CONSTRAINT CK_birthdate CHECK (BirthDate > '01-01-1900' AND BirthDate < CHECK (BirthDate > '01-01-1900' AND BirthDate < getdate()) getdate()) La restricción CHECK restringe los datos que los usuarios pueden escribir en una columna particular a unos valores específicos. Las restricciones CHECK son similares a las cláusulas WHERE donde se pueden especificar las condiciones bajo las que se aceptan los datos. Sintaxis parcial [CONSTRAINT nombreRestricción] CHECK (expresiónLógica) Ejemplo Este ejemplo agrega una restricción CHECK para garantizar que una fecha de nacimiento cumpla un intervalo aceptable de fechas. USE Northwind ALTER TABLE dbo.Employees ADD CONSTRAINT CK_birthdate CHECK (BirthDate > '01-01-1900' AND BirthDate < getdate()) Considere los hechos siguientes cuando aplique una restricción CHECK: La restricción comprueba los datos cada vez que se ejecuta una instrucción INSERT o UPDATE. Puede hacer referencia a otras columnas de la misma tabla. Por ejemplo, una columna salary podría hacer referencia a un valor de una columna job_grade. No se puede aplicar a columnas con el tipo de datos rowversion. No puede contener subconsultas. Si alguno de los datos infringe la restricción CHECK, puede ejecutar la instrucción DBCC CHECKCONSTRAINTS para ver las filas infractoras.
  • 14. Implementación de la integridad de datos 12 Restricciones PRIMARY KEY Objetivo del tema Presentar las restricciones PRIMARY KEY. Explicación previa Sólo una restricción PRIMARY KEY por tabla Las restricciones PRIMARY Los valores deben ser exclusivos KEY implementan la integridad de entidad. No se permiten valores nulos Crea un índice exclusivo en las columnas especificadas USE Northwind USE Northwind ALTER TABLE dbo.Customers ALTER TABLE dbo.Customers ADD ADD CONSTRAINT PK_Customers CONSTRAINT PK_Customers PRIMARY KEY NONCLUSTERED (CustomerID) PRIMARY KEY NONCLUSTERED (CustomerID) La restricción PRIMARY KEY define una clave principal en una tabla para identificar de forma exclusiva cada una de sus filas. Implementa la integridad de entidad. Sintaxis parcial [CONSTRAINT nombreRestricción] PRIMARY KEY [CLUSTERED | NONCLUSTERED] { ( columna[,...n] ) } Ejemplo En este ejemplo se agrega una restricción que especifica que la clave principal de la tabla dbo.Customers es la identificación del cliente e indica que se va a crear un índice no agrupado para implementar la restricción. USE northwind ALTER TABLE dbo.Customers ADD CONSTRAINT PK_Customers PRIMARY KEY NONCLUSTERED (CustomerID) Considere los hechos siguientes cuando aplique una restricción Puntos clave PRIMARY KEY: La restricción PRIMARY KEY siempre es exclusiva y Sólo se puede definir una restricción PRIMARY KEY por tabla. no permite valores nulos. Los valores escritos tienen que ser exclusivos. La restricción PRIMARY No se permiten valores nulos. KEY siempre crea un índice. Crea un índice exclusivo en las columnas especificadas. Puede especificar un índice agrupado o un índice no agrupado (el agrupado es el tipo predeterminado si no existe anteriormente). Nota El índice creado para la restricción PRIMARY KEY no se puede eliminar directamente. Se elimina cuando se quita la restricción.
  • 15. Implementación de la integridad de datos 13 Restricciones UNIQUE Objetivo del tema Presentar las restricciones UNIQUE. Explicación previa Permite un valor nulo La restricción UNIQUE Permite varias restricciones UNIQUE en una tabla especifica que dos filas de una columna no pueden Definidas con una o más columnas tener el mismo valor. Exigida con un índice único USE Northwind USE Northwind ALTER TABLE dbo.Suppliers ALTER TABLE dbo.Suppliers ADD ADD CONSTRAINT U_CompanyName CONSTRAINT U_CompanyName UNIQUE NONCLUSTERED (CompanyName) UNIQUE NONCLUSTERED (CompanyName) La restricción UNIQUE especifica que dos filas de una columna no pueden tener el mismo valor. Esta restricción implementa la integridad de entidad con un índice único. La restricción UNIQUE es útil cuando ya se tiene una clave principal, como un número de empleado, pero se desea garantizar que otros identificadores, como el número del permiso de conducir de un empleado, también sean exclusivos. Sintaxis parcial [CONSTRAINT nombreRestricción] UNIQUE [CLUSTERED | NONCLUSTERED] { ( columna[,...n] ) } Ejemplo Este ejemplo crea una restricción UNIQUE sobre la columna company name de la tabla dbo.Suppliers. USE northwind ALTER TABLE dbo.Suppliers ADD CONSTRAINT U_CompanyName UNIQUE NONCLUSTERED (CompanyName) Considere los hechos siguientes cuando aplique una restricción UNIQUE: Puede permitir un valor nulo. Puede aplicar varias restricciones UNIQUE en una misma tabla. Puede aplicar la restricción UNIQUE a una o varias columnas que tengan que tener valores exclusivos y no sean la clave principal de una tabla. La restricción UNIQUE se implementa mediante la creación de un índice exclusivo en la columna o columnas especificadas.
  • 16. Implementación de la integridad de datos 14 Restricciones FOREIGN KEY Objetivo del tema Deben hacer referencia a una restricción PRIMARY KEY o Presentar la restricción UNIQUE FOREIGN KEY. Explicación previa Proporcionan integridad referencial de una o de varias La restricción FOREIGN columnas KEY implementa la integridad referencial. 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 Northwind USE Northwind ALTER TABLE dbo.Orders ALTER TABLE dbo.Orders ADD CONSTRAINT FK_Orders_Customers ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) FOREIGN KEY (CustomerID) REFERENCES dbo.Customers(CustomerID) REFERENCES dbo.Customers(CustomerID) La restricción FOREIGN KEY implementa la integridad referencial. La restricción FOREIGN KEY define una referencia a una columna con una restricción PRIMARY KEY o UNIQUE en la misma o en otra tabla. Sintaxis parcial [CONSTRAINT nombreRestricción] [FOREIGN KEY] [(columna[,…n])] REFERENCES tablaRef [(columnaRef [,…n])]. Ejemplo Este ejemplo utiliza una restricción FOREIGN KEY para garantizar que la identificación del cliente de la tabla dbo.Orders esté asociada con una identificación válida en la tabla dbo.Customers. USE northwind ALTER TABLE dbo.Orders ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES dbo.Customers(CustomerID)
  • 17. Implementación de la integridad de datos 15 Considere los hechos y recomendaciones siguientes cuando aplique una restricción FOREIGN KEY: Proporciona integridad referencial de una o de varias columnas. El número de columnas y los tipos de datos que se especifican en la instrucción FOREIGN KEY tienen que coincidir con el número de columnas y los tipos de datos de la cláusula REFERENCES. Al contrario que las restricciones PRIMARY KEY o UNIQUE, las restricciones FOREIGN KEY no crean índices automáticamente. Sin embargo, si la base de datos utiliza muchas combinaciones, tiene que crear un índice para que FOREIGN KEY aumente el rendimiento en las combinaciones. Para modificar los datos, los usuarios deben tener permisos SELECT o REFERENCES en las tablas a las que se hace referencia en la restricción FOREIGN KEY. Sólo se puede utilizar la cláusula REFERENCES sin la cláusula FOREIGN KEY cuando se hace referencia a una columna de la misma tabla.
  • 18. Implementación de la integridad de datos 16 Integridad referencial en cascada Objetivo del tema Describir la integridad NINGUNA CASCADA Customers Customers referencial en cascada. ACCIÓN Customers Customers CustomerID (PK) CustomerID (PK) Explicación previa 1 1 La integridad referencial INSERT new INSERT new UPDATE CustomerID UPDATE CustomerID en cascada propaga CustomerID CustomerID CASCADA automáticamente los Orders Orders cambios realizados a la CustomerID (FK) Orders Orders base de datos. 2 CustomerID (FK) UPDATE old UPDATE old CustomerID to new CustomerID to new CustomerID CustomerID Customers Customers CustomerID (PK) 3 DELETE old DELETE old CustomerID CustomerID La restricción FOREIGN KEY incluye la opción CASCADE que permite que cualquier cambio en un valor de columna que define una restricción UNIQUE o PRIMARY KEY se propague automáticamente al valor de clave externa. Esta acción se conoce como integridad referencial en cascada. Las cláusulas REFERENCES de las instrucciones CREATE TABLE y ALTER TABLE aceptan cláusulas ON DELETE y ON UPDATE. Estas cláusulas le permiten especificar la opción CASCADE o NO ACTION. Sintaxis parcial [CONSTRAINT nombreRestricción] [FOREIGN KEY] [(columna[,…n])] REFERENCES tablaRef [(columnaRef [,…n])]. [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] NO ACTION especifica que cualquier intento de eliminar o actualizar una clave a la que hagan referencia claves externas en otras tablas genere un error y el cambio se deshaga. NO ACTION es la opción predeterminada. Si se selecciona CASCADE y se cambia una fila en la tabla primaria, la fila correspondiente se cambia entonces en la tabla que hace referencia. Por ejemplo, en la base de datos Northwind, la tabla Orders tiene una relación referencial con la tabla Customers; específicamente, la clave externa Orders.CustomerID hace referencia a la clave principal Customers.CustomerID. Si se ejecuta una instrucción UPDATE sobre la columna CustomerID de la tabla Customers y se especifica una acción ON UPDATE CASCADE para Orders.CustomerID, SQL Server busca una o varias filas dependientes en la tabla Orders. Si encuentra alguna, actualiza las filas dependientes de la tabla Orders, así como la fila a la que se hace referencia en la tabla Customers.
  • 19. Implementación de la integridad de datos 17 Considere estos factores al aplicar la opción CASCADE: Es posible combinar CASCADE y NO ACTION en tablas que mantengan relaciones referenciales. Si SQL Server encuentra NO ACTION, concluye y deshace las acciones CASCADE relacionadas. Cuando una instrucción DELETE provoca la combinación de las acciones CASCADE y NO ACTION, todas las acciones CASCADE se aplican antes de que SQL Server busque cualquier acción NO ACTION. CASCADE no se puede especificar para ninguna columna de clave externa o principal que se haya definido con una columna rowversion.
  • 20. Implementación de la integridad de datos 18 Deshabilitación de restricciones Objetivo del tema Describir los métodos de deshabilitación de restricciones. Deshabilitación de la comprobación de las restricciones Explicación previa en los datos existentes Por motivos de rendimiento, algunas veces resulta Deshabilitación de la comprobación de las restricciones aconsejable deshabilitar al cargar datos nuevos restricciones. Por motivos de rendimiento, algunas veces resulta aconsejable deshabilitar restricciones. Por ejemplo, es más conveniente permitir que se procesen grandes operaciones por lotes antes que habilitar restricciones. Esta sección describe el modo de deshabilitar la comprobación de restricciones, tanto si va a crear una nueva restricción o deshabilitar una existente.
  • 21. Implementación de la integridad de datos 19 Deshabilitación de la comprobación de las restricciones en los datos existentes Objetivo del tema Presentar cómo se deshabilitan las Se aplica a las restricciones CHECK y FOREIGN KEY restricciones. Utilice la opción WITH NOCHECK cuando agregue una Explicación previa restricción nueva Puede deshabilitar la comprobación de restric- Utilizar si los datos existentes no cambian ciones al agregar una restricción a una tabla. Se pueden cambiar los datos existentes antes de agregar restricciones USE Northwind USE Northwind ALTER TABLE dbo.Employees ALTER TABLE dbo.Employees WITH NOCHECK WITH NOCHECK ADD CONSTRAINT FK_Employees_Employees ADD CONSTRAINT FK_Employees_Employees FOREIGN KEY (ReportsTo) FOREIGN KEY (ReportsTo) REFERENCES dbo.Employees(EmployeeID) REFERENCES dbo.Employees(EmployeeID) Cuando se define una restricción en una tabla que ya contiene datos, SQL Server los comprueba automáticamente para confirmar que cumplen los requisitos de la restricción. Sin embargo, puede deshabilitar la comprobación de restricciones en los datos existentes al agregar una restricción a una tabla. Considere las recomendaciones siguientes para deshabilitar la comprobación de restricciones en los datos existentes: Sólo puede deshabilitar las restricciones CHECK y FOREIGN KEY. El resto de las restricciones se tienen que eliminar y volver a agregar. Para deshabilitar la comprobación de restricciones cuando se agrega una restricción CHECK o FOREIGN KEY a una tabla con datos existentes, incluya la opción WITH NOCHECK en la instrucción ALTER TABLE. Utilice la opción WITH NOCHECK si los datos existentes no van a cambiar. Los datos tienen que cumplir las restricciones CHECK si van a ser actualizados. Asegúrese de que deshabilitar la comprobación de la restricción es una acción apropiada. Puede ejecutar una consulta para cambiar los datos existentes antes de decidir agregar una restricción.
  • 22. Implementación de la integridad de datos 20 Sintaxis parcial ALTER TABLE tabla [WITH CHECK⏐WITH NOCHECK] ADD CONSTRAINT restricción [FOREIGN KEY] [(columna[,…n])] REFERENCES tablaRef [(columnaRef [,…n])]. [CHECK (condicionesBúsqueda)] Ejemplo En este ejemplo, se agrega una restricción FOREIGN KEY que comprueba que todos los empleados están asociados a un director válido. La restricción no se implementa en los datos existentes en el momento en que se agrega. USE northwind ALTER TABLE dbo.Employees WITH NOCHECK ADD CONSTRAINT FK_Employees_Employees FOREIGN KEY (ReportsTo) REFERENCES dbo.Employees(EmployeeID)
  • 23. Implementación de la integridad de datos 21 Deshabilitación de la comprobación de las restricciones al cargar datos nuevos Objetivo del tema Describir cómo se desha- bilita la comprobación de restricciones al cargar datos Se aplica a las restricciones CHECK y FOREIGN KEY nuevos. Utilizar si: Explicación previa Esta característica se limita Los datos cumplen las restricciones a las restricciones CHECK y FOREIGN KEY. Carga datos nuevos que no cumplen las restricciones USE Northwind USE Northwind ALTER TABLE dbo.Employees ALTER TABLE dbo.Employees NOCHECK NOCHECK CONSTRAINT FK_Employees_Employees CONSTRAINT FK_Employees_Employees Se puede deshabilitar la comprobación de restricciones CHECK y FOREIGN KEY existentes, de forma que sea posible modificar o agregar datos a una tabla sin comprobar la restricción. Para evitar los costos de la comprobación de las restricciones, puede que le interese deshabilitar las restricciones cuando: Ya esté seguro de que los datos cumplen las restricciones. Desee cargar datos que no cumplan las restricciones. Posteriormente, puede ejecutar consultas para modificar los datos y volver a habilitar las restricciones. Importante La deshabilitación de restricciones en una tabla no afecta a las restricciones de otras tablas que hagan referencia a la tabla original. Las actualizaciones de una tabla siguen pudiendo generar errores de infracción de restricciones. La habilitación de una restricción que ha estado deshabilitada requiere la ejecución de otra instrucción ALTER TABLE que contenga una cláusula CHECK o CHECK ALL. Sintaxis parcial ALTER TABLE tabla {CHECK | NOCHECK} CONSTRAINT {ALL | restricción[,...n]}
  • 24. Implementación de la integridad de datos 22 Ejemplo Este ejemplo deshabilita la restricción FK_Employees_Employees. Se puede volver a habilitar si se ejecuta otra instrucción ALTER TABLE con la cláusula CHECK. USE northwind ALTER TABLE dbo.Employees NOCHECK CONSTRAINT FK_Employees_Employees Para determinar si una restricción está habilitada o deshabilitada en una tabla, ejecute el procedimiento almacenado del sistema sp_help o utilice la propiedad CnstIsDisabled de la función OBJECTPROPERTY.
  • 25. Implementación de la integridad de datos 23 Uso de valores predeterminados y reglas Objetivo del tema Como objetos independientes: Especificar cómo se crean valores predeterminados y Se definen una vez reglas. Pueden vincularse a una o más columnas Explicación previa o a tipos de datos definidos por el usuario Los valores predetermi- nados y las reglas son dos CREATE DEFAULT phone_no_default CREATE DEFAULT phone_no_default métodos adicionales para AS '(000)000-0000' AS '(000)000-0000' implementar la integridad GO GO de datos. EXEC sp_bindefault phone_no_default, EXEC sp_bindefault phone_no_default, 'Customers.Phone' 'Customers.Phone' CREATE RULE regioncode_rule CREATE RULE regioncode_rule AS @regioncode IN ('IA', 'IL', 'KS', 'MO') AS @regioncode IN ('IA', 'IL', 'KS', 'MO') GO GO EXEC sp_bindrule regioncode_rule, EXEC sp_bindrule regioncode_rule, 'Customers.Region' 'Customers.Region' Los valores predeterminados y las reglas son objetos que se pueden asociar con una o varias columnas o tipos de datos definidos por el usuario, lo que permite que se definan una sola vez y se utilicen varias veces. Un inconveniente del uso de valores predeterminados y reglas es que no cumplen el estándar ANSI. Creación de un valor predeterminado Si no se especifica un valor cuando se insertan datos, el valor predeterminado especifica el valor de la columna a la que el objeto está asociado. Considere estos hechos antes de crear valores predeterminados: Toda regla asociada a la columna y los tipos de datos valida el valor de un Punto clave valor predeterminado. No puede usar una restric- ción de valor predetermi- Cualquier restricción CHECK sobre la columna debe validar el valor de un nado en una columna con valor predeterminado. un tipo de datos definido por el usuario si ya hay un valor No se puede crear una restricción DEFAULT en una columna que esté predeterminado asociado al definida con un tipo de datos definido por el usuario si dicha columna o tipo tipo de datos o a la misma. de datos ya tuvieran asociado un valor predeterminado. Sintaxis CREATE DEFAULT predeterminado AS expresiónConstante Asociación de un valor predeterminado Después de crear un valor predeterminado, tiene que asociarlo a una columna o a un tipo de datos definido por el usuario mediante la ejecución del procedimiento almacenado del sistema sp_bindefault. Para deshacer dicha asociación, ejecute el procedimiento almacenado del sistema sp_unbindefault.
  • 26. Implementación de la integridad de datos 24 Ejemplo En este ejemplo se inserta un marcador de posición con el formato correcto para el número de teléfono, hasta que se proporcione el número de teléfono real. USE Northwind GO CREATE DEFAULT phone_no_default AS '(000)000-0000' GO EXEC sp_bindefault phone_no_default, 'Customers.Phone' Creación de una regla Las reglas especifican los valores aceptables que se pueden insertar en una columna. Garantizan que los datos se encuentran dentro de un intervalo de valores especificado, coinciden con un patrón concreto o con las entradas de una lista especificada. Tenga en cuenta estos hechos acerca de las reglas: La definición de una regla puede contener cualquier expresión válida para una cláusula WHERE. Una columna o un tipo de datos definido por el usuario sólo puede tener asociado una regla. Sintaxis CREATE RULE regla AS condición Asociación de una regla Después de crear una regla, tiene que asociarla a una columna o a un tipo de datos definido por el usuario mediante la ejecución del procedimiento almacenado del sistema sp_bindrule. Para deshacer la asociación de la regla, ejecute el procedimiento almacenado del sistema sp_unbindrule. Ejemplo En este ejemplo, la regla asegura que sólo se acepten los estados especificados. USE Northwind GO CREATE RULE regioncode_rule AS @regioncode IN ('IA', 'IL', 'KS', 'MO') GO EXEC sp_bindrule regioncode_rule, 'Customers.Region' Eliminación de un valor predeterminado o una regla La instrucción DROP quita un valor predeterminado o una regla de la base de datos. Sintaxis DROP DEFAULT predeterminado [,...n] Sintaxis DROP RULE regla [, ...n]
  • 27. Implementación de la integridad de datos 25 Decisión del método de implementación que va a utilizar Objetivo del tema Mostrar las ventajas y los inconvenientes de los Componente de Componente de Costos de Antes o después distintos componentes Funcionalidad Costos de Antes o después integridad de datos Funcionalidad rendimiento de la transacción de integridad de datos. integridad de datos rendimiento de la transacción Explicación previa Restricciones Media Baja Antes Restricciones Media Baja Antes Debe tener en cuenta la funcionalidad y los costos Valores predetermi- de rendimiento cuando Valores predetermi- Baja Baja Baja Baja Antes Antes determine qué métodos va nados y reglas nados y reglas a utilizar para implementar la integridad de datos. Desencadenadores Alta Desencadenadores Alta Medio-alto Medio-alto Después Después Tipos de datos, Tipos de datos, Baja Baja Baja Baja Antes Antes Null/Not Null Null/Not Null Debe tener en cuenta la funcionalidad y los costos de rendimiento cuando Puntos clave determine qué métodos va a utilizar para implementar la integridad de datos. Utilice restricciones si es posible. Lo mejor es utilizar la integridad declarativa para la lógica de integridad Utilice valores predetermi- fundamental, como al determinar los valores válidos y al mantener las nados y reglas si necesita relaciones entre las tablas. objetos independientes. Utilice desencadenadores Si desea mantener datos redundantes complejos que no forman parte de una sólo cuando requiera una relación de claves principales o externas, debe utilizar desencadenadores o lógica compleja. procedimientos almacenados. Sin embargo, como los desencadenadores no se activan hasta que tiene lugar una modificación, la comprobación de errores ocurre después de que la instrucción se termina. Cuando un desencadenador detecta una infracción, tiene que deshacer los cambios. Componente de Costos de Antes o después de integridad de datos Efecto Funcionalidad rendimiento la modificación Restricciones Se definen con la tabla y validan los Media Baja Antes datos antes de empezar la transacción, lo que mejora el rendimiento. Valores Implementan la integridad de los datos Baja Baja Antes predeterminados como objetos independientes que se y reglas pueden asociar con una o varias tablas. Desencadenadores Proporcionan funcionalidad adicional, Alta Medio alto Después como cascadas y lógica más compleja. (excepto para Las modificaciones se tienen que desencadenadores deshacer. INSTEAD OF) Tipos de datos, Proporcionan el nivel más bajo de Baja Baja Antes Null/Not Null integridad de datos. Se implementan para cada columna cuando se crea una tabla. Los datos se validan antes de que comience una transacción.