2

SQLでは、テーブル内の1つの列が複数のテーブルを参照できますか?

たとえば、テーブルemployee(PK emp_id, name)とcustomer(PK cust_id, name)がある場合

テーブルを作成できますかcontact(id参照[employee, customer], number);

または、必ず2つのテーブルを作成する必要がありますか。

contact_custcust_id参照customer, number)およびcontact_empemp_id参照employee, number

最初の選択肢が可能であったとしても、2番目の選択肢の方が良いことを私は知っています。私はただ知りたいのですが、最初の方法は可能ですか?

4

2 に答える 2

5

いいえ、できません。1つのオプションは、最初に従業員/顧客を「当事者」または「利害関係者」として一般化することです。
つまり

TABLE: Party(PK Party_Id,
             Name)  
TABLE: Employeee(PK Emp_Id REFERENCES Party.Party_Id, 
                 Salary)  
TABLE: Customer(PK Cust_Id REFERENCES Party.Party_Id,
                CreditRating) 

次に、ContactはPartyを参照します。

于 2012-07-20T11:59:13.760 に答える
3

いいえ、2つの異なるテーブルを参照する外部キーを持つ単一の列を持つことはできません。

于 2012-07-20T11:38:49.840 に答える