Rob*_*rto 1 mysql recursion normalization set
我在用PHP编写的Web应用程序中有几个表,我想知道这是不是很好的实践.
CREATE TABLE `products`(
`product_id` int NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`variations` varchar(255) default NULL,
PRIMARY KEY (`product_id`)
)
CREATE TABLE `variations`(
`variation_id` int NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`kind` varchar(255) default NULL,
PRIMARY KEY (`variation_id`)
)
Run Code Online (Sandbox Code Playgroud)
例如,产品将是:
1,'Cup','1,2,3'
Run Code Online (Sandbox Code Playgroud)
虽然变化将是:
1,'Green','Color'
2,'Glass','Texture'
3,'Blue','Color'
Run Code Online (Sandbox Code Playgroud)
这样许多产品可以具有相同的颜色/纹理.我发现的问题是我无法将其放入将返回数据的单个查询中:
1,'Cup','1,Green,Color-2,Glass,Texture-3,Blue,Color'
Run Code Online (Sandbox Code Playgroud)
然后相应地解析它以显示每个变体的图像.
存储函数是否返回该格式是最好的主意?或者我应该进一步规范化,如果是这样,怎么样?
我认为最明智的是添加另一个表:
CREATE TABLE `products_variations`(
`product_id` int NOT NULL,
`variation_id` int NOT NULL,
PRIMARY KEY (`product_id`, `variation_id`)
);
Run Code Online (Sandbox Code Playgroud)
从那里,加入三个表的简单查询将为您提供所需的结果.
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |