2

以下数据库表设计是否有任何名称:

基本上我们有代表键/值对的通用列。

编号 | k1 | v1 | k2 | v2 | k3 | v3 | ……

1 | 姓名 | 山姆 | 姓氏| 史密斯 | 空 | 空 | ...

在我的应用程序中,我有许多只有一行的表,我想将它们合并到一个通用表中,该表有 X 列,每行代表单个表行。

提前致谢。

4

2 回答 2

11

实体-属性-值。 也称为“名称-值表”或“开放模式”。

这是一个SQL 反模式。它不符合关系数据库设计的许多规则,并且难以维护。我建议反对。

在我对“产品表,多种产品,每个产品都有很多参数”的问题的回答中,可以看到更多我对 EAV 的想法。

于 2009-05-13T04:33:25.380 回答
3

馊主意。基本上,您应该将关系数据库用作关系数据库。

键/值对通常不是建议的存储方法,但至少具有单个键和单个值的单行是“正确的”。

如果将多对放在一行中,则会引发许多问题:

  1. 如何找到特定的钥匙?
  2. 该密钥可以在 k1、k2 或 k3 中吗?或者它总是在一个特定的列中?
  3. 你如何执行?
  4. 你如何让它变得高效?

将您的实体建模为具有已知属性的实体。这就是数据库的用途。

于 2009-05-13T04:35:47.950 回答