2012-06-18 73 views
0

我正在爲我的項目構建一個簡單的銷售點系統。 該系統有一個名爲Sales的表和另一個名爲Item的表。 在Item表中將有一個名爲itemcode的列,它是一個主鍵。 在Sales表中將有一個名爲itemcode的列,它是項目表中的外鍵引用項目代碼。銷售與物品之間的簡單關係數據庫

問題是我應該使Sales表中的項目代碼引用項目表中的項目代碼的外鍵嗎?

如果是外鍵,如果此特定項目上有銷售,我無法從項目表中刪除特定項目。這是因爲Sales表中存在引用主鍵的外鍵。

如果它不是外鍵,當更新Item表中的項目代碼時,項目代碼不會更新。

解決此問題的任何提示?

回答

0

如果您的商品代碼將因您的數據庫中的某個特定商品而發生變化,那麼它不適合作爲主關鍵字。在這些情況下,我們通常會生成自動遞增和適當的任意ID作爲主鍵,然後在外鍵關係中使用它們。你也吃過蛋糕嗎?它只需要花費更多的索引和高效的色譜柱。 :-)

+0

謝謝,但我如何刪除項目表中的項目,如果該項目不再可用,但仍然需要維護銷售表中的記錄? – Boon

+0

要正確建模,您可以執行以下兩件事之一:要麼單獨跟蹤庫存,要麼在項目表中添加一列表示可用性,並在站點上顯示項目的任何位置使用該列(即WHERE items.currently_available = TRUE) –

+0

謝謝,我會試一試。 – Boon

0

您可以將entity_id作爲項目表的主鍵,並且這將從銷售表中引用。項目代碼將只是項目表中的另一列。

+0

謝謝,但我如何刪除項目表中的項目,如果該項目不再可用,但仍需要維護銷售表中的記錄? – Boon

+0

爲什麼不在產品表中添加一個色譜柱數量,無論何時出售一件產品,數量值減1。如果您的庫存中沒有該項目,那麼數量字段的值將爲0. 恢復原狀有任何疑問 –