2011-03-11 62 views
0

我剛開始學習數據庫/ SQL之類的旅程。我決定爲我工作的一家公司做一些數據庫,幫助我們組織一些。數據庫設計問題(未知數量的列?)

其中一個表格將簡單包含我們庫存中的所有單個零件,其中包含以下列:PartNumber,Description和StockQty。

另一張表中將包含我們製作的所有硬件套件。所有這些都是由我們庫存中的部分組合組成的。

我最初的想法是有諸如PartNumber,KitName,Part1Number,Part1Qty,... PartNnumber,PartNQty等欄。零件列中的數字將是第一個表中的零件數量。

所以,因爲並不是所有的包有相同數量的零件我只是要知道有多少部分是最大的套件,並有許多部分列。但是,如果我必須添加更多部件的新套件,該怎麼辦?

有沒有更好的方法來做到這一點?

任何建議將不勝感激!

謝謝!

回答

13

你應該改掉你的第二個表分爲兩個新的,一個工具包,以及一個屬於套件的部件。

表需要:

PARTS(PartNumber, Description, StockQty) 
KITS(KitNumber, KitName) 
KITSPARTS(KitNumber, PartNumber, PartQty) 

這樣一來,你每增加屬於一個套件獨特的一部分進入到KITSPARTS表。

樣本數據:

PARTS 
1, "Apple", 1 
2, "Orange", 2 

KITS 
1, "Salad" 

KITSPARTS 
1, 1, 1 
1, 2, 1 

樣本數據模型的單一試劑盒, 「色拉」,用兩個部分; 1「蘋果」和1「橙色」。

+0

謝謝!光環和你的答案真的爲我清理了一些事情。 – 2011-03-11 16:53:08

3

這是關係數據庫設計中的一個非常基本的問題。解決方案很簡單:創建一個包含表A和B之間關係的第三個表。

表A產品:

  • ID 1,名稱爲 「汽車」
  • ID 2,名稱爲 「自行車」

表B部分:

  • ID 1,名 「車輪」
  • ID 2,名稱爲 「座椅」

表C的關係:

  • ID 1,產品1,第1部分,數量4
  • ID 2,產品2,第1部分,數量2
  • ID 3,產品1,部分2,數量4
  • ID 4,產品2,第2部分,數量1

希望您能理解該示例。繼續使用SQL,並開始學習!我可以推薦購買一本介紹基本SQL知識的好書,並用SQL加速你的成功。

2

++對於上面的答案。

你應該開始思考鍵這些表的現在。每個表應該有東西,這將有助於唯一地識別一行 - 明智地做到這一點,這將確保你不能得到重複的行,這會弄亂你的數據。

下面是一個非常簡單的例子。

CREATE TABLE Parts (
    [PartNumber] INT 
    , [PartDescription] VARCHAR(50) 
) 

的部分號碼列將使一個很好的PRIMARY KEY(假設沒有兩個部分THET你永遠不會有將具有相同的部分號碼)唯一定義行中的財產,並已含義和它本身是一個NATURAL KEY的示例

CREATE TABLE Kits (
    [KitNumber] INT 
    , [KitDescription] VARCHAR(50) 
) 

再次 - KitNumber將是一個很好的主鍵。如果試劑盒沒有NATURAL KEY,那麼你可能會讓KitNumber成爲一個簡單的自動增量SURROGATE KEY。

現在到了更復雜的表格。模擬部件和套件之間的鏈接。 (試劑盒由部件組成)。

CREATE TABLE KitParts (
    [KitNumber] INT 
    , [PartNumber] INT 
    ) 

因此,此表包含的唯一信息是工具包和零件之間的鏈接。 PRIMARY KEY應該是什麼?

如果你想一想唯一標識一排就是兩列的組合。因此NATURAL KEY是([KitNumber]和[PartNumber])。這被稱爲複合密鑰。

此外,此表應添加一些FOREIGN KEY約束。例如,[KitNumber]不應該包含Kits表中不存在的值.......

祝你好運。歡迎來到SQL開發。

+0

感謝您的額外信息! – 2011-03-11 18:27:54