数据库设计 – 如何在关系数据库中最好地存储数字列表?
我想在关系数据库中存储一个数字列表(基本上是数学术语中的
set),特别是SQL Server 2005.
理想情况下,我希望它是给定表上的单个列,但我愿意听到任何解决方案.我需要存储的数据就像我说的那样,是一组数字. >不需要顺序(即间隙是正常的,正常的,典型的) 此列用于存储该行适用的给定进程的所有“步骤编号”.因此,每行可以以任何顺序,范围或顺序应用于一个或多个步骤.可能的最大步数(最大范围,基本上)在行与行之间是不同的,但我高度怀疑它们中的任何一个都会达到数百个,因此在99.9%的情况下最大值不应超过20或30,而我如果有任何接近100的话,我会感到惊讶.每一行都保证最少有一个值(步骤)(也就是说,有一行不适用于任何步骤是没有意义的),但我这就像将列设置为非null一样简单. 无论它存储,我希望它很容易搜索.例如,我宁愿不必通过大量的箍来编写SQL查询来查找适用于“步骤3”的所有行.如果给定的行有几个适用的步骤(例如,3,7和8),则在步骤3搜索时匹配它应该不会太难. 此外,虽然我希望在查看原始数据时能够产生某种逻辑意义(对于任何需要在系统上工作的人,我不在后问,因此他们不必阅读厚文档弄明白我的模糊编码),我愿意妥协.因此,将列表编码成可以被可靠解码的内容是可接受的. 如果这是一个骗局,我道歉 – 我一直在谷歌搜索,但我怀疑我的这个问题不知道要搜索什么或如何短语或称之为找到我正在寻找的东西. 在更多的注释中,我想知道这不是关系数据库不足的领域之一.不幸的是,我在这里没有选择.我必须将它存储在SQL Server中.我担心,单独保存到文件或其他一些持久性数据存储是不可能的. 解决方法我不记得正确的术语,但正确的方法是创建一个如下所示的表:| id | table1_id | value | -------------------------------- | 0 | 1 | 1 | | 1 | 1 | 2 | | 2 | 1 | 3 | | 3 | 1 | 7 | | 4 | 1 | 9 | | 5 | 2 | 1 | | 6 | 2 | 3 | | ... | ... | ... | 对于table1中的每个值,您可以将所需的值添加到此表中. 对于’all’,你可以在table1中创建一个列,如果你想要全部,你可以设置一个标志. (我在MySql中使用’enum’,但我不确定它是否存在于SQL Server中). 我不确定是否有一些特定于Sql Server的方法,因为我主要使用MySql. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |