2011-10-14 10 views
9

ユーザー(ID、FNAME、LNAME、INTERESTS、...)の表と、選択できるINTERESTSの特定のセットを保持する別のテーブルがあります。フィルム、テレビ、ラジオ、ステージ、立ち上げ。値のリスト(興味など)

これらは複数の興味を持っている可能性がありますので、どのようにしてこの情報をUsers INTERESTSのフィールドに保存できますか?またはこれを達成するための最良の代替方法は何ですか?このdatabase normalizationと呼ばれ

user (id, name) 
interest (id, description) 
user_interest (user, interest) 

+0

これは、私を助け:http://stackoverflow.com/questions/1009025/facebook-database-design –

答えて

0

これに対する最善の解決策は、3つのテーブル(useresに関心の接続を記憶するための第三のもの)を使用することです。

3

あなたのMySQLの本でdatabase normalisationについて読んでください。それは重要な話題なので、多分それについての大きな章があります。要するに

、あなたのような、第三表とinterestsを削除し、代わりに終わる:

user_id | interest_id 
--------+------------ 
    1 |  1 
    1 |  2 
    2 |  1 
    3 |  4 

これは、あなたの多対多の関係を示します。

+0

ここで私を助けたデータベースの正規化のビデオがある:https://youtu.be/UrYLYV7WSHM –

+0

@ MattG:またはあなたの本を読んでください:) –

6

多対多の関係です。これらは、「結合表」を入力して保存します。

Table Users: 
----------- 
UserID PK 
Name 
... 


Table Interests 
------- 
InterestID PK 
Description. 
.... 


User_interest 
----------- 
UserID PK, FK 
InterestID PK, FK 
+1

'User_interest'の列' UserInterestID'は冗長です。テーブルには2つの列しかなく、主キーは '(UserID、InterestID)'でなければなりません。 – Hammerite

+0

かなり正しいです。それに応じて答えを改めました。 –

+1

いいですが、私はこのメソッドを使用してユーザーの興味のリストを私に持って来るためにデータベースを照会する方法? – Dan

関連する問題