在db中存储选项的最佳方法

时间:2010-07-11 14:23:45

标签: php database storage

我有一张桌子,其中一列是co_com

这是通讯偏好

有三个选项(而且只会是) 我不想为这些值设置单独的列

所以我想把它们存储为

短信/电子邮件/传真 短信=是的 电子邮件=没有 传真=是的 将存储为:101

但是, 我认为这不是最好的方式

你还能看到其他什么方式?

是的我知道这是一个主观的问题

但我不确定该怎么回答。

5 个答案:

答案 0 :(得分:6)

你是对的。事实上,不是最好的方式。

你说你不想为这些值设置单独的列,但这正是你应该做的。

答案 1 :(得分:3)

将逻辑值的组合存储为编码二进制文件是...... 1900年代。说真的,这些天磁盘空间花了多少钱,通过将三位信息塞进一个数字而不是三个字节或字符来节省多少钱?

继续,创建三个具有合理名称的列,并在其中存储0和1,或者如果您的DB很奇怪,故事'Y'和'N'。但是不要做这个二进制聪明的东西。当你试图写出合理的查询时,它最终会咬你。

答案 2 :(得分:0)

在我看来,列是最好的方法,为了便于使用,如果没有别的。这些专栏是直截了当的,将来不会混淆。但我不会说将它们存储在一个列中,因为3位数字一定是坏的,只是令人困惑。稍后节省头痛并做3列。

答案 3 :(得分:0)

另一种观点是另一个名为com_options的表格。拥有ID字段和options字段,会在options字段中存储所有不同的通讯选项组合,并在ID字段和您的{co_com字段中存储唯一ID {1}}表的opt_id字段引用ID表中的com_options。然后使用INNER JOIN将这两个表连接在一起。

答案 4 :(得分:0)

如果您的数据库是MySQL,那么您可以使用SET数据类型。

没关系,不要担心 - 有时候我们应该对表进行非规范化:)

但是如果您的数据库不是MySQL,那么您也可以使用此方法,但实现将是非您的数据库本机。此外,大量数据上的按位逻辑与默认规范化d一对多关系相比非常有效。因为它更注重计算机。