我有60多种产品的清单,我想将客户端订阅的产品存储在MySQL表中。做这个的最好方式是什么?截至目前,我将产品存储为JSON在产品列下,因为很容易从不同的语言进行解析。像这样:
{"products": ["SM", "NDVI"]}
在这种情况下,客户已订购了我们的2种产品。我可以想到的另一种方法是在产品列中使用varchar表示总产品的大小(60+)。 例如,假设有5种产品(为便于说明):
00000 ---> Original String
10010 ---> User has subscribed for product 1 and 4
实现此目标的最佳方法是什么?
答案 0 :(得分:1)
处理此问题的标准关系SQL方法是维护三个表:
clients (id, name, ...)
products (id, name, ...)
client_products (client_id, product_id) -- primary key is client_id, product_id
上面的第三张表称为 junction 表,因为它存在于存储客户与其订购的产品之间的关系。例如,要使用示例数据,client_products
可能具有以下条目:
client_id | product_id
1 | 1
1 | 2
在products
中:
id | name
1 | SM
2 | NDVI