2012-02-20 7 views
1

私はデータベースとSQLのかなり新しいです。私には課題がありますが、これを解決する方法はわかりません。テーブルの行の値の配列を含むSQLの列

私はPersonsという名前のテーブルを持っているとしましょう。次の列があります。userId(主キー)、userNameおよびtagsです。

Tagsは、idおよびtagNameのみを含む別のテーブルです。たとえば、「フットボール」、「料理」など複数のタグを持つことができます。

各タグはTagテーブル行に対応します。しかし、私はこの種の関係をどのように達成するのか分かりません。どうすればこれを達成できますか?

私はそれが外来キーと関係し、人のタグ列に外来キーの配列を作っていると推測しています。

答えて

8

通常、リレーションテーブルが必要です(これは多対多関係、つまりM:Mと呼ばれます)。

Persons(id int, name varchar(40)...) 

Tags(id int, name varchar(40)....) 

PersonTags(id int, 
      personid FOREIGN KEY References Persons(id), 
      TagId FOREIGN KEY references Tags(id)) 

あなたが好きなだけの数のタグを持つことができますが、タグデータは人のために、行は格納されません。この方法では。あなたは潜在的に1つのフィールドに一連の値を格納することができますが、これはさまざまな理由で本当にひどい考えです。

3

@ JNKの回答を補完するだけです。 ON DELETE CASCADEオプションを使用してPERSONSに外部キーを作成することができます。つまり、削除されると、それに属するすべてのタグ(PersonTagsのレコード)も削除されますが、TAG自体には何も起こりませんタグテーブル

関連する問題