2016-04-08 49 views
0

因此,我正在開發一家在線服裝店。正如你所知道的每個產品都有不同的尺寸(只要說我有產品T恤和小號,中號和大號)。如您所知,該產品可能具有多種尺寸,但您只能在數據庫中的產品表中指向一個尺寸。那麼實現它的最好方法是什麼?當產品具有多種尺寸,類別等時,解決方案是什麼?我是否必須爲大小製作幾個bool列,如果大小可用,請將其設置爲true;如果大小不正確,請將其設置爲false?我應該製作一個尺寸表,並通過產品表指向尺寸標識或其他方式?沒有那麼糟糕,因爲尺寸總是一樣的?所以請給我一些關於如何去做這件事的建議。提前致謝。在線商店數據庫中的關係(一種產品有很多尺寸)

+0

我不認爲尺寸或顏色在典型的RDBMS模型中被認爲是「相關的」,就像「屬性」一樣。對於相關的大小,這表明其他記錄也可能與該「大小」表相關。因此,如果「小,中,大」對於T恤來說是獨一無二的,那麼爲這三種尺寸設置一張桌子並不一定是個好主意。 – Anthony

+0

http://2.bp.blogspot.com/-unSSm86LT-k/UNDJPlmVh9I/AAAAAAAAAMA/TKZ7hdQlmHk/s1600/options.png –

+0

取決於您是否需要存儲每種尺寸的數量?在這種情況下,您的產品有代碼,而您的尺寸使用產品代碼和「尺寸」標籤和編號。 – BugFinder

回答

1

他們的方式我wouold到處是這樣的:

  1. ,你的衣服表

  2. 你的尺寸表

  3. 透視表引用大小的ID和ID的一件衣服。通過這種方式,您可以根據自己的需要連接任意尺寸的衣服,並在整個商店中重複使用尺寸。我會做類似的一樣。

這是Laravel所謂的belongsToMany關係,您可以在laravel網站上找到相關文檔。

+0

這似乎最適合我。謝謝! – Codearts

+0

沒問題! :-) – Anoxy

0

設計系統時,不僅要將問題看作「編程」或「數據庫」問題,這一點非常重要。這裏真正重要的是將現實世界的問題翻譯成代碼!

您目前正在設計一家網上商店。你將如何去設計它?簡單 - 通過看現實世界。如果這是實體店,每次收到產品時,都需要注意產品的確切特徵。每個單獨的產品可能都有一個序列號,您必須註冊。所以,你需要一個表格來記錄每個單獨的產品!在這個表格中,你會添加每個的大小和顏色。並且單個產品將具有用於產品數據的FK,其包含條形碼和產品名稱。像這樣的東西,在SQL僞代碼。

CREATE TABLE Product (
    barcode varchar(15) PRIMARY KEY, #Assuming a barcode has 15 characters 
    name varchar(500) not null 
); 

CREATE TABLE IndividualProduct (
    serial int PRIMARY KEY, 
    size varchar(5) not null, 
    color varchar(15) not null, 
    barcode varchar(15) not null, 
    FOREIGN KEY (barcode) REFERENCES Product(barcode) 
); 

順便說一句,我認爲有幾個電子商務軟件,你需要完全準備好你需要的一切。我可以建議使用一個嗎? Drupal可能是PHP的最佳選擇!假設這不是爲了學校,使用現成的解決方案將在許多方面更便宜。

編輯:你可能還需要一個查詢,而不是做一個新表。請記住,查詢也會輸出表格!

SELECT distinct color 
from IndividualProduct IP 
inner join Product P on IP.barcode = P.barcode 
where P.name = 'Nike Shoes'; 

該查詢將輸出特定產品的所有可用顏色,並且您不需要額外的顏色表!您也可以對尺寸進行類似的查詢,如果您想要嚴格,可以將where P.name = 'Nike Shoes'替換爲where P.barcode = '<barcode>'。並非所有的東西都需要一張表來進行查詢!

+0

在產品表中,我存儲了各個項目。例如Nike Tempo Shirt或其他。我想知道Nike Tempo Shirt有哪些尺碼和顏色可供選擇。我正在考慮顏色表或尺寸表的唯一原因是他們重複自己。顏色表不是問題,因爲產品大多隻有一種顏色,但尺寸並非如此。所以如果一個產品有3種不同的尺寸,我可以指向一個。我對數據庫很陌生,所以我不確定要走哪條路。這不適用於學校,但我使用Laravel進行學習。 – Codearts

+0

然後你不需要額外的表格。進行查詢以獲取所需內容。我用細節編輯了我的答案! –

1

從你說的話,我會創建這些實體:

  • 產品
  • PRODUCT_TYPE
  • SIZE_TYPE
  • 大小

這將是關係:

 

    product_type 1 ---> m product 
    size_type  1 ---> m product_type 
    size_type  1 ---> m size 

方法如下:

  • product使用product.product_type_id
  • product_type表將定義類型的服裝產品將持有這將與product_type有關個別產品的記錄;這是因爲不同類型的服裝產品需要不同的尺寸組合;例如褲子大小不同於T恤,領襯衫,小孩等; product_type將有size_type_id列鏈接到大小類型
  • size_type表將定義大小類型;例如kids_shirts,mens_pants
  • size表將保存實際大小,並將通過size.size_type_id字段鏈接到size_type;這將包含行SMLXL ... 34x3236x3038x34

零售行業使用的術語叫SKU來定義產品,尤其是它關係到庫存管理。當您創建出售物品時,您可能需要考慮如何跟蹤庫存,這將決定您創建的SKU。鑑於上述關係結構,它應該使您能夠創建列出所有項目的sku表格。它至少會有這些列:product_id,size_id,也可能是其他人,如color等,以及鏈接到您的系統的庫存部分的一些方法。

相關問題