我正在爲我們的電子商務公司開發交易型庫存系統,並且正在尋找某種指南或教程,介紹如何使用MySQL數據庫完成此操作。有指導如何編程,並指導如何使用這樣的系統,但我一直無法找到具有建議的表結構或實施自己的最佳實踐的資源。高級交易庫存數據庫設計教程或幫助?
在這個系統中,所有的物品都被購買,儲存,轉售,然後發貨(不製造)。該系統應支持多個「位置」(即威斯康星州,北卡羅萊納州)。每個位置可以有一個或多個「倉庫」(建築物彼此相鄰)。每個倉庫可以有一個或多個「島」,每個島有一個或多個「貨架」,每個貨架有一個或多個「箱」。商品儲存在箱子中,每種尺寸/顏色的變化都有自己的箱子。有些物品可能儲存在一個以上的箱子中(即,如果我們每次訂購2000件就可以獲得折扣,那麼我們可能會在一個低箱子中儲存10件貨物,並將其餘貨架放在「庫存積壓」的高架上。
它們的各自位置,用於存放物品是很簡單的,我可能會擁有一個垃圾箱表所示:
BinID BinName LocationID WarehouseID IsleID ShelfID --------------------------------------------------------------------------------- 1 Widget Bin A 1 1 1 1 2 Widget Bin B 1 2 2 5 3 Large Widget Rack 1 1 5 17 4 Widget Overstock 2 3 6 23
再往前區間之間的項目與庫存交易表所示:
TransID SourceBinID DestBinID QTY Date Memo --------------------------------------------------------------------------------- 1 4 1 10 7-22-2011 Moved 10 Widgets...
但這裏的地方我很困惑:
假設它是午夜,並且客戶從網站訂購2個小工具。垃圾箱中有5個小部件。客戶已經爲他的2個小工具支付了費用,所以沒有其他人可以購買它們,但現在是午夜,沒有人工作,所以他的小工具仍然坐在垃圾箱裏。我需要某種交易來減少「可銷售」數量的小部件,而不會減少貨架上的實際數量。第二天,員工挑選這些小部件並將其移至包裝區域。現在需要進行物理交易,以注意物品現在在包裝線上,不再在包裝箱中。但包裝需要是一個特殊的位置,因爲它與普通的「Bin」不一樣,對吧?因此,我們需要將物品從箱子移動到一個特殊的非箱子位置,並且我們需要一個交易條目來做到這一點。
然後還有其他「特殊」的地方,如返回隔離區,以及當該訂單的其他物品處於缺貨狀態時用於放置物品的地方。
如果你知道一本書或在線資源,可以從編程/數據庫的角度解釋如何做到這一點,那就太好了。或者如果有人已經知道如何做到這一點,並願意分享,那也會很棒!
謝謝!
UPDATE:
我已經給這一些更多的思考,它有可能是「可供出售」存貨(我認爲這就是所謂的「手」)可以動態計算。 「所有箱子的總數」 - 「未填充的訂單」=「現有」。問題是,這會變得太慢而不切實際嗎?它需要執行幾個查詢,然後遍歷結果以獲得現有總數。
另一種方法可能是針對「現有」單獨的交易表,但您有兩個庫存日誌 - 「手頭」和「物理」。儘管它們應該始終保持同步(如果不是它是一個錯誤!)它仍然感覺不對?
我還不確定如何處理物理場所。當您發貨時,它已經從庫存中消失,但對於雙重入場風格的會計,它需要去某個地方。所以我需要某種「走出去」的垃圾桶。但是,讓「走出去」和「打包餐桌」的「垃圾箱」也不合適,因爲它們實際上並不是垃圾箱。
UPDATE 3
變動:
MoveID TransID SourceBinID DestBinID Memo --------------------------------------------------------------------------------- 1 1 4 1 Moved 10 Widgets to bin 1 2 2 1 4 Received 10 Widgets from bin 4
問題:
IssueID TransID SourceBinID Memo --------------------------------------------------------------------------------- 1 3 4 Shipped Widget to Customer 2 4 1 Shipped Widget to Customer
交易:
TransID ItemID Date QTY Type --------------------------------------------------------------------------------- 1 1 7-22-2011 10 Move 2 1 7-22-2011 -10 Move 3 1 7-23-2011 1 Issue 4 1 7-24-2011 2 Issue
UPDATE 4
好吧,我要再試一次,沒有現在的分配。
位置表 - 「位置」是一個東西可以在物理上「成爲」的地方。
LocationID LocationTypeID LocationName ------------------------------------------------------------- 1 1 A Widget Bin 2 1 A Widget Bin 3 1 A Widget Bin 4 1 A Widget Bin 5 5 Vendor (nowhere) 6 3 Packing Table 1 7 4 Gone (shipped to customer)
一個位置有一個「類型」。一個位置可以是垃圾箱,積壓庫位,裝箱表,或代表客戶(出站)或供應商(入站)。
位置類型
LocationTypeID LocationTypeName ------------------------------------------------------------- 1 Picking Bin 2 Overstock Bin 3 Packing/Shipping Table 4 Shipped Items 5 Vendor (for reviving)
實物交易 - 當事情走動。
TransID LocationID Debit Credit Memo ------------------------------------------------------------- 1 5 10 Initial purchase of 10 Red Widgets 2 1 10 Initial purchase of 10 Red Widgets 3 1 2 Pick 2 Widgets AND.... 4 3 2 Move them to the packing table 5 3 2 Ship Widgets to Customers 6 4 2 Customer Gets Widgets
那麼你會有一個單獨的「分配」表?當你「挑戰」的時候,是當你挑選和移動物品到航運中,或者當你運送它並將其放置在碼頭上時?我創建了一個上面的單個表格,每個「移動」中有兩個交易。這是你想到的嗎?謝謝! – Nick 2011-04-03 02:05:05
沒有人,我會把它全部放在一個帶有交易類型鑑別器字段的表中。我的經驗是在自定義製作中,所以我們將材料發佈到消耗該材料的作業。在物理上,它由不同的客戶在不同的點完成。 – 2011-04-03 02:18:58
請參閱上面的更新3。像那樣的東西?它似乎仍然不正確。那麼分配是否在移動表中? – Nick 2011-04-04 06:04:09