2014-10-06 47 views
0

我正在尋找一個MySQL數據庫中的3個表,用於控制在線商店中銷售的物品。 3個表如下:MySQL:兩個表獨有的關鍵字段值

  1. 經常項目
  2. 停產項目
  3. 進銷存

我已經分裂成項目2個表,以防止不必查找整個當前網站並在網站上列出銷售物品時停用物品。該網站只需要列出當前的項目,所以我認爲這樣做會加速網站的發展。列出庫存的查詢將頻繁運行。

一旦物品不再銷售,它們將被「倒出」到停產的表格中,並且新物品將被添加到當前物品表格中。

每張發票都會引用項目數據庫(當前或已終止)的唯一鍵字段以標識該發票上的項目。

爲了實現此目的,當創建新項目並將其添加到當前項目表格時,關鍵字段對兩個表格都必須是唯一的。否則,開票時可能會引用2個項目,因爲它通過當前和已停用的表格來查找每個發票上的項目。

有沒有辦法給一個獨特的2個不同的表分配一個唯一的值?

非常感謝提前。

+0

戈登的答案忘了提到你幾乎從不擔心發展過程中的表現。只有當您有良好的統計數據顯示您的應用程序運行緩慢時纔會執行性能修復。在開發應用程序時,您需要擔心的是良好的編程實踐和數據一致性。 – Alternatex 2014-10-06 11:36:51

回答

1

這似乎是一個糟糕的設計。

取而代之的是,在items表中可能只有discontinued標誌 - 可能還有DiscontinuedDate

這將允許您保持參照完整性。它將簡化查詢,因爲項目引用將始終轉到一個表格。

如果您願意,您可以在items表上創建兩個視圖:v_ItemsCurrentv_ItemsDiscontinued。這些將使用where子句來選擇適當的一組項目。

+0

感謝您的回覆。我有點可伸縮性的良知。經過幾輪停止物品,然後添加新的股票,表格將開始變得相當大。當用戶連接到我的網站時,需要搜索整個表以返回總條目的一小部分。幾乎每次有人訪問該網站時都會運行該查詢。看起來很浪費必須運行這個查詢,這就是爲什麼我希望拆分表。 – hojkoff 2014-10-06 12:01:54

+0

@hojkoff。 。 。你認爲什麼是相當大的? MySQL可以輕鬆處理包含數百萬行的表。您可能需要了解諸如索引和分區等策略以獲得所需的性能。 – 2014-10-06 15:18:09