Pregunta

¿Puede alguien explicarme cómo (HABTM o muchos a muchos) tiene y pertenece a muchos? principio funciona? Digamos que tengo una tabla de usuarios y una tabla de libros y luego tengo una tabla users_books donde están los ID. ¿Cuándo necesitaría usar este principio y cómo funcionaría?

¿Fue útil?

Solución

¿Se pregunta por qué necesita relaciones de muchos a muchos (que es lo que es HABTM)?

En el caso que mencione anteriormente, un usuario puede tener muchos libros: cómo representa eso en una base de datos Digamos que tiene dos tablas, libros y usuarios, en la tabla de usuarios no puede agregar una columna por libro para cada libro que el usuario puede tener, ya que no sabe cuál es el límite superior en el número de libros de propiedad. Podría agregar una columna llamada 'libros' y almacenar una 'colección' de libros en esta columna (tal vez como XML o separados por comas), pero esto dificulta muchas consultas de la base de datos (como identificar libros individuales que posee el usuario).

Lo mismo ocurre con la tabla de libros, ¿cuántos usuarios poseen un libro en particular? una vez más, no puede saber por adelantado, por lo que no puede agregar varias columnas de 'usuario' a la tabla de libros y agregar una sola columna de 'usuarios' con una colección de usuarios no ayuda.

La solución a este problema es agregar una tabla de 'unión', dicen los libros de usuario, que contiene dos columnas, una ID de usuario y una ID de libro. Esta tabla vincula a los usuarios con los libros. Entonces, si tengo dos usuarios con ID 1 y 2 y tres libros con ID 101, 102 y 103, la tabla de unión puede verse así:

userid  bookid
1       101
2       101
2       103

Aquí es donde entran los users_books en HABTM: es la tabla de unión entre usuarios y libros.

Otros consejos

H como A nd B elongs T o M cualquier maneja el relación de muchos a muchos entre tablas en una base de datos. En su caso, manejaría la relación entre usuarios y libros, ya que un usuario puede tener muchos libros y un libro puede tener muchos usuarios.

texto alternativo ??

Esta publicación de blog parece una muy buena explicación e ilustración del concepto:

has_and_belongs_to_many: habtm en Rails
http://sumanthtechsavvy.blogspot.com/2008/03/ hasandbelongstomany-habtm-in-rails.html

Esta sección de La guía de Asociaciones de Rails tiene buena información sobre cómo funciona esto en Rails. También debe considerar la posibilidad de una a través de la asociación en caso de que necesite almacenar más información sobre la asociación en sí. Wikipedia tiene un breve artículo sobre el concepto básico de muchos- demasiados modelos de datos que también pueden resultar instructivos.

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