我想知道哪种方法是在sql列中存储整数列表的最佳方法。 .....即。 “1,2,3,4,6,7”
编辑:这些值表示SQL表中的其他ID。该行看起来像
[1] [2]
id,listOfOtherIDs
到目前为止我所研究的选择是:
哪种方法最好用?
谢谢, 伊恩
答案 0 :(得分:5)
记录的单个元素只能引用一个值;这是一个基本的数据库设计原则。
您必须更改数据库的设计:为每个值使用一行。 您可能希望阅读normalization。
如第一范式的说明中所示here:
第一个普通形式表明,在那里的表中的每个行和列交叉处,存在单个值,而不是值列表。例如,您不能在名为Price的字段中放置多个Price。如果将行和列的每个交集视为一个单元格,则每个单元格只能包含一个值。
答案 1 :(得分:4)
虽然Jeroen的答案对“多值”属性有效,但真实情况下,多个逗号分隔值实际上可能代表一个大值。路径数据(在地图上),整数序列,素数因子列表等等都可以存储在以逗号分隔的varchar中。我认为最好解释一下你究竟存储了什么,以及如何检索和使用该值。
修改强>
查看您的编辑,如果ID表示另一个表的PK,那么这听起来像是该表与您正在存储其ID的表之间的真正M-N关系。这个东西应该存储在一个单独的动名词中,BTW是一个表,它将每个表的PK作为FK,从而链接两个表的相关行。所以Jeroen的答案非常适合你的情况。