ユーザー登録システムを作成しようとしています。登録プロセス中に、ユーザは異なる趣味を選択することができる。したがって、私は複数価値の属性「趣味」を管理しなければなりません。 usersテーブルには、プライマリキーとして 'username'(varchar)フィールドがあります。私は「趣味」と呼ばれる別のテーブルを作成することを考えていましたが、どのように各ユーザをその趣味につなげることができますか?助言がありますか?複数の値を持つ属性を管理するSQL
ありがとうございます
ユーザー登録システムを作成しようとしています。登録プロセス中に、ユーザは異なる趣味を選択することができる。したがって、私は複数価値の属性「趣味」を管理しなければなりません。 usersテーブルには、プライマリキーとして 'username'(varchar)フィールドがあります。私は「趣味」と呼ばれる別のテーブルを作成することを考えていましたが、どのように各ユーザをその趣味につなげることができますか?助言がありますか?複数の値を持つ属性を管理するSQL
ありがとうございます
あなたは3つのテーブルが必要です。最初の推奨事項は、プライマリキーをユーザー名ではなく整数で、自動増分が推奨されるように変更することです。名前はキーとしてうまく機能しません。
2番目の表は、ユーザーIDを趣味にリンクするuserhobbyテーブルです。あなたの2つのフィールドとしてhobby_idとuser_idをお勧めします。これはマッピングテーブルです。ユーザが趣味を削除できるようにするにはIDと可能であれば日付フィールド/有効なフィールドだけを入れる必要があります。実際のデータを削除します。主キーuser_id + hobby_idとして2つのフィールドを使用します。
第3、最終表は、hobby_idを実際の趣味にマッピングする趣味です。 Hobby_id(主キー、int、およびautoincrementが優先)、次に趣味名と、その趣味に指定する情報を指定します。
意味がありますか?この設定により、ユーザーは複数の趣味を持ち、冗長データを維持することができます。
データと目的に応じて、3番目の表をスキップして、趣味データをユーザー専用の表に直接設定することもできます。 'hobbyId | userId | hobbyName | hobbyDescription' ...' choose 'とは、別の趣味のテーブルが必要ですが、その中からユーザーが選ぶことができるので、nvm – Philipp
@Philipp - それはうまくいきますが、複数のユーザーが同じ趣味を持っている場合は、hobbynameとdescriptionのテキストを繰り返し入力する必要があります。あなたはまた、ホビーテーブルのquieriesを遅くする... hobby_id = 5は、hobbyname = 'stackexchange'よりもはるかに効果的です。 – Twelfth
関連テーブルまたは[ジャンクションテーブル](http://stackoverflow.com/a/32620163)。したがって、1対多数または多対多。 – Drew