只是使它指向引用的表的PRIMARY KEY
:
PO_Table (POId PRIMARY KEY, MainPharmacyID, SupplierID, PreparedBy)
PO_Items_Table (POItemID, POId FOREIGN KEY REFERENCES PO_Table (POId), ...)
其實,在你的PO_Table
我沒有看到除POId
之外的其他候選關鍵字,所以現在這似乎是我唯一可用的解決方案。
你正在考慮什麼是「兩種選擇」?
更新:
把POItemID
在PO_Table
不,除非你想你的訂單,其中沒有任何一個以上的項目的選項。
只要看看它:如果您只有一個列,它將訂購商品的id
存儲在訂購表中,那麼您將在哪裏存儲其他商品?
更新2:
如果有一個一對一的關係,通常你剛剛合併的表:結合兩個表中的所有領域成爲一條記錄。
但是,有些情況下需要拆分表格。說,其中一個實體很少被定義,但有太多的領域。
在這種情況下,您爲第二個實體創建單獨的關係,並使其PRIMARY KEY列也爲FOREIGN KEY
。
讓我們想象一下,它描述了鎖和鑰匙的模型,並且鍵不能重複(這樣一個鎖最多一個關鍵,反之亦然匹配):
Pairs (PairID PRIMARY KEY, LockID UNIQUE, LockProductionDate, KeyId UNIQUE, KeyProductionDate)
如果是一個沒有鑰匙鎖定或不鎖定某個鍵,我們只需將NULLS
放入相應的字段中。
但是,如果所有的鍵有鎖,但只有少數的鎖,鑰匙,就可以拆表:
Locks (LockID PRIMARY KEY, LockProductionDate, KeyID UNIQUE)
Keys (KeyID PRIMARY KEY, KeyProductionDate, FOREIGN KEY (KeyID) REFERENCES Locks (KeyID))
正如你所看到的,KeyID
既是PRIMARY KEY
,並在Keys
表FOREIGN KEY
。
你可能想讀這篇文章在我的博客:
,其中介紹了一些方法來ER
模型(實體關係)映射到關係模型(表和外鍵)
你正在選擇哪兩個選項? – Quassnoi 2009-12-14 15:33:23
「我有兩個選擇」?你覺得你的兩個選擇是什麼?這種情況似乎很清楚PO_Table是PO_Items_Table的父/主。 – 2009-12-14 15:37:23
請不要批評我的判斷。我想在這裏學習。 – Tebo 2009-12-14 15:38:50