0

为某个字段可能具有多个值的记录设计表模式的最佳方法是什么?

例如,一个文档可以有多个与之关联的概念。每个文档也可以有不同数量的概念。我正在尝试设计一个表格,其中每条记录都是一个文档及其元数据,但我在概念字段方面遇到了问题。我应该把所有的概念都塞进一个叫做“概念”的领域吗?或者为概念 1、概念 2 等创建不同的字段。问题是我不知道每个文档可以包含多少概念。我正在尝试使用 SQL 关系数据库来设计它,尽管我知道有面向对象的数据库可能更适合我的问题。

4

3 回答 3

2

我应该把所有的概念都塞进一个叫做“概念”的领域吗?

不,这会违反原子性原则,因此违反 1NF,并导致执行完整性和查询方面的问题。

或者为概念 1、概念 2 等创建不同的字段。

当您对每个文档的概念数量有明确的限制时,您才知道将来不会改变。但是您说您“不知道每个文档可以包含多少概念”

为某个字段可能具有多个值的记录设计表模式的最佳方法是什么?

取决于是否可以在不同文档之间共享相同的概念。

  • 如果no,那么这是一个一对多的关系,可以类似这样表示:

    在此处输入图像描述

  • 如果,那么这是一个多对多的关系,需要一个额外的“联结”(又名“链接”)表,类似于:

    在此处输入图像描述

于 2013-04-21T22:00:36.350 回答
1

这取决于这里的“概念”是什么。这有什么意义吗?有什么相关的吗?
如果一个字段的值本身是有意义的,我会坚持使用一个字段和“枚举”的值。
如果每个“概念”都有特定的附加属性,您最好考虑使用一个带有“概念”的表以及这两者之间的多对多关系。我希望它对你有帮助。

于 2013-04-21T21:02:04.577 回答
1

如果概念很重要,那么您应该有一张concepts桌子。这将是一个参考表,其中包含conceptId有关概念是什么的信息。

然后,您可以有一个名为DocumentConcepts. 这将具有以下字段:

  • DocumentConceptId(此表的唯一 ID)
  • 客户 ID
  • 概念标识

它还可能具有其他信息,例如优先级(哪个是第一?哪个是第二?),何时将概念添加到文档中,以及其他此类信息。

于 2013-04-21T21:41:02.173 回答