在mysql中存储整数数组

时间:2014-05-22 21:55:54

标签: mysql database

我有一张桌子,我想在其中存储所选天数列表(周日至周六)但为了保持简单,我希望以1到7的整数存储。

做一些研究我找到了两种方法来正确处理这个问题"正确"。

为每一天创建布尔列..."星期一" ="错误"如果没有选择等。

我真的不喜欢这个......太多列了

另一种方法是拥有一个只包含复合键的表

例如day_event

dayID eventID

所以如果

事件1有第1天2 3

并且事件2有第2天5它会是这样的

day : event
1 : 1
2 : 1
2 : 2
3 : 1
5 : 2

然后我可以从day_event中选择* eventID = 2等等,以获取我的日期列表.... 但我真的不喜欢这样......只是为了存放几天?

对我而言,拥有一个类似于' days'的字符串列似乎更简单,更实用。喜欢" 1,2,3"和" 2,5"分别是错误的 可能是。

还有其他解决方案吗?

1 个答案:

答案 0 :(得分:2)

您可以将其存储为SET column,定义如下:     CREATE TABLE table_name

    /* ... */

    `column_name`SET(
        'Monday',
        'Tuesday',
        'Wednesday',
        'Thursday',
        'Friday',
        'Saturday',
        'Sunday'
    ),

    /* ... */
);

一个集合就像一个位掩码,所以(例如)星期一和星期三可以同时在列值中激活。

集合限制为总共64位(即64个值) - 在您的情况下不是问题。

在你的情况下,SET类型非常合适,因为你甚至可以用很少的开销来过滤这个列(与其他选项相比,表格中的字符串这几乎是开销的0)。

SELECT *
    FROM `table_name`
    WHERE `column_name` = 'Monday,Wednesday'