0

これが私の2つのテーブルの構造です(太字の主キーとイタリック体の外部キー)

service_agreements( id , client_id, amount, date_begin, duration, *services_id_1*, *services_id_2*, *services_id_3*, *services_id_4*) services( id , date_provided, description, staff_person)

テーブルの背後にある考え方は、契約に基づいて、会社が最大 4 回までサービスを提供するというものです。ご覧のように、service_agreements テーブルの 4 つのフィールド (services_id_1,...) には、サービス テーブル (id フィールド) との 4 つの 1 対 1 の個別の関係があります。通常、2 つのテーブル間の関係は 1 つしか見たことがないので、少し変わっているように思えます。so.i は、これが異常なのか、それとも OK なのかを知っています。異常な場合は、(サービスのフィールドを service_agreements にマージせずに) より良い解決策は何かを知っています。サービス テーブルには、契約なしで提供されるサービスに関するレコードも含まれているためです。)

4

1 に答える 1

0

構造はさらに良くなる可能性があります。

service_agreements( id , client_id, amount, date_begin, duration);

services( id , date_provided, description, staff_person);

service_agreements_services( id , type enum(service1,service2 など), service_agreement_id , service_id );

新しいテーブルservice_agreements_servicesは、service_agreement とサービスの間の多対 1 の関係を追加します。

利点:
1) 提供するすべての新しいサービスに対して、新しい挿入があります (通常、更新よりもオーバーヘッドが少なくなります)
2) より大きなサービスを提供することさえできます:)
3) テーブルの関係が簡単になります。

ありがとう

于 2014-02-26T18:35:28.163 に答える