簡體   English   中英

根據另一個表的 ID 擴展 ID

[英]Extension of an ID based off the ID of another table

在此處輸入圖像描述 我有兩張桌子。 訂單和托盤。 每個訂單可以有多個托盤。 我想弄清楚是否可以使 PalletID 成為 OrderID 的擴展。 例如,OrderID 為 8000。當將托盤添加到訂單時,托盤 ID 變為 8000-1,當將下一個托盤添加到訂單時,托盤 ID 變為 8000-2,依此類推。

這可能嗎?

是的,這是可能的。

根據第一范式原理,您不應該使用復合屬性(例如“8000-1”,沒有任何RDBMS可以與之建立關系)而是使用兩個屬性(例如“8000”和“1”)一起執行此操作制作復合主鍵

Pallet
-------------------------
PK orderID int NOT NULL 
PK palletNR int NOT NULL 

在這種情況下, palletNR只需要在同一個OrderID中是唯一的。

在 ER 行話中, Pallet將是一個弱實體

這是可取的嗎?

關於復合主鍵是好還是壞,或者使用代理鍵與自然鍵(復合與否),經常存在爭論。 但最終的問題是它是否符合您的目的。

易於閱讀每個托盤的順序和序號對於人類閱讀者來說可能是一個優勢。 但在使用條形碼或 rfid 跟蹤托盤的時代,它真的不再是決定性的信息。

此外,如果您在復合主鍵中使用orderID ,則您無法在沒有第一個訂單的情況下注冊貨盤。 您不能只重復使用傳入的托盤來交付傳出訂單; 您無法提前准備托盤以進行批量交付; 如果您在倉庫之間使用托盤進行庫存移動,那么您也會被搞砸。

這就是為什么我的個人建議是避免它:代理自主PalletID是處理它的最靈活的方式。 如果客戶真的堅持 label 上的訂單號和序列號,您可以輕松地將它們作為可選的托盤數據並為即將發出的托盤計算它們 - 不是關鍵,而只是為了禮貌地將它們打印在標簽上;-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM