我有一张桌子,其中一列是co_com
这是通讯偏好
有三个选项(而且只会是) 我不想为这些值设置单独的列
所以我想把它们存储为
短信/电子邮件/传真 短信=是的 电子邮件=没有 传真=是的 将存储为:101
但是, 我认为这不是最好的方式
你还能看到其他什么方式?
是的我知道这是一个主观的问题
但我不确定该怎么回答。
答案 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一对多关系相比非常有效。因为它更注重计算机。