gpt4 book ai didi

php - 数据库结构(mysql): How to manage the set of specifications for every subcategory?

转载 作者:行者123 更新时间:2023-11-29 01:32:39 26 4
gpt4 key购买 nike

我正在使用 PHP 和 MySQL 构建一个在线商店,但我遇到了一个很大的困境。该商店有大约 50 个产品子类别,例如:笔记本电脑、上网本、HDD、RAM、软件、游戏等),其中分为 8 个主要类别(例如:笔记本电脑 [笔记本电脑、上网本...等])。

因此,现在对于每种产品,客户都希望管理规范字段或属性。但有50套规范各不相同。基本上如何做到这一点?

我想我必须在数据库中创建 50 个具有特定字段的表。另一个想法是制作 8 个大表,其中包含所有子类别的所有规范字段,如果规范不适用于该产品,则用“null”填充它......这是错误的,因为插入产品时我不知道如何构建插入过程来执行此操作

INSERT INTO table_name VALUES ('','','','','','some specification','','some specification'....etc)`

如何管理每个子类别的规范集?

规范如下:

  • 制造商:索尼
  • 处理器:英特尔酷睿 i3
  • 内存:3 GB DDR3

规范需要由店主创建...他想为每个子类别设置规范...例如:笔记本电脑需要有这个规范(制造商,处理器,内存...等),硬盘需要有这个规范(容量、转速等)...所以基本上他想创建规范,这太复杂了...如果规范得到修复,问题就消失了。

每种产品都有不同的规范...(不仅是规范名称,还有规范本身。例如显卡、内存、硬盘等)。

最佳答案

我认为最好有单独的属性表,如下所示:

create table attributes(
id bigint not null AUTO_INCREMENT PRIMARY KEY,
attribute_name varchar(300),
#any other field definitions, like data type, allowed range, etc.
)

以及链接表category_attribute,就像这样:

create table category_attribute(
category_id int references category(id),
attribute_id int references attributes(id),
str_value varchar(1000),
#if you are going to have different data types for each attribute you'll add it here
#int_value int,
#date_value timestamp ...
)

因此,您将拥有非常灵活的架构,允许您轻松添加/删除/修改属性和类别=>属性关系。

用于检索适用于 id =1 类别的所有属性的 SQL:

select * 
from attributes a
join category_attribute ca on ca.attribute_id = c.id
join category c on c.id = ca.category_id
where c.id = 1 #or any other condition here

这也会减少存储的数据量。

实时示例(仔细阅读您的问题并稍微更改架构,我相信更改是显而易见的):

category(1,'Computers')
category(2,'Cell Phones')

attribute(1, 'Manufacturer')
attribute(2, 'Cost')
attribute(3, 'GSM standards')
attribute(4, 'Hard Disk capacity')

category_attribute(id=1,category=1,attribute==1)
category_attribute(id=1,category=1,attribute==2)
category_attribute(id=1,category=1,attribute==4)
category_attribute(id=1,category=2,attribute==1)
category_attribute(id=1,category=2,attribute==2)
category_attribute(id=1,category=2,attribute==3)

product(1, 'iMac', category = 1)
product(2, 'iPhone', category = 2)

product_attribute(product_id=1, category_attribute_id=1, 'Apple')
product_attribute(product_id=1, category_attribute_id=2, '$300')
product_attribute(product_id=1, category_attribute_id=4, '500Gb')
product_attribute(product_id=2, category_attribute_id=1, 'Apple')
product_attribute(product_id=2, category_attribute_id=2, '$200')
product_attribute(product_id=2, category_attribute_id=3, 'GSM 900/1800/1900')

关于php - 数据库结构(mysql): How to manage the set of specifications for every subcategory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6992995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com