2

経験不足でデザインのジレンマを抱えていた

Server というテーブルがあります。1 つの列で、このサーバーの「所有者」として外部キーを保持する必要があります。ただし、所有者は Vendor または Customer のいずれかになります。したがって、3 つの可能性があります。

1)所有者のタイプごとに列を置きます

Server_Id | Server_Address | Vendor_Id | Customer_Id

2) 所有者のタイプごとにテーブルを作成する

VendorServer_Id | Server_Address

CustomerServer_Id | Server_Address

問題は、ご覧のとおり、テーブルまたは列の数が所有者の種類の数とともに増加していることです。従来のソリューションとは?

4

1 に答える 1

1

以下は、アプローチの短所です。
Sol 1.この場合、明日新しい所有者タイプが登場した場合、その ID を維持するために新しい列を作成する必要があります。また、すべての行で、正規化されていないように見える vendor_id または customer_id のいずれかである可能性があります。
Sol 2.今後導入される新しい所有者タイプ用に新しいテーブルを作成する必要があります。これは本当に高価ですが、 よりも優れていSol 1ます。
次のように2つのテーブルを維持することをお勧めします

Server_Detail:

Server_Id | Server_Address | Owner_Id 

Owner_Detail:

Owner_Id | Owner_Id_Type

Owner_IdinServer_Detailは inのforeign key表です。 今日と. _ _ 値は、値に基づいて解釈する必要があります。以下のよう にテーブルを作成することも賢明ですOwner_IdOwner_Detail

Owner_TypeenumVendorCustomerOwner_IdOwner_Type
Owner_Type

Owner_Id_Type | Description 

foreign keywithテーブルを導入しServerます。これにより、制限付きのみOwner_Typeが許可されるようになります。

于 2012-08-14T13:49:15.387 に答える