0

次の2つのテーブルがあるデータベースを構築しています。

1)[users]次の列:id、username、password、email(およびその他いくつか)。

2)[user_profile]には、性別、身長、郡、言語など、ユーザーに関する詳細情報が含まれています。

私の質問は2番目のテーブルについてです。言語やペットなど、複数の回答がある可能性のある列に情報を保存するための良い方法は何でしょうか。そのような情報を保存している場合でも、スキーマは良い考えですか?これまでの私の唯一のアイデアは、いくつかのオプションを1つの列にまとめて格納し、それらを「-」文字のようなもので区切ることです。後でDBから情報を取得するときに、複数のオプションを含めることができるこれらの列の情報を「-」で分割します。

これは良い考えですか?より良いものはありますか?

4

1 に答える 1

1

テーブルから行をフェッチした後で追加の解析を実行したい限り、提案されたソリューションは問題ないようです。他のいくつかのオプションが思い浮かびますが。どちらも新しいテーブルを作成する必要があります。私はスキーマデザイナーの専門家ではないので、自由に自分のオプションを批評してください。

1)ここで例として言語を使用して、すべての言語オプションを列挙する言語テーブルを作成します。次に、もう1つのテーブルを作成して、プロファイルから言語へのマッピングを指定します。つまり、2つの新しいテーブルは

Language: Language_Id, Language

User_Profile_Language_Mapping: Profile_Id, Language_Id

このように、User_Profile_Language_Mappingテーブルにエントリを追加するだけで、プロファイルを必要な数の言語に関連付けることができます。

2)今回の例としてペットを使用して、ユーザープロファイルをペットにマップする別のテーブルを作成します。

User_Profile_Pets: Profile_Id, Pet

ペットについてどのような情報を保存したいかわかりませんが、ペットの名前、ペットの種類、またはそのペットに関する多くの情報を指定できるペットテーブルへの外部キーである可能性があります。

私は、すべての可能性(言語など)を列挙できるデータのオプション1が好きです。また、可能性の数に制限がない場合(ペットの名前など)のオプション2が好きです。

于 2012-11-25T17:19:07.953 に答える