我正在寻找一些关于mySQL数据库的想法,以存储具有多个(和可变)选项和每个产品价格的产品。例如。某些产品可能需要多个列来存储每个产品选项的详细信息:
Product 1:
SKU
Name
General product description
--------------------------
options for product 1:
Height Width Depth Weight Material Other_1 Other_2 Etc... Price
Product 2:
SKU
Name
General product description
--------------------------
options for product 2:
Flow-rate Material Weight Other_1 Other_2 Etc... Price
我有点难过,因为每个产品的列数和列名数可能不同,每个产品可能包含很多选项/价格。
到目前为止,我正在使用'产品'表和'价格'表:
CREATE TABLE IF NOT EXISTS `products` (
product_id int(11) NOT NULL AUTO_INCREMENT
,product_type text
,product_page_1 text
,product_page_2 text
,product_page_3 text
,product_page_4 text
,product_sku text
,product_name text
,product_head text
,product_desc text
,product_image text
,product_sequence text
,product_flags text
,product_status text
,PRIMARY KEY (product_id) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=102;
CREATE TABLE IF NOT EXISTS `prices` (
price_id int(11) NOT NULL AUTO_INCREMENT
,price_type text
,price_assoc text
,price_desc text
,price_option text
,price text
,price_sequence text
,price_flags text
,price_status text
,PRIMARY KEY (price_id) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=109;
每种产品可以有任意数量的“价格”。 “价格”通过“price_assoc”字段与产品ID相关联。
所以我可以为每种产品提供无数的价格条目,但是最新的方法是每个价格添加多个价格选项,因为每个产品的相关价格可能有不同的选项?
答案 0 :(得分:1)
您正在寻找的是EAV表。实体 - 属性 - 值。 那就是你有记录表的那种结构,然后是一个子记录表。
记录表:
ID 名称 活性
子记录表:
ID RECORD_ID 键 值
然后你可以在一个连接查询中获取记录,以及所有子记录。所以子记录与记录有一对多的关系。
github中有一个php示例:here
答案 1 :(得分:1)
即使它是相同的产品,我也可能会使用同一列的价格。因此,不必为每行的价格和描述指定4列。为什么不创建一个只在行上显示价格的表格,一行用于描述/选项/文本等,然后可以创建一个'price-ID'字段来跟踪不同的价格水平。
假设您有一种产品,产品A,有4种不同的价格,那么您的价格表将如下所示:
product_id product_name price description option text price_ID
1 Product A 100 'Bla bla' A bla 1
1 Product A 250 'Bla bla' B bla 2
1 Product A 400 'Bla bla' C bla 3
1 Product A 500 'Bla bla' D bla 4
通过这种方式,您可以根据需要为每种产品提供尽可能多的价格,并且可以降低数据库的复杂性