3

データを正規化する場合、同じテーブルで外部キーを繰り返すことは許容されますか?

たとえば、宅配会社には注文フォームと顧客フォームがあり、注文フォームには、アイテムを受け取る顧客(Customer_ID)がログに記録され、配送先の顧客(Customer_ID)の列もあります。

4

1 に答える 1

2

それは完全に受け入れられます。2つのインデックスは別々に維持されます。2つの関係は別々に使用できます...

select item, name, address from orders inner join customers on orders.sender = customers.id where orders.id = 5;
select name, address from orders inner join customers on orders.recipient = customers.id where orders.id = 5;

または一緒に(注意して)

select item, name as sender_name, address as sender_address, recipients.name as as recipient_name, recipients.address as recipient_address from orders inner join customers on orders.sender = customers.id inner join customers as recipients on orders.recipient = recipients.id;

カスケード削除には注意してください;)

于 2012-10-30T13:35:24.217 に答える