如何设计列数可能随时间增加的数据库?

how to design for database where column number may increase by time?

我正在尝试为我的应用程序和网络服务设计一个数据库, 假设视图属性的 table 是这样的:

所以View有prop_id,x,y,width,height,bg_color,txt_color

一段时间后,我需要向此 table 添加一个新列,例如:

text_size, has_shadow ...等等

属性的类型是动态的,属性的个数也是动态的

那么我们如何设计这种可扩展的数据库呢?

当您需要新的 属性 时,您可以在 table 中添加一列。

我相信人们会建议您尝试使用 EAV(实体-属性-值)模型来适应这些类型的数据库更改,但这是一个巨大的错误,IMO。有非常、非常 需要这种反模式的实例,这不是其中之一。

如果您的数据库现在需要跟踪 "text_size",那么您的应用程序可能需要更改以处理此文本大小。您将不得不按原样更改您的应用程序 and/or 数据库,因此使用 EAV 模型您不会买任何东西(除了头痛)。

如果你 Google EAV 那么你可以找到更多关于它的信息以及为什么它不是一个好主意,但简而言之,它会使你的数据库查询变得更加困难和性能降低,并且使维护更加困难, 并不容易。