0

私は次のようなユーザーテーブルを持つデータベースを持っています:

table users:
user_id (int)
user_name (varchar)
etc..

このユーザーは、次のようないくつかの要件を満たすことができます。

  • 最小給与(int)
  • 運転免許証を持っている(bool)
  • 私の他の要求(テキスト)

の戻り値は次のUser->get(user_id);ようになります。

user_id: 1,
user_name: 'John Doe',
user_requirements: {
    minimal_salary: 2000,
    drivers_license: true,
    demands: 'These are my demands..'
}

これをデータベースに保存するための最良の方法は何でしょうか?

私はあなたが1対1の関係を使うことができることを知っています。(結合または個別のクエリが必要になります)すべてを1つのテーブルに格納できます。(コードの微調整が必​​要になります)これを、要件テーブルのタイプ(int / bool / text)との多対多の関係に正規化できます。

編集

注:ユーザーテーブルにはすでに25列ありますが、3列から6列のデマンドを追加した場合、違いはありますか?目には、1つのテーブルで多くの情報を取得します。

4

3 に答える 3

2

複雑さがあるかどうかわからないため、このデータを格納するために 1 つのテーブルのみを使用します。

オプション 1: (1 つのテーブルのみを使用)

|--------|-----------|----------------|-----------------|------------------------|
 user_id   user_name   minimal_salary   drivers_license           demands
|--------|-----------|----------------|-----------------|------------------------|
     1     John Doe         2000             true         These are my demands..
|--------|-----------|----------------|-----------------|------------------------|

オプション 2:parametersより多くの場合は、1 つを作成し、もう1 つをuser requirements作成して、もう1 つのテーブルに入れることができます。その後、レコードを取得できます。two tablesusersrequirementsuser_id as foriegn iduse a join

お役に立てれば。

于 2012-05-09T13:21:06.540 に答える
1

他のユーザーに共通するデータがないため、1 つのテーブルに格納できます。

たとえば、要求がリストから選択される場合は、その可能なリスト エントリを別のテーブルに格納することをお勧めします。

すべてのフィールドが常に必要なわけではない場合は、必要なフィールドのみを選択してください

しないでください

select * from users where user_id = 123

行う

select minimal_salary, drivers_license from users where user_id = 123
于 2012-05-09T13:13:52.500 に答える
1

ユーザーが独自のフィールドを指定できる機能を提供しない限り、情報を別のテーブルに分割する必要がある理由はわかりません。これらの情報フィールドはすべて、1 人の個別のユーザーに適用されます。

于 2012-05-09T13:14:30.590 に答える