0

評価フォーム用の MySQL データベースを開発しています。すべての評価者に、マネージャー、プログラマー、経理担当者などの属性を持たせたいと考えています。すべての評価者は、複数の属性を持つことができます。たとえば、マネージャーとプログラマーを同時に兼ねることができます。では、データベースでそれを形成するための最良かつ最も柔軟な方法は何ですか?

すべての属性にブール列を追加する必要がありますか?

INT 列を 1 つ追加して、マネージャー = 1、プログラマー = 2 … プログラマーとマネージャー = 4 … のように各数字に意味を与える必要がありますか?

ENUM を使用する必要がありますか?

4

2 に答える 2

1

あなたが持つことができます:

  1. テーブル属性 (id、名前)
  2. テーブル評価子 (ID、名前など)
  3. テーブル evaluator_attributes( evaluator_id, attribute_id)
于 2013-05-25T08:41:44.737 に答える
1

それは、効率的とはどういう意味かによって異なります。プログラマーでもあるエバリュエーターを検索する際の効率的なストレージ、またはパフォーマンスの観点からの効率性 (たとえば)。

インデックスを使用して特定の属性を検索できるようにする場合は、各属性を個別の列に格納する必要があります。

ビットフィールドを使用する方がスペース効率が高くなりますが (2 番目のアイデア)、効率的に検索する能力が失われます。すべての検索がテーブル スキャンになります。

ENUM は役に立ちません。おそらくSET data typeを意味していました。これは、識別子を使用してフィールドの要素を参照しながらビットフィールドを使用する方法です。これにより、1 つの列に複数の値を格納できます。しかし、これは手動のビットフィールドと同じ検索の制限にも悩まされています。

于 2013-05-25T08:42:03.363 に答える