データを正規化する場合、同じテーブルで外部キーを繰り返すことは許容されますか?
たとえば、宅配会社には注文フォームと顧客フォームがあり、注文フォームには、アイテムを受け取る顧客(Customer_ID)がログに記録され、配送先の顧客(Customer_ID)の列もあります。
データを正規化する場合、同じテーブルで外部キーを繰り返すことは許容されますか?
たとえば、宅配会社には注文フォームと顧客フォームがあり、注文フォームには、アイテムを受け取る顧客(Customer_ID)がログに記録され、配送先の顧客(Customer_ID)の列もあります。
それは完全に受け入れられます。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;
カスケード削除には注意してください;)