0

appointmentsたとえば、いくつかの種類の予定 (目、歯など) を追跡する " " テーブルを想像してみましょう。このテーブルにはID, date, doctor_id, Appointment_type、すべての種類の予定に共通の およびその他の列を含めることができます。次に、各タイプの予定には、この予定の種類に固有のデータを保持するための独自のテーブルがあります。

この設計を選択したのは、すべての予定に共通する大量のデータがあるため、繰り返したくないためであり、各予定には非常に異なるタイプのデータが保持されるため、多くの NULL フィールドを持つ予定表を 1 つだけ持つのは不便に思えました。

ほとんどの場合、すべての予定の種類を一度にクエリする必要があることを知っている場合、これらのテーブルを整理する最善の方法は何でしょうか?

4

1 に答える 1

0

次の 2 つの方法があります。

階層ごとに 1 つのテーブル (別名、単一テーブルの継承) すべての予定の種類のすべての属性を 1 つのテーブルに配置し、「種類」フィールドを使用して予定の種類を区別します。結合がないため、これは高速です。多くの列。

サブクラスごとに 1 つのテーブル (別名、複数テーブルの継承) この方法では、共通フィールドを含む基本クラス テーブルを用意し、ポリモーフィック アソシエーションを使用してサブクラス テーブル内のレコードにリンクします。これは遅く、より多くのテーブルが必要です。すべての予定の種類をクエリする場合、結合を記述するのは難しい場合があります。

あなたのアプリケーション (すべての予定の種類を照会する) では、階層ごとに 1 つのテーブルが適していると思います。

于 2012-11-28T15:44:42.530 に答える