在Mysql数据库中存储列表

时间:2020-07-16 08:31:13

标签: mysql database list database-design

我有60多种产品的清单,我想将客户端订阅的产品存储在MySQL表中。做这个的最好方式是什么?截至目前,我将产品存储为JSON在产品列下,因为很容易从不同的语言进行解析。像这样:

{"products": ["SM", "NDVI"]}

在这种情况下,客户已订购了我们的2种产品。我可以想到的另一种方法是在产品列中使用varchar表示总产品的大小(60+)。 例如,假设有5种产品(为便于说明):

00000 ---> Original String
10010 ---> User has subscribed for product 1 and 4

实现此目标的最佳方法是什么?

1 个答案:

答案 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