HABTM 原則がどのように機能するかを説明してくれる人はいますか?
-
06-07-2019 - |
質問
(HABTM または多対多) 「多数を持ち、多数に属する」原則がどのように機能するかを説明できる人はいますか?users テーブルと Books テーブルがあり、さらにテーブルがあるとします。 users_books
ID はどこにありますか。この原則を実際にいつ使用する必要がありますか?また、どのように機能するのでしょうか?
解決
多対多の関係が必要な理由を尋ねていますか(これがHABTMです)
上記の場合、ユーザーは多くの本を所有している可能性があります-データベースでそれをどのように表現するかたとえば、本とユーザーの2つのテーブルがある場合、usersテーブルでは、本ごとに1つの列を追加することはできません所有する書籍の数の上限がわからないため、ユーザーが所有する書籍。 「書籍」という列を追加し、この列に書籍の「コレクション」を保存することもできます(XMLまたはカンマ区切りとして)が、これにより多くのデータベースクエリが困難になります(ユーザーが所有する個々の書籍の識別など)。
書籍テーブルについても同じことが言えます。特定の書籍を所有しているユーザーの数は?繰り返しますが、事前に知ることはできないため、複数の「ユーザー」列を書籍テーブルに追加することはできません。また、ユーザーのコレクションを含む単一の「ユーザー」列を追加しても役に立ちません。
この問題の解決策は、useridとbookidの2つの列を含む「結合」テーブルを追加することです。この表は、ユーザーを書籍にリンクします。したがって、IDが1と2の2人のユーザーと、IDが101、102、103の3つの本がある場合、結合テーブルは次のようになります。
userid bookid 1 101 2 101 2 103
ここがHABTMのusers_booksの出番です。これはユーザーと書籍の結合テーブルです。
他のヒント
H A および B T o M のいずれかがデータベース内のテーブル間の多対多の関係。あなたの場合、1人のユーザーが多くの本を持つことができ、1つの本が多くのユーザーを持つことができるので、ユーザーと本の間の関係を処理します。
このブログ投稿は、コンセプトの非常に良い説明とイラストのように見えます:
has_and_belongs_to_many:Railsのhabtm
http://sumanthtechsavvy.blogspot.com/2008/03/ hasandbelongstomany-habtm-in-rails.html