Pregunta

Actualmente tengo una base de datos con dos tablas llamadas Artículos y Etiquetas. Con el fin de permitir que los artículos estén en múltiples categorías tengo una relación de muchos a muchos. ¿Es un error tener un diseño tal en términos de rendimiento? o debería eliminar la relación entre estos dos tipos de tabla y añadir una tercera tabla como un puente (articlesTags)?

¿Fue útil?

Solución

No hay nada inherentemente malo en tener una relación de muchos a muchos, que sólo tendrá que crear un Junction Tabla (que es lo que parece que te refieres con articlesTags) para facilitar esa relación.

Otros consejos

Estás viendo la diferencia entre un diseño conceptual de bases de datos (N: N relación) y es la realización física. No importa cómo se modela su N:. La relación N, tendrá la tabla de unión antes mencionada para que funcione

No hay nada malo con el modelado de una relación real mundo tan cerca del mundo real como sea posible como una declaración general. La claridad es el rey.

Cuando se trata de cualquier pregunta de desempeño en cualquier sistema de la respuesta por lo general se reduce a "depende".

Si su problema de rendimiento está relacionado con escribe a continuación, una estructura altamente normalizada es mejor y usted querrá que la tabla de unión. Usted va a terminar de escribir mucho menos datos y que puede acelerar las cosas considerablemente (aunque es posible que quemar esa ventaja al tener que hacer búsquedas antes de crear las inserciones). La lectura de las tablas normalizadas individuales puede ser muy rápido también.

Si su problema está relacionado con analítica LEE entonces una estructura desnormalizaremos es mejor. Se une el rendimiento puede ser muy intensa si las tablas son grandes y los índices se extienden. Vas a sacrificar un montón de espacio para ganar mucho tiempo.

En general, usted quiere mirar los detalles de su situación y sopesar los pros y los contras de cada método antes de decidir una solución. Personalmente, siempre he encontrado que es mejor centrarse en Claridad en las etapas iniciales y refactorizar para el rendimiento si descubro un problema más adelante.

Existe una relación de muchos a muchos en un modelo relationnal, es sólo una abstracción de la mente. Cuando se implementará que habrá una mesa articles_to_tags donde tendrá:

fk_article (INTEGER) fk_tag (INTEGER)

cf http://en.wikipedia.org/wiki/Many-to-many_ (data_model)

No hay ningún problema en el uso de relaciones muchos a muchos. A menudo se requiere.

Y sí, no es posible crear una relación de muchos a muchos, sin necesidad de utilizar una tercera tabla.

No hay ningún problema con tener una relación de muchos a muchos, si eso es lo que requieren los datos, pero usted querrá una tercera tabla para representarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top