我正在使用新版本的第三方应用程序。在这个版本中,数据库结构发生了变化,他们说“提高性能”。
旧版本的 DB 具有如下一般结构:
TABLE ENTITY
(
ENTITY_ID,
STANDARD_PROPERTY_1,
STANDARD_PROPERTY_2,
STANDARD_PROPERTY_3,
...
)
TABLE ENTITY_PROPERTIES
(
ENTITY_ID,
PROPERTY_KEY,
PROPERTY_VALUE
)
所以我们有一个包含基本属性字段的主表和一个单独的表来管理用户添加的自定义属性。
新版本的数据库 insted 具有如下结构:
TABLE ENTITY
(
ENTITY_ID,
STANDARD_PROPERTY_1,
STANDARD_PROPERTY_2,
STANDARD_PROPERTY_3,
...
)
TABLE ENTITY_PROPERTIES_n
(
ENTITY_ID_n,
CUSTOM_PROPERTY_1,
CUSTOM_PROPERTY_2,
CUSTOM_PROPERTY_3,
...
)
因此,现在当用户添加自定义属性时,会在当前ENTITY_PROPERTY
表中添加一个新列,直到达到最大列数(由应用程序管理),然后创建一个新表。
所以,我的问题是:这是设计数据库结构的正确方法吗?这是“提高性能”的唯一方法吗?旧结构需要许多连接或子选择,但在我看来这个结构并不聪明(甚至不正确)......