初歩的な質問で、タイトル通りです。Railsでアプリを作っています。
例えば、Usersテーブルに「好きなスポーツ」というカラムを作り、その値は、サッカー、野球、バスケ、バレー、ラグビーの5つの中から任意の数だけ選べるとします。(値の登録時は、チェックボックスを使うことを想定しています。)
ーーUsersテーブルーー
id | 好きなスポーツ |
---|---|
1 | バスケ |
2 | サッカー、バスケ |
3 | 野球、バレー、ラグビー |
のように、一つのカラムに複数の値を「、」区切りで入れるのは望ましくなく、正規化しないといけないことはわかります。
これを正規化すると、SportsテーブルとUser_sportsテーブルを作り、
ーーSportsテーブルーー
id | name |
---|---|
1 | サッカー |
2 | 野球 |
3 | バスケ |
4 | バレー |
5 | ラグビー |
ーーUser_sportsテーブルーー
id | user_id | sport_id |
---|---|---|
1 | 1 | 3 |
2 | 2 | 1 |
3 | 2 | 3 |
4 | 3 | 2 |
5 | 3 | 4 |
6 | 3 | 5 |
のようにすれば関係性は保たれています。しかし、たかがUserの一カラムのためにテーブルを2つも作るのは冗長な気がするのです。
あとは、Usersテーブルに好きなスポーツ1、好きなスポーツ2、・・・のようにカラムを複数作る方法もありますが、nullを入れることになりよろしくないと思います。
わざわざテーブルを2つ作ることがこの場合ふさわしいでしょうか?また、これら以外の方法があればご教授ください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/09 17:53