MySQL-是存储多个字段还是一个CSV字段?

时间:2018-09-09 14:42:46

标签: mysql csv product

我有一个PRODUCTS表,并且需要实现一个可用性系统,以便能够按工作日过滤产品(例如,产品仅在星期五提供)。

我不确定是否应该添加一个包含7个逗号分隔的bool值的“可用性”列,每个值代表每个工作日,还是添加7个不同的列。

我不太喜欢CSV方法,它也需要后处理来过滤数据,但是对于我来说,多列似乎不是一个好习惯。 我当时在想,但在另一个表格中,例如格式为PRODUCTS_AVAILABILITY

| id | mon | tue | wed | etc...

我应该使用哪种方法?

2 个答案:

答案 0 :(得分:0)

多个字段。

如果没有,则在进行任何处理之前,您需要将数据提取为编程语言。您将无法为数据建立索引。

继续阅读数据库规范化

答案 1 :(得分:0)

您应该使用多对多表PRODUCTS_AVAILABILITY:

product_id | day | availability
一个表产品中的

或json字段(如果使用MySQL 5.7+) https://dev.mysql.com/doc/refman/5.7/en/json.html

...fields | availability 
            JSON_TYPE('{1:true, 2:false...}');