Actualmente tengo una base de datos con dos tablas llamadas Artículos y etiquetas. Para 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 así en términos de rendimiento? ¿o debería eliminar la relación entre estas dos tablas y agregar una tercera tabla como puente (articlesTags)?relación muchos a muchos en el diseño de la base de datos
Respuesta
No hay nada intrínsecamente incorrecto en tener una relación muchos a muchos, solo tendrá que crear un Junction Table (que es lo que parece que se refiere al articlesTags
) para facilitar esa relación.
No hay problema con tener una relación muchos a muchos si eso es lo que requieren los datos, pero querrá una tercera tabla para representarlo.
Yo diría "necesitarás una tercera mesa". – Dave
Existe una relación de muchos a muchos en un modelo de relación, es solo una abstracción de la mente. Cuando se implementará que habrá una mesa articles_to_tags donde tendrá:
fk_article (entero) fk_tag (entero)
No hay ningún problema en el uso de muchos a muchas relaciones. A menudo se requiere.
Y sí, no es posible crear una relación de muchos a muchos, sin utilizar una tercera tabla.
Estás viendo la diferencia entre un diseño de base de datos conceptual (la relación N: N) y su realización física. No importa cómo modele su relación N: N, necesitará la Tabla de unión antes mencionada para que funcione.
No hay nada de malo en modelar una relación del mundo real tan cerca del mundo real como pueda como afirmación general. La claridad es el rey.
Cuando se trata de cualquier pregunta de rendimiento en cualquier sistema, la respuesta generalmente se reduce a "depende".
Si su problema de rendimiento está relacionado con ESCRIBIR, entonces una estructura altamente NORMALIZADA es la mejor y querrá esa tabla de unión. Terminará escribiendo mucho menos datos y eso puede acelerar sustancialmente las cosas (aunque puede quemar esa ventaja haciendo búsquedas antes de crear las inserciones). La lectura de las tablas individuales normalizadas también puede ser muy rápida.
Si su problema está relacionado con las LECTURAS analíticas, entonces una estructura DENORMALIZADA es la mejor. Las uniones pueden ser muy intensivas en rendimiento si las tablas son grandes y los índices se extienden. Sacrificarás mucho espacio para ganar mucho tiempo.
En general, desea ver los detalles de su situación y sopesar los pros y los contras de cada enfoque antes de tomar una decisión. Personalmente, siempre me ha parecido mejor enfocarme en Clarity en las etapas iniciales y refactorizar el rendimiento si descubro un problema más adelante.
- 1. SQL Server 2005 de diseño de base de datos - muchos-a-muchos relación con la jerarquía
- 2. Relación de muchos a muchos
- 3. Diseño de relación de muchos a muchos - Intersection Table Design
- 4. Relación Muchos a Muchos
- 5. relación muchos-a-muchos SQLite?
- 6. Insertar datos en la relación Muchos a Muchos en SQLAlchemy
- 7. EntityFramework Misma tabla Muchos a muchos Relación
- 8. relación uno a muchos en la base de datos - concepto de diseño
- 9. AutoMapper relación de muchos a muchos en la colección
- 10. reglas Core Eliminación de datos y muchos-a-muchos relación
- 11. obteniendo datos de una relación muchos a muchos db
- 12. 'Muchos a dos' relación
- 13. Spring + JPA relación muchos a muchos
- 14. Relación Muchos a Muchos en el Código Primero EF4
- 15. Cómo organizar una relación de muchos a muchos en MongoDB
- 16. cheque JPQL muchos-a-muchos relación
- 17. Django: accediendo a muchos a muchos objetos a través de otra relación Muchos a Muchos
- 18. SQL: relación muchos a muchos, condición IN
- 19. Ejemplos de consultas en una relación muchos a muchos
- 20. Auditar la relación muchos a muchos en NHibernate
- 21. Relación muchos a muchos en .NET RIA services
- 22. jpa criterios para la relación de muchos a muchos
- 23. Búsqueda de artículos en una relación muchos a muchos
- 24. Buscar en la relación muchos a muchos con Doctrine2
- 25. Filtro de muchos a muchos relación en Django
- 26. ¿Cómo eliminar en una relación de muchos a muchos?
- 27. sqlalchemy muchos-a-muchos relación de tablas declarativas
- 28. Consultando una relación de muchos a muchos en SQLAlchemy
- 29. SqlAlchemy y Flask, cómo consultar la relación muchos a muchos
- 30. del modelo y de poblar la base de datos de muchos-a-muchos relación con el atributo
¿Cómo se creó una relación de muchos a muchos sin el uso de una tabla de artículos de etiquetas? – flayto
Si tiene una relación de muchos a muchos, necesita representar la tercera tabla, no hay una alternativa sensata. Su enfoque más cercano podría ser una estructura SET en cada tabla, si su DBMS lo admite. Pero normalmente no hay mucha verificación entre tablas en tales tipos, la tabla separada es necesaria. –