2012-05-08 42 views
0

我正在創建訂單系統以跟蹤訂單。大約有60種左右的產品,每種都有自己的價格。該系統雖然不是很複雜,但只需要能夠提交訂購人每件產品的數量。MySQL - 分解更多表?

我的問題是,是不是更有效率有一個「訂單」表,與代表多少每個代表每個產品列,和數值他們下令..,例如:

orders 
    id 
    product_a 
    product_b 
    product_c 
    etc... 

OR

我應該把它分成不同的表格,用多對多的表格來加入它們。像這樣也許:

customers 
    id 
    name 
    email 

orders 
    id 
    customer_id 

products 
    id 
    product 

orders_products 
    order_id 
    product_id 

回答

0

始終致力於未來的功能和擴展。當你不得不重新設計和重構整個事物時,這裏或那裏的捷徑似乎總會讓你感到吃驚。查看規範化以及爲什麼要分離關係數據庫中的每個獨立元素。

經常有人問我:「爲什麼讓一個單獨的表,當這種方式比較簡單?」然後提醒他們:「哦,有沒有其他的這種類型的東西,我們會用」再後來讓他們問這個功能需要多對多的功能,而不會意識到他們不會考慮未來的功能而將您帶入角落。不瞭解數據結構的人往往無法意識到這一點,並且在指定系統要求方面很差。這通常發生在數據庫開始變大時,他們意識到他們只想查看數據的一部分。扁平DB意味着添加列來處理大量不同的需求,而多對多的連接表可以用幾行代碼來完成。

1

喜歡你你的第二個樣本中顯示我會打破它分開。這將使您的應用程序更具可擴展性,並且仍然非常高效。

0

我也會用第二種方法。如果數據庫很簡單,就速度而言,差異可能並不大。但第二種方式更有效且易於重用/增強,以便在您獲得新的想法並添加到您的應用程序中。

0

如果您選擇第一種情況,您將如何跟蹤每種產品的價格和折扣情況?即使你現在沒有計劃跟蹤它,這是很常見的事情,所以可能會有這樣的變化請求。

使用標準化模式,您只需添加幾個字段即可。