1

私はこれらのテーブルを持っています

クライアント

id(PK), name, logo

学校

id(PK), name, logo, client_id (FK)

クラス

id(PK), name, school_id (FK)

主題

id(PK), name, class_id (FK)

アプローチ 1.

サブジェクト ID があります。サブジェクトの class_id、school_id、および client_id を取得する必要があります。Client、School、Class テーブルから ID を取得するために、JOIN を使用してクエリを作成できます。

アプローチ 2

私はこのようなテーブルのデザインを持っています

クライアント

id(PK), name, logo

学校

id(PK), name, logo, client_id (FK)

クラス

id(PK), name, school_id (FK), client_id (FK)

主題

id(PK), name, class_id (FK), class_id (FK), school_id (FK), client_id (FK)

この場合、次のような単純なクエリですべての詳細を取得できます

SELECT * FROM Subject WHERE id = '2'

どちらがより適切で推奨されるアプローチですか? 私は2番目のアプローチが好きですが、それが推奨されるかどうかはわかりません.

ティア

4

1 に答える 1

0

パフォーマンスに関しては、SELECT では 2 番目のアプローチの方が優れています。それはすべて、IDがどれだけ必要かによって異なります。プログラミング構造でも同じです。親構造体へのポインタが必要ですか? それは、私たちが行う操作の種類によって異なります。トレードオフはスペースとシンクロナイゼーションですが、主キーは一意の識別子であるため、ほとんどの場合は問題になりません。

私はそれを混ぜます。あなたのようにすべての外部キーを配置することはありません。Class テーブルには client_id が必要ですか? あなたの場合、サブジェクトに外部キーを配置しますが、パフォーマンスが問題にならない場合は結合を使用します。

また、表 Subject の school_id と client_id は外部キーであることに注意してください。

于 2013-04-21T12:32:52.023 に答える