为可能具有特定字段的多个值的记录设计表模式的最佳方法是什么?
例如,文档可以有多个与之关联的概念。每个文档也可以具有不同数量的概念。我正在尝试设计一个表,其中每个记录都是一个文档及其元数据,但我遇到了概念字段的问题。我应该将所有概念填入一个名为“概念”的领域吗?或者为概念1,概念2等创建不同的字段。问题是我不知道每个文档可以有多少概念。我试图用SQL关系数据库来设计它,虽然我知道有面向对象的数据库可能更适合我的问题。
答案 0 :(得分:2)
我应该将所有概念填入一个名为'Concepts'的字段吗?
没有。这违反了atomicity的原则,因此也违反了1NF,并导致执行完整性和查询时出现问题。
或为Concept 1,Concept 2等创建不同的字段
仅如果您对每个文档的概念数量有明确的限制,那么您知道将来不会更改。但是你说你“不知道每个文档可以有多少概念”。
为可能具有特定字段的多个值的记录设计表架构的最佳方法是什么?
取决于是否可以在不同文档之间共享相同的概念。
如果否,那么这是一对多的关系,可以用以下方式表示:
如果是,那么这是一个多对多的关系,需要一个额外的“联结”(又名“链接”)表,介于两者之间,类似于:< / p>
答案 1 :(得分:1)
这取决于这里的'概念'。这有什么意义吗?有没有相关的东西?
如果一个字段的值本身是有意义的,我会坚持使用一个字段和值'enumeration'。
如果可能存在特定于每个“概念”的附加属性,则最好考虑使用具有“概念”的表以及这两者之间的多对多关系。
我希望它对你有所帮助。
答案 2 :(得分:1)
如果概念很重要,那么您应该有一个concepts
表。这将是一个参考表,其中包含conceptId
以及有关概念的信息。
然后,您可以拥有一个名为DocumentConcepts
的表格。这将有如下字段:
它可能还有其他信息,例如优先级(首先是第二个?),当概念被添加到文档时,以及其他此类信息。