2014-09-24 57 views
0

我正在尋找處理以下數據庫情況的標準方法。鏈接數據庫表格標準規範

兩個數據庫表 - 一個叫做Part,一個叫Return。在Part我們有關於部件號,成本,收到日期等信息。

Return是如果該部分正在返回給供應商。它將有退貨追蹤號碼,發貨日期和如果貸記。

零件只能有一個Return,但如果Part未返回給供應商,則可能沒有零件。

的3個選項我看到的是:

  1. 把這兩樣PartReturn在同一個表,但我不喜歡這個主意,表將得到太大。

  2. 在「零件」表格中創建一個字段,以引用與其相關的Return記錄的標識。在這裏我擔心的是有可能可能是自由浮動的Return記錄沒有連接到Part

  3. Return表引用Part記錄它關係到的ID的方式創建領域,使得PartId領域獨樹一幟,所以我不能重複Part編號。

使用#2或#3(或者如果這是一個可行的選擇,我猜#1)有沒有優勢或劣勢?

UPDATE:

我應該在現實中這些表會更大,並在應用我會觀看返回和獨立意見零件信息已經提到。

+1

#2將在零件表中創建一個空字段,直到它返回。 #3只有返回時創建的記錄(零件表中沒有空字段)。對於爲什麼#3比#2更可取? – Twelfth 2014-09-24 21:27:12

+0

我喜歡#1,因爲它似乎是這個問題的最簡單的解決方案(到現在爲止) – Leo 2014-09-24 21:30:39

+0

@Leo - 請檢閱更新,你會選擇#1。謝謝。 – 2014-09-24 21:35:57

回答

2

解決方案3: 不同之處在於你不需要在PART_ID唯一約束,只是使它的PK(這幾乎是一樣的)

+0

如果我讀了你的權利,你的建議共享部分與回報之間的主鍵。如果是的話,我可以跳過投入我自己的答案。 – 2014-09-25 10:34:12

+0

@WalterMitty:你是正確的;-) – Gervs 2014-09-25 11:52:13

3

基本上,你有2個實體部分和號碼與1- 1關係,其中一個實體是可選的。
在這種情況下,您應該爲每個實體(即2個表格)創建一個表格,並在返回表格中使用零件的PK作爲參考。這是表示這種關係的標準方式。

+0

每其他評論通過Gervs這將是更好的使部分PK的唯一參考字段中返回表,或使收益表的一部分PK的PK? – 2014-09-24 21:39:57

+0

主鍵是與非空約束的唯一約束,後者是唯一的區別(例如,你可以設置空列的唯一約束) – Gervs 2014-09-24 21:44:53

+0

@Gervs:我不知道這是怎麼與我的answer.As遠我明白的問題也就會表中返回的記錄只有一部分是returned.That記錄必須通過FK約束參考表部的部分記錄(或即使沒有定義FK如果速度是很重要的) – Cratylus 2014-09-24 21:49:30