2012-07-22 93 views
1

我正在升級網站以啓用產品變體 - 目前網站只提供獨立產品,但現在需要提供特定產品的變體,例如,大小或顏色。目標是讓網站管理員輕鬆插入/編輯產品變體。產品變體的數據庫結構

目前的結構如下:

table product 
============= 
id 
name 
description 
category_id 
price 
stock_level 

字段「價格」和「stock_level」現在需要相關每個產品變型。

產品可以有變體,例如多種組合:

  1. 產品ID 5 - 大小:小,顏色:黑色
  2. 產品ID 5 - 大小:小,顏色:棕色

在前端有兩個下拉列表來選擇變體(尺寸和顏色)。在選擇所需的變體後,將值發佈到運行SQL查詢的PHP腳本,以檢查該特定變體組合是否可用。

我很努力想出一個解決方案。我目前創建了以下功能,我認爲這是一個起點:

  1. 能夠創建/編輯變體類型例如尺寸或顏色:

    table variant_type 
    ================== 
    id 
    name 
    
  2. 能夠將值賦予變體類型,小,大,黑色,棕色:

    table variant_type_value 
    ======================== 
    id 
    name 
    variant_type_id 
    

我竭力拿出設計爲表(S)將存儲產品變形組合(包括其價格和庫存水平)。請記住,在後端將會有一個表單「添加新的變體」 - 在這種形式下,管理員需要選擇「尺寸」,「顏色」,「價格」和「庫存水平」添加/編輯變體時。

回答

2

我認爲最簡單的方法是有一個產品表;這將有變異的所有細節在裏面,通過包括對產品表的外鍵,以及大小和顏色表:

table variant 
============= 
variantID 
productID 
sizeID 
colourID 
stock 
price 

table product 
============= 
id 
name 
description 
category_id 

table size 
========== 
sizeID 
sizeName 

table colour 
============ 
colourID 
colourName 

所以,你可以通過加入都得到了變種的細節四張桌子在一起。與產品相關的信息通常在product表中,您可以通過創建新表並將其鏈接到variant表中來添加其他類型的變體。

Editted補充:

這樣一來,你就需要添加額外的表,如果你想添加一個新類型變種。你也可以繞過它通過合併所有的變量可能進入一個變種表:

+--+------+------+ 
|ID|Type |Option| 
+--+------+------+ 
|1 |Colour|Brown | 
|2 |Size |Small | 
+--+------+------+ 

你會然後在主產品表有多個外鍵從variantInfo

我不喜歡那樣 - 我不喜歡存儲在同一個表中的多種類型的信息。我只是覺得它很混亂,你需要讓編程邏輯更加複雜。如果你想有額外的變體類型,我建議現在把它們全部設置好 - 這是一個額外的工作,其中一些不會被使用,但我認爲維護起來要容易得多。

+0

這聽起來不錯,但它不會允許網站管理員添加/編輯變體TYPES ..它只會在一組固定的變體上工作。 – GSTAR 2012-07-22 18:55:50