【问题标题】:Edit product selling location using mysql使用 mysql 编辑产品销售位置
【发布时间】:2015-08-23 19:55:43
【问题描述】:

我正在构建一个电子商务平台(PHP + MySQL),我想为产品添加一个属性(功能),能够指定(启用/禁用)特定城市的销售状态。

这里是简化的表格:

城市

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 个城市都可以,但对于大量城市和非常多的产品来说是否实用?

为了更好的“性能”或更好的数据库设计,我应该在查询中添加另一个表到表中(productidcityidstatus)吗?

可用性

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

【问题讨论】:

    标签: mysql e-commerce


    【解决方案1】:

    为了更好的“性能”或更好的数据库设计,我应该添加 另一张桌子

    是的,当然你应该创建另一个表来保存该信息,同样你发布而不是存储在, 分隔列表中,这违反了Normalization 概念。此外,当您尝试JOIN 并了解哪些城市的可用产品的详细信息时,您无法获得更好的性能。

    在任何时候,如果您想取回一个逗号分隔的列表,例如 1,2,4 的值,那么您可以使用 GROUP BY productid 并使用 GROUP_CONCAT(cityid) 来获得相同的结果。

    【讨论】:

    • 使用IN(multipleids)也更容易查询多个城市,谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多