sirve quoted_identifier que para available and sql sql-server database-design normalization

quoted_identifier - sql server database size and space available



enumeraciones en la base de datos de SQL Server (3)

Como cambiar la enumeración dentro de tu código también requerirá lanzar una nueva versión de tu aplicación, no buscaría ninguna tabla de búsqueda, solo agregaría una restricción de verificación a la columna en cuestión.

Sin embargo, si necesita almacenar nombres localizados de la enumeración en la base de datos, entonces buscaría una tabla de búsqueda para cada enumeración.

La "única tabla de búsqueda verdadera" no le dará ninguna ventaja.

Editar: si necesita recuperar dinámicamente los valores enum (p. Ej., Para un menú desplegable) o necesita saber qué valores están permitidos, entonces usar tablas de búsqueda es probablemente mejor para usted.

¿Hay una manera mejor o más fácil de almacenar las enumeraciones (enumeraciones disponibles en lenguajes de programación como C #) en la base de datos SQL Server que no sea simplemente crear una tabla de búsqueda (con Id, código y nombre como columnas) para cada uno de ellos (especialmente cuando hay muy pocas filas en cada una de esas tablas)? Encontré un artículo que sugiere crear solo una tabla de búsqueda para todas las enumeraciones y el enfoque es criticado por algunas personas en comentarios que dicen que viola la integridad de los datos referenciales. si la enumeración es utilizada por una sola tabla, ¿es una buena práctica usar algunos códigos predefinidos y luego agregar una restricción para ellos (puede estar usando propiedades extendidas)?


Usar la misma tabla para varias búsquedas puede volver a perseguirte. Un ejemplo es crear una vista indizada. Esto puede ayudar con el rendimiento si tiene varios campos en los que desea mostrar el valor de búsqueda, pero SQL Server (al menos 2005) no le permitirá hacer referencia a la misma tabla más de una vez (si esto se ha solucionado, lo haría realmente me gusta saber cómo hacerlo porque realmente podría usarlo en una aplicación actual con una única tabla de búsqueda).

Una de sus búsquedas puede requerir un campo adicional, y al usar una tabla, tendrá muchos nulos innecesarios. La indexación puede ser más flexible con tablas separadas. ¿Qué pasa si el nuevo campo necesita ser requerido para un tipo particular de búsqueda? SQL Server hará bien con una restricción, pero cuando se lanza en la misma tabla, se necesitará un poco más de complejidad.

Es posible que no tenga ninguno de estos problemas ahora mismo. Simplemente no veo una ventaja en una sola tabla, pero algunas aplicaciones les gusta tener una forma dinámica de generar listas de búsqueda y no crearán una nueva tabla para cada una.


  1. Personalmente, me gusta definir una tabla de búsqueda por enumeración, porque también es un tipo de documentación. Si alguien quiere saber qué significa una identificación, la encontrará fácilmente en una mesa. Buscar esta información en una restricción de columna no es evidente.

  2. También es mucho más fácil agregar nuevos valores en una tabla que en una restricción.

  3. Si crea un diagrama de base de datos, las tablas de búsqueda individuales aparecen más lógicas.

  4. Puede agregar información adicional a tablas de búsqueda individuales, si es necesario (como un comentario, una columna de clasificación, algún tipo de bandera, etc.).

  5. Y como dijiste, es mejor para la integridad referencial