使用 mysql 编辑产品销售地点
Edit product selling location using mysql
我正在构建一个电子商务平台 (PHP + MySQL),我想为产品添加一个属性(特征),指定的能力 (enable/disable ) 特定城市的销售状态。
这里是简化的tables:
城市
id name
==========
1 Roma
2 Berlin
3 Paris
4 London
产品
id name cities
==================
1 TV 1,2,4
2 Phone 1,3,4
3 Book 1,2,3,4
4 Guitar 3
在这个简单的示例中很容易查询(使用 FIND_IN_SET 或 LIKE)以检查特定城市的产品可用性。
这对于本示例中的 4 个城市甚至 100 个城市都可以,但对于大量城市和大量产品是否实用?
为了更好的"performance"或更好的数据库设计我应该添加另一个table到table以在查询中加入(productid
, cityid
, status
) ?
可用性
id productid cityid status
=============================
1 1 1 1
2 1 2 1
3 1 4 1
4 2 1 1
5 2 3 1
6 2 4 1
7 3 1 1
8 3 2 1
9 3 3 1
10 3 4 1
11 4 3 1
For better "performance" or better database design should I add
another table
是的,您绝对应该创建另一个 table 来保存您发布的信息,而不是存储在 ,
分隔列表中,这违反了 Normalization
概念。此外,当您尝试 JOIN
并找出在哪些城市可用的产品的详细信息时,您无法获得更好的性能。
在任何时间点,如果您想取回逗号分隔的值列表,例如 1,2,4
的值,那么您可以执行 GROUP BY productid
并使用 GROUP_CONCAT(cityid)
来获得相同的值。
我正在构建一个电子商务平台 (PHP + MySQL),我想为产品添加一个属性(特征),指定的能力 (enable/disable ) 特定城市的销售状态。
这里是简化的tables:
城市
id name
==========
1 Roma
2 Berlin
3 Paris
4 London
产品
id name cities
==================
1 TV 1,2,4
2 Phone 1,3,4
3 Book 1,2,3,4
4 Guitar 3
在这个简单的示例中很容易查询(使用 FIND_IN_SET 或 LIKE)以检查特定城市的产品可用性。 这对于本示例中的 4 个城市甚至 100 个城市都可以,但对于大量城市和大量产品是否实用?
为了更好的"performance"或更好的数据库设计我应该添加另一个table到table以在查询中加入(productid
, cityid
, status
) ?
可用性
id productid cityid status
=============================
1 1 1 1
2 1 2 1
3 1 4 1
4 2 1 1
5 2 3 1
6 2 4 1
7 3 1 1
8 3 2 1
9 3 3 1
10 3 4 1
11 4 3 1
For better "performance" or better database design should I add another table
是的,您绝对应该创建另一个 table 来保存您发布的信息,而不是存储在 ,
分隔列表中,这违反了 Normalization
概念。此外,当您尝试 JOIN
并找出在哪些城市可用的产品的详细信息时,您无法获得更好的性能。
在任何时间点,如果您想取回逗号分隔的值列表,例如 1,2,4
的值,那么您可以执行 GROUP BY productid
并使用 GROUP_CONCAT(cityid)
来获得相同的值。