-1

我需要一個庫存數據庫,我想出了以下內容:庫存數據庫

enter image description here

兩個結構的和容器的的PK也FKS到地方的PK。 PLACE也有一個PARENTID列,所以我可以將一個容器放在一個容器內部和一個結構內。

因此,INV_ITEM可以存儲在結構體或容器中,而容器可以放置在另一個容器中,也可以放置在具有遞歸關係的結構中。

與設備相同。我可以將它存儲在結構本身或容器中。

問題是我還可以將一件設備,一個容器或一個庫存物品存儲在未指定爲容器的設備中。例如,汽車和扳手都是設備,扳手可以存放在汽車內或汽車內的容器中。我該如何解決這個問題?

更新
更多細節
結構:採用各種用途的建築物。可以是倉庫,工廠,棚屋等。
容器:用於駐留在結構中的存儲的更具體位置。可以是物品,如箱子或托盤,也可以是「抽屜3」的位置。如果它是一種物理物品,其唯一目的是存儲物品,那麼它是一個容器,而不是設備。
設備:公司使用的工具。一輛汽車,一把扳手,一輛叉車。不作爲產品銷售。可以存儲在結構或容器中。有一個「序列」列來唯一標識它。
INV_ITEM:產品,公司常規購買或銷售的任何產品。股票。例如襯衫,燭臺,太陽鏡,螺絲。它還包括公司設備的燃料。可以存儲在結構或容器中。有一個「數量在手」列。
位置:解決STRUCTURE和CONTAINER之間的專有弧問題並允許我們將容器放置在結構中的基表。

+0

您的文字看起來不符合您的照片。 CAR是一個地方?看起來不像是這樣 - 所以你的問題不應該基於圖像出現。 – Randy 2015-04-06 12:54:12

+0

就是這樣,一輛汽車屬於EQUIPMENT表。但是如果你想在其中存儲扳手,這也在設備表中?我可以使設備成爲一個地方,但這對扳手和大多數其他設備來說沒有意義。 – JohnAPaul 2015-04-06 13:13:35

+0

庫存商品和設備之間有什麼區別?在庫存數據庫中,我希望其中的所有內容都是庫存或維護(存儲/運輸)庫存所需的東西。當我看到「設備」時,我想到了貨架,叉車,垃圾箱,卡車,貨船等等。那麼一輛汽車是如何製造設備的,而不僅僅是另一個庫存物品? – TommCatt 2015-04-10 17:32:16

回答

0

幾點。

  • 表單如下函數,所以如果汽車也可以是一個容器,那麼你的模式也必須顯示。但在你做之前,車內的扳手是否屬於你自己的假設條件?因爲通常情況下,一個庫存物品不能放置在第二個庫存物品中,除非它是該物品的一部分,不管它可能做多少邏輯上的感覺。例如,備胎。但在這種情況下,備用輪胎不是一個單獨的項目,它是汽車的一部分。
  • 此外,通過將PARENTID放置到位,您還可以說可以將結構放置在容器內部的結構中。那是你要的嗎?

因此,您可能要考慮的一個變化是將PARENTID移動到Container。而且,除非這是一項家庭作業,並且是作業的一部分,否則不要擔心將物品放入其他物品中。這通常不是真實的情況。

+0

我的設計沒有出現問題,直到我想到這種特殊情況下,將設備存放在另一臺設備中才有意義。將扳手存放在車內是有意義的,這是現實生活中的情況。我不想將扳手存放在一個結構中,我想把它放在我的車裏。如果我把扳手放在汽車的一個容器裏呢? – JohnAPaul 2015-04-11 00:01:28

+0

是的,我可以在容器內部的結構中放置一個結構。有趣的,不是嗎?但是,如果我將PARENTID移動到CONTAINER,我不能在容器內放置容器。 STRUCTURE和CONTAINER的PK也是PLACE PK的FK。 PLACE存在是因爲STRUCTURE和CONTAINER之間有一個獨佔弧 - INV_ITEM或EQUIPMENT可以存儲在結構中或容器中。顯然一個設備可以存儲在另一個設備中,這就是我卡住的地方。 – JohnAPaul 2015-04-11 00:04:03

+0

我認爲在這一點上你必須在你的定義中更清楚。什麼是結構和什麼是容器?他們是如何相似以及有何不同?什麼是庫存物品和什麼是一件設備?比較和對比。現在這些只是文字。要模擬「事物」,我們必須知道這些事物的特徵。給我們一些。 – TommCatt 2015-04-11 01:59:10