在 24/7 运行 服务中存在的 table 中保留多值属性是否好?

Is it good to keep multi-valued attributes in a table existing in a 24/7 running service?

我正在开发一个项目,我在其中使用 table 和具有 5-10 个值的多值属性。保留多值属性好还是应该将其规范化为正常形式? 但我认为它不必要地增加了 rows.If 的数量,我们有 10 个属性的多值,然后每行或元组将被替换为新的 10 行,这可能会增加查询 运行 时间。

任何人都可以对此提出建议吗?

第一范式要求每个属性都是原子的。

我想说这个问题的答案取决于“原子”:将其定义为“不可分割”太狭隘了,因为那样的话就没有字符串是原子的了,因为它可以被拆分成字母。

我更愿意将其定义为“就数据库而言是一个单一的单元”。因此,如果这个数组(或任何它是什么)由应用程序完整地存储和检索,并且它的元素永远不会在数据库内部访问,那么它在这个意义上是原子的,并且设计没有任何问题。

但是,如果您计划在 WHERE 条件下使用该属性的元素,如果您想使用 UPDATE 语句修改单个元素,或者(最糟糕的是)如果您想要这些元素为了满足约束或参考其他tables,你的设计几乎肯定是错误的。经验表明,在这种情况下,规范化会导致更简单和更快的查询。

不要试图摆脱一些大 table 行。数据库针对处理许多小 table 行进行了优化。