在我的資料庫中,我有三個表,它們看起來像這樣:
在我的資料庫中,我有三個表。
companies
------------
| company_id |
------------
代理人
---------- ------------
|代理_id |公司_id |
---------- ------------
客戶
------------- ---------- ------------
|客戶_ID |代理_ID |公司_ID |
------------- ---------- ------------
其中每行的第一個id是表的主鍵。
這些是規則:
- 每個公司都有很多客戶 每個公司有零或許多代理商。
- 每個代理商只為一家公司作業 。
- 每個代理商與許多客戶打交道 。
- 每個客戶恰好從一家公司購買產品(假設如此) 。
- 每個客戶可能被分配一個與他們打交道的代理 。
在customers表中的屬性company_id如果客戶被分配了一個代理,技術上可以計算出來(首先我們尋找客戶的代理_id,然后是該代理的公司_id)。
然而,如果公司沒有代理商,或者如果客戶沒有被分配一個代理商,那么company_id必須在customers表中明確。
我如何設計我的資料庫,使customers.company_id與agent.company_id一致,而agent來自customers.agent_id?
uj5u.com熱心網友回復:
你將在agents中定義一個唯一的鍵,結合company_id和agent_id。 像這樣:
alter table agents add constraint unq_agents_company_agent
唯一的(company_id, agent_id)。
然后你將定義一個來自客戶的外鍵:
改變表customers添加約束條件fk_customers_agents
外鍵(company_id, agent_id)參考agent(company_id, agent_id)。
[上面的語法非常通用,但可能取決于資料庫。]
這應該能確保你所指定的條件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/307796.html
標籤:
