¿Qué son las limitaciones de la base de datos? [cerrado]

92

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

bala3569
fuente
12
Esta pregunta tiene una respuesta clara. No es "demasiado amplio". Su gran cantidad de votos a favor y favoritos revelan lo útil que ha sido para muchas personas. Limpié la redacción y lo nominé para reabrir.
La-comadreja
@BasilBourque esta pregunta no encaja muy bien con los programadores; rápidamente se rechazaría y cerraría allí, consulte meta.programmers.stackexchange.com/questions/6483/… Lectura recomendada: ¿Qué pasa con Programmers.SE? Una guía para Stack Overflow
mosquito
1
@gnat Si bien esa página me deja todavía confuso sobre lo que está o no en el tema de Programmers Stack Exchange, puedo entender y estar de acuerdo con un umbral mínimo de que el autor de la publicación haya leído primero un artículo de Wikipedia directamente relevante que proporciona el Se solicita el mismo tipo de descripción general condensada o resumida en Stack Exchange.
Basil Bourque
2
El título es demasiado amplio y las subpreguntas hacen varias preguntas a la vez -_- ¿Cómo lo quieren TomTom, P ரதீப், greg-449, bummi y Nit? Por favor explique. ¿Hay alguna forma de preguntar acerca de las limitaciones ...?
Lealo
Aunque entiendo que los sentimientos hacia las preguntas están demasiado basados ​​en opiniones y opiniones, no estoy de acuerdo con el requisito de leer primero el artículo de wikipedia. NO proporciona el "mismo tipo de descripción general condensada o resumida". La respuesta aceptada proporciona una respuesta mucho más condensada y precisa que el enlace de wikipedia anterior.
Chris

Respuestas:

117

Las restricciones son 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 CREATE CONSTRAINTo CREATE ASSERTIONSQL.

Definen ciertas propiedades que deben cumplir los datos de una base de datos. 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, para las llamadas restricciones diferidas).

Los tipos comunes de restricciones son:

  • no nulo : cada valor de una columna no debe ser NULO
  • Único : los valores de las columnas especificadas deben ser únicos para cada fila de una tabla.
  • clave primaria : los valores de las columnas especificadas deben ser únicos para cada fila de una tabla y no ser NULL ; Normalmente, cada tabla de una base de datos debe tener una clave principal: se utiliza 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 su clave principal o alguna otra restricción única )
  • comprobar : se especifica una expresión, que debe evaluarse como verdadera para que se cumpla la restricción
Ziga Kranjec
fuente
3
+1 para incluir PK, not null, null
gbn
+1, aún puede expandir los escenarios de FOREIGN KEY y proporcionar algunos enlaces.
Unreason
2
Las restricciones de verificación no deben evaluarse como falsas. No tienen que ser verdad. Desconocido también está bien.
Martin Smith
2
¿No sería una restricción de tipo también un tipo común?
Martin
1
Aunque normalmente no las llamamos restricciones, yo diría que el tipo de datos es una forma de restricción. Si defino algo como Int o datetime, eso limita el tipo de datos que se pueden poner en el campo. La selección adecuada de tipos de datos es una parte fundamental para garantizar la integridad de los datos.
HLGEM
36

Para comprender por qué necesitamos restricciones, primero debe comprender el valor de la integridad de los datos.

La integridad de los datos se refiere a la validez de los datos. ¿Son válidos tus datos? ¿Sus datos representan para qué los ha diseñado?

Qué preguntas extrañas que les hago, podrían 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 se han ido hace mucho tiempo ... y valores que no significan nada para la lógica empresarial de su solución por más tiempo.

Toda esta basura no es por sí sola 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 crea en tiempo de diseño que protegen sus datos para que no se corrompan. Es esencial para la supervivencia a largo plazo de su hijo del corazón de una solución de base de datos. Sin restricciones, su solución definitivamente se deteriorará con el tiempo y el uso intensivo.

Debe reconocer que diseñar el diseño de su base de datos es solo el nacimiento de su solución. En lo sucesivo debe vivir (con suerte) 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! Respételo y préstele el tiempo y la atención que requiere.

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

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

  • Las restricciones de clave externa es probablemente la restricción más utilizada y garantiza que las referencias a otras tablas solo se permitan si realmente existe una fila de destino para hacer referencia. Esto también hace que sea imposible romper dicha relación eliminando la fila a la que se hace referencia creando un vínculo muerto.
  • Las restricciones de verificación pueden garantizar que solo se permitan valores específicos en determinada columna. Puede crear una restricción que solo permita la palabra 'Amarillo' o 'Azul' en una columna VARCHAR. Todos los demás valores producirían un error. Obtenga ideas para el uso de restricciones de verificación verifique la sys.check_constraintsvista en la base de datos de muestra de AdventureWorks
  • Las reglas en SQL Server son solo restricciones de verificación reutilizables (le permite mantener la sintaxis desde un solo lugar y facilita la implementación de sus restricciones en otras bases de datos)

Como he insinuado aquí, se necesitan algunas consideraciones minuciosas para construir el mejor enfoque de restricción y más defensivo para el diseño de su base de datos. Primero necesita conocer las posibilidades y limitaciones de los diferentes tipos de restricciones anteriores. La lectura adicional podría incluir:

Restricciones FOREIGN KEY - Microsoft

Restricción de clave externa - w3schools

VERIFICAR Restricciones

¡Buena suerte! ;)

Alex
fuente
Como necrocomentario, parece que Microsoft ahora está defendiendo las reglas.
Gary
6

Las restricciones no son más que reglas sobre los datos. Los datos que son válidos y los que no lo son se pueden definir mediante restricciones. Por lo tanto, se puede mantener la integridad de los datos. Las siguientes son las restricciones más utilizadas:

  1. Clave principal : que identifica de forma única los datos. Si esta restricción se ha especificado para cierta columna, no podemos ingresar datos duplicados en esa columna
  2. Comprobar : 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 : referencias de clave externa a la fila de otra tabla. De modo que los datos referidos en una tabla desde otra tabla siempre estén disponibles para la tabla de referencia.
usuario3107247
fuente
3

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

Anders Abel
fuente
3

Las restricciones dictan qué valores son válidos para los datos en la base de datos. Por ejemplo, puede hacer que un valor no sea nulo (una NOT NULLrestricción), o que exista como una restricción única en otra tabla (una FOREIGN KEYrestricción), o que sea único dentro de esta tabla (una UNIQUErestricción o tal vez una PRIMARY KEYrestricción según sus requisitos ). Se pueden implementar CHECKrestricciones más generales utilizando restricciones.

La documentación de MSDN para las restricciones de SQL Server 2008 es probablemente su mejor punto de partida.

Jon Skeet
fuente
2
  1. UNIQUErestricción (de la cual una PRIMARY KEYrestricción es una variante). Comprueba que todos los valores de un campo determinado sean únicos en la tabla. Esta es la Xrestricción del eje (registros)

  2. CHECKrestricción (de la cual una NOT NULLrestricción es una variante). Comprueba que se cumple una determinada condición para la expresión sobre los campos del mismo registro. Esta es la Yrestricción del eje (campos)

  3. FOREIGN KEYrestricción. Comprueba que el valor de un campo se encuentre entre los valores de un campo en otra tabla. Esta es la Zrestricción del eje (tablas).

Quassnoi
fuente
Las restricciones únicas y las restricciones de clave externa se pueden escribir utilizando CHECKrestricciones, entonces, ¿por qué clasificarlas de manera diferente? es decir, " Y-eje" (lo que sea que eso signifique).
cuando
2
@onedaywhen: ¿cómo se implementa un FOREIGN KEYuso de una CHECKrestricción?
Quassnoi
1
@onedaywhen: intente crear una tabla con esta restricción.
Quassnoi
1
@onedaywhen: ¿es tan difícil de intentar? Pista: esto no funcionará.
Quassnoi
3
@onedaywhen: la consulta que escribió no crea una restricción de verificación. Es una mera SELECTconsulta. No puede usar subconsultas (o cualquier otra construcción que se refiera a valores fuera del registro actual) en CHECKrestricciones en SQL Server.
Quassnoi
2

Una base de datos es la representación lógica computarizada de un modelo conceptual (o comercial), que consta de un conjunto de reglas comerciales informales. Estas reglas son el significado de los datos comprendido por el usuario. Debido a que las computadoras comprenden solo 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 consta de 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 comerciales y, por lo tanto, son el significado de los datos entendido por el DBMS. De ello se desprende que si el DBMS desconoce y / o no aplica 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,

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

"Una vieja clase de errores" por Fabian Pascal

un día cuando
fuente
2

Básicamente, existen 4 tipos de restricciones principales en SQL:

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

  • Restricción clave: 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 principal que no existe en la relación referenciada

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

Ragu
fuente
-1

las restricciones son condiciones que pueden validar una condición específica. Las restricciones relacionadas con la base de datos son la integridad del dominio, la integridad de la entidad, la integridad referencial, las restricciones de integridad definidas por el usuario, etc.

Prashant Kumbharkar
fuente