2010-04-03 15 views
65

¿Cuál es una definición clara de restricción de base de datos? ¿Por qué las restricciones son importantes para una base de datos? ¿Cuáles son los tipos de restricciones?¿Qué son las restricciones de la base de datos?

+7

Esta pregunta tiene una respuesta clara. No es "demasiado amplio". Su gran cantidad de votos ascendentes y favoritos revelan lo útil que ha sido para muchas personas. Limpié la redacción y la nombré para la reapertura. –

+0

@BasilBourque esta pregunta es muy inadecuada para los programadores: se rechazaría rápidamente y se cerraría allí, ver http://meta.programmers.stackexchange.com/questions/6483/why-was-my-question-closed -or-abajo-votado/6490 # 6490 Lectura recomendada: ** [¿Qué ocurre con Programmers.SE? Una guía para el desbordamiento de la pila] (http://meta.programmers.stackexchange.com/q/7182/31260) ** – gnat

+0

@gnat Mientras que esa página me deja todavía confuso acerca de lo que está o no sobre el tema para los programadores Stack Exchange, puedo entender y estar de acuerdo con un umbral mínimo del autor de la publicación que primero ha leído un [artículo de Wikipedia directamente relevante] (https://en.wikipedia.org/wiki/Relational_database#Constraints) que proporciona el mismo tipo de resumen condensado o resumen que se solicita en el intercambio de pila. –

Respuesta

93

Las restricciones forman parte de una definición de esquema de base de datos.

Una restricción generalmente se asocia con una tabla y se crea con una instrucción SQL CREATE CONSTRAINT o CREATE ASSERTION.

Define ciertas propiedades que los datos en una base de datos deben cumplir. Pueden aplicarse a una columna, una tabla completa, más de una tabla o un esquema completo. Un sistema de base de datos confiable asegura que las restricciones se mantengan en todo momento (excepto posiblemente dentro de una transacción, por las llamadas restricciones diferidas).

tipos más comunes de las limitaciones son:

  • no nula - cada valor en una columna no debe ser NULL
  • única - valor (s) en la columna (s) especificado debe ser único para cada fila en una tabla
  • clave principal - los valores en las columnas especificadas deben ser únicos para cada fila en una tabla y no ser NULL; normalmente cada tabla en una base de datos debe tener una clave primaria: se usa para identificar registros individuales
  • clave externa - los valores en las columnas especificadas deben hacer referencia a un registro existente en otra tabla (a través de primario) clave o algún otro restricción única)
  • cheque - se especifica una expresión, que se debe evaluar como verdadera para la restricción de ser satisfechos
+3

+1 para incluir PK, no nulo, nulo – gbn

+0

+1, aún podría expandir escenarios de LLAVE EXTRAÑA y proporcionar algunos enlaces. – Unreason

+2

Comprobar restricciones no debe evaluar a falso. No tienen que ser verdad. Desconocido está bien también. –

2

Restricciones se pueden utilizar para aplicar propiedades específicas de los datos. Un ejemplo simple es limitar una columna int a los valores [0-100000]. This introducción se ve bien.

3

Las restricciones determinan qué valores son válidos para los datos en la base de datos. Por ejemplo, puede exigir que un valor no sea nulo (una restricción NOT NULL), o que exista como una restricción única en otra tabla (una restricción FOREIGN KEY), o que sea único dentro de esta tabla (una restricción UNIQUE o quizás PRIMARY KEY restricción dependiendo de tus requerimientos). Se pueden implementar restricciones más generales usando las restricciones CHECK.

El MSDN documentation for SQL Server 2008 constraints es probablemente el mejor lugar para comenzar.

2
  1. UNIQUE restricción (de las cuales una restricción PRIMARY KEY es una variante). Comprueba que todos los valores de un campo determinado son únicos en la tabla. Esto es X eje x restricción (registros)

  2. CHECK de restricción (de las cuales una restricción NOT NULL es una variante). Comprueba que cierta condición se cumple para la expresión sobre los campos del mismo registro. Esto es Y-axis constraint (fields)

  3. FOREIGN KEY constraint. Comprueba que el valor de un campo se encuentra entre los valores de un campo en otra tabla. Esto es Z-axis constraint (tablas).

+0

Las restricciones únicas y las restricciones de clave externa se pueden escribir usando restricciones 'CHECK', entonces, ¿por qué clasificarlo de manera diferente? es decir, "' Y'-axis "(lo que sea que eso signifique). – onedaywhen

+1

@onedaywhen: ¿cómo se implementa una 'FOREIGN KEY' utilizando una restricción' CHECK'? – Quassnoi

+0

@onedaywhen: intente crear una tabla con esta restricción. – Quassnoi

31

para entender por qué necesitamos limitaciones, primero hay que entender la valu e de integridad de datos.

La integridad de los datos se refiere a la validez de los datos. ¿Son sus datos válidos? ¿Sus datos representan lo que usted los diseñó?

Qué preguntas extrañas le pregunto que podría pensar, pero lamentablemente con demasiada frecuencia, las bases de datos están llenas de datos basura, referencias inválidas a filas en otras tablas, que han desaparecido ... y valores que no significan nada a la lógica comercial de su solución por más tiempo.

Toda esta basura no solo es propensa a reducir su rendimiento, sino que también es una bomba de tiempo bajo la lógica de su aplicación que eventualmente recuperará datos que no están diseñados para comprender.

Las restricciones son reglas que usted crea en el momento del diseño que protegen sus datos para que no se corrompan. Es esencial para la supervivencia a largo plazo de su hijo corazón de una solución de base de datos. Sin restricciones, su solución decaerá definitivamente con el uso del tiempo y el uso intensivo.

Debe reconocer que el diseño de su base de datos es solo el nacimiento de su solución. Aquí después debe vivir (con suerte) durante mucho tiempo y soportar todo tipo de comportamiento (extraño) por parte de sus usuarios finales (es decir, aplicaciones cliente). ¡Pero esta fase de diseño en desarrollo es crucial para el éxito a largo plazo de su solución! Respetarlo, y pagarle el tiempo y la atención que requiere.

Un hombre sabio dijo una vez: "¡Los datos deben protegerse!". Y esto es lo que hacen las restricciones. Son reglas que mantienen los datos en su base de datos lo más válidos posible.

Hay muchas maneras de hacer esto, pero básicamente se reducen a:

  • restricciones de clave externa es probablemente el obstáculo más usado, y asegura que las referencias a otros tablas sólo se permiten si allí existe realmente una fila de destino a de referencia.Esto también hace que sea imposible romper dicha relación al eliminar la fila de referencia creando un vínculo inactivo.
  • Compruebe las restricciones puede garantizar que solo se permiten valores específicos en cierta columna. Puede crear una restricción que solo permita la palabra 'Amarillo' o 'Azul' en una columna VARCHAR. Todos los otros valores producirían un error. Obtener ideas para el uso de restricciones de comprobación comprobar el punto de vista sys.check_constraints en la base de datos de ejemplo AdventureWorks
  • Reglas en SQL Server son sólo reutilizables Restricciones de comprobación (permite a mantener la sintaxis desde un solo lugar , y lo que es más fácil de desplegar sus limitaciones a otras bases de datos)

Como he insinuado aquí, toma algunas consideraciones exhaustivas para construir el mejor y más defensiva enfoque de restricción para el diseño de la base de datos. Primero necesita conocer las posibilidades y limitaciones de los diferentes tipos de restricciones anteriores. Lectura adicional podría incluir:

FOREIGN KEY Constraints - Microsoft

Foreign key constraint - w3schools

CHECK Constraints

Buena suerte! ;)

1

Una base de datos es la representación lógica computarizada de un modelo conceptual (o comercial), que consiste en un conjunto de reglas comerciales informales. Estas reglas son el significado de los datos comprendido por el usuario. Debido a que las computadoras solo comprenden representaciones formales, las reglas comerciales no se pueden representar directamente en una base de datos. Deben asignarse a una representación formal, un modelo lógico, que consiste en un conjunto de restricciones de integridad. Estas restricciones, el esquema de la base de datos, son la representación lógica en la base de datos de las reglas de negocio y, por lo tanto, son el significado de los datos comprendido por DBMS. De ello se deduce que si el SGBD no tiene conocimiento y/o no impone el conjunto completo de restricciones que representan las reglas comerciales, tiene una comprensión incompleta de lo que significan los datos y, por lo tanto, no puede garantizar (a) su integridad evitando la corrupción, (b) la integridad de las inferencias que realiza a partir de ella (es decir, los resultados de la consulta); esta es otra forma de decir que el DBMS es, en el mejor de los casos, incompleto.

Nota: El DBMS - significado "entendido" - restricciones de integridad - no es idéntico al significado entendido por el usuario - reglas comerciales - pero, a pesar de la pérdida de algún significado, obtenemos la capacidad de mecanizar inferencias lógicas de los datos .

"Una vieja clase de errores" por Fabian Pascal

-1

limitaciones son las condiciones, que puede validar condición específica. Las restricciones relacionadas con la base de datos son Integridad del dominio, Integridad de la entidad, Integridad referencial, Restricciones de integridad definida por el usuario, etc.

4

Restricciones no son más que las reglas sobre los datos. Qué datos son válidos y cuáles no válidos se pueden definir usando restricciones. Entonces, esa integridad de los datos se puede mantener. A continuación se presentan las limitaciones ampliamente utilizados:

  1. clave principal: que identifica únicamente los datos.Si esta restricción se ha especificado para cierta columna, entonces no podemos ingresar datos duplicados en esa columna
  2. Verificar: Como NOT NULL. Aquí podemos especificar qué datos podemos ingresar para esa columna en particular y qué no se espera para esa columna.
  3. Clave externa: Clave externa referencias a la fila de la otra tabla. De modo que los datos referidos en una tabla de otra tabla siempre están disponibles para la tabla de referencia.
1

Hay básicamente 4 tipos de limitaciones principales en SQL

limitación de dominio: si uno de los valores de los atributos proporcionados para una nueva tupla no es del dominio de atributo especificado

limitación fundamental: si el valor de un atributo clave en una nueva tupla ya existe en otra tupla en la relación

integridad referencial: si un valor de clave externa en una nueva tupla hace referencia a un valor de clave primaria que no existe en la relación que se hace referencia

Integridad de la entidad: si el valor de la clave primaria es nulo en una nueva tupla

Cuestiones relacionadas