database - ID para etiquetas en sistemas de etiquetas
database-design tags (3)
Si prevé muchas etiquetas y está utilizando una base de datos relacional, el uso de una ID que la base de datos admite de forma nativa (por ejemplo, RID) internamente puede proporcionarle un mejor rendimiento.
Si eso no es una preocupación: vaya por simples nombres de etiquetas cortas. Puede dar a las etiquetas nombres largos que también se mostrarán en la interfaz de usuario cuando tenga sentido (por ejemplo, pídale al usuario una al crear una nueva etiqueta). Es más probable que tenga que editar los nombres largos, a los que nada se refiere directamente, por lo que esto no es un problema.
Además, si está utilizando una base de datos relacional, probablemente no sea muy difícil cambiar el nombre de una etiqueta junto con todas sus referencias con una simple consulta, puede ser una operación un poco más cara, pero probablemente no se hará. con la frecuencia suficiente que necesita optimizar para ello. Y considere que puede tener etiquetas duplicadas que también desee fusionar, por lo que es posible que desee poder hacer eso de todos modos.
Estoy implementando un sistema de etiquetas similar al sistema de etiquetas StackOverflow. Estaba pensando en cuándo almacenar las etiquetas y en relación con una pregunta, esa relación estará directamente con el nombre de la etiqueta o es mejor crear una ID de etiqueta de campo para "vincular" la pregunta con la etiqueta. Parece que vincular directamente al nombre de la etiqueta es más fácil, pero no se ve bien, principalmente por qué cuando se trabaja con estadísticas y / o categorización de etiquetas (en mi humilde opinión) puede ser difícil de manejar. Otro problema es cuando un administrador decide "corregir" un nombre de etiqueta. Si no hay una ID de etiqueta separada del nombre de la etiqueta, entonces voy a cambiar la clave de la tabla ...
¿Cuáles son tus pensamientos?
Gracias por todas las respuestas. Eliminaré esta publicación ya que hay otras publicaciones con el mismo tema. Me pregunto por qué la búsqueda y la sugerencia no muestran resultados para mí ...
Tu última oración en tu pregunta parece responderla. Suponiendo que las etiquetas estén almacenadas en una tabla de etiquetas, siempre tendré una columna de ID (int o GUID) y la columna varchar / string para el nombre de la etiqueta. El muchos-a-muchos (tabla de unión) que relacionaría a otra entidad con una o más etiquetas tendría dos columnas que contienen los ID''s "otra entidad" y la identificación de la etiqueta. Entonces es fácil editar una etiqueta (para corregir una ortografía incorrecta, por ejemplo) sin tocar la tecla. Debería obtener un rendimiento mucho mejor al usar consultas que incluyen combinaciones con su tabla de unión y también significa que está normalizando sus datos mejor.
Recuerda, " la llave, la llave completa y nada más que la llave, ¡así que ayúdame codd "! :)
Eche un vistazo a estas preguntas relacionadas con SO más tempranas: