如何在关系数据库中存储自定义实体属性

How to store custom entity properties in a relational database

我正在为我正在开发的应用程序设计数据库。

我有两个 table,其中实体可以具有自定义应用程序属性,这些属性将定义如何使用来自每个实体的数据。

每个实体都可以有零到多个属性,我想知道以关系方式构建此类数据的最佳方法是什么。我应该为每个 table 和 key/value 列设置一个带有外键的 table 还是有更好的方法来做到这一点?

你说的是 "Entity Attribute Value" tables.

实体表:

Ent1 (Eid, name, desc, etc...)
Ent2 (Eid, name, desc, etc...)

属性 (EAV) 表:

Ent1Props (id, Eid, att, value)
Ent2Props (id, Eid, att, value)

您可以将两个 EAV table 合并为一个,从而创建一个 MUCK(大规模统一代码密钥)table。但是不要这样做,因为它在长 运行 中有一些真正的缺点。几乎每个人都曾经尝试过,因为一开始看起来很容易,但它变成了一个怪物。

Key value pairs in relational database