1

私はDBAではないので、最善の解決策がわかりません。私は2つのテーブルを持っています、

Custumers Table

CustomerId (primary key, identity)
...

Suppliers Table

SupplierId (primary key, identity)
...

複数の電話番号と複数のメールアドレスを保存したい。他に2つのテーブル、Eメールと電話を作成し、それらをCustumersとSuppliersと一緒に使用することを考えました。

Telephones Table

Id
UserId (reference to SuppliersId or CustomerId)
Value
...

しかし、私が顧客やサプライヤーの鍵としてアイデンティティを使用する場合、確かに問題が発生します。私は次のようなことをしようと思っています

Telephones Table

Id
SuppliersId
CustumersId
Value
...

しかし、それが良いデザインかどうかはわかりません。何かアドバイス?ありがとうございました

4

5 に答える 5

3

1 つのアイデア:

Entity (ID (PK), {common fields})
Customer (ID (PK), EntityID (FK), {other fields})
Supplier (ID (PK), EntityID (FK), {other fields})
Telephone (ID (PK), EntityID (FK), Value)

これには、顧客とサプライヤーの間の重複を減らすという追加の利点もあります。

于 2013-01-22T09:22:44.260 に答える
3

良いデザインは

  • 顧客: 顧客のテーブル - CustomerId、その他の列
  • サプライヤー: サプライヤーのテーブル - SupplierId、その他の列
  • 電話: 電話の表 - TelephoneId、その他の列
  • CustomerTelephones: CustomerId、TelephoneId
  • SupplierTelephones: SupplierId、TelephoneId
于 2013-01-22T09:20:49.490 に答える
0

私のアドバイスは、テーブルに ID を割り当ててから、同じデータ型の参照フィールドを SupplierID と CustomerID に追加することです。

于 2013-01-22T09:21:16.787 に答える
0

他の答えはまともな初心者向けのソリューションですが、顧客またはサプライヤーは関係であり、独自のエンティティではないという点で同じ根本的な欠陥があります。顧客は人ではなく、あなたと人との関係です。

実際、人は従業員、顧客、サプライヤになることができます。

顧客またはサプライヤーは、多くの人が関与するビジネスである可能性もあります。

正解は次のとおりです。

PARTY
id
type {individual, organization, automated_agent}
org_name null
first_name null
last_name null

PARTY_RELATIONSHIP
from_party_id FK PARTY
type {supplier_of, customer_of, ...}
to_party_id FK PARTY
from_date
to_date null

Usage:

Insert into party (id, type, org_name) values (1, 'organization', 'Raw Steel Co');
Insert into party (id, type, f_name, last_name) values (2, 'individual', 'Davide', 'X');

-- Raw Steel Co is both a customer of and supplier to you:
Insert into party_relationship values (1, 'supplier_of', 2, getdate(), null);
Insert into party_relationship values (1, 'customer_of', 2, getdate(), null);

現在、null のために単一テーブルの継承を好まない人もいますが、操作は簡単です。気難しい場合は、クラステーブルの継承を使用してください。

「タイプ」列は、タイプ テーブルへの外部キーである必要があります。

于 2013-01-22T18:50:58.463 に答える
-1

あなたは好きにすることができます

Customers: Table of customers - CustomerId, Other columns
Suppliers: Table of suppliers - SupplierId, Other columns
Telephones: Table of telephones - TelephoneId,TypeId,TypeName, other columns

ここで、TypeName はCustomersorになりSuppliers、antTypeIdは resp の ID になります。

于 2013-01-22T09:25:35.863 に答える