[英]How to design application settings table in database
我想要创建数据库表,我可以在其中存储应用程序设置。 两种表格设计哪个更好:
两者中哪一个更适合存储应用程序设置?
最好的祝愿
使用第二种方法。 显然,它具有更大的可扩展性。 当您需要添加更多选项时,您将不需要添加其他列。
如果这些选项非常有限且固定,并且都具有不同的数据类型,那么我只会提倡第一种方法。 这是两者之间差异很大的区域-如果您将数字和字符列混合在一起,那么第二个选项实际上别无选择,只能将它们全部存储为VARCHAR
。 但是,对于行数非常有限并且不受大量INSERT
和UPDATE
约束的设置表,这可能不是一个大问题。
您不希望将第二种方法用于需要高度可访问性的常规表(不存储大多数静态应用程序设置),或者将其用于计算(例如,您经常需要使用类型转换值来对其进行操作)。
对于不经常访问或修改的静态数据,第二种方法效果很好。
这实际上取决于这些值的更改频率以及这些类型的更改程度:
例如,如果您具有多种类型的有限数量的设置,则水平布局会更好,因为您可以指定每种类型。 但是每次您要添加一个新表时,都需要更改表。
相反,如果您有许多不同的类型,并且人们对设置有许多不同的安排,也许您甚至知道将来还会有新的设置,那么第二个列表会更好。 但麻烦的是,您将对每个值都使用varchar(nnn)类型,因此数据库无法为您提供很多帮助。
选项 1 是“更好”,直到有很多设置(即:几十个、数百个)。 如果有“很多设置”,可能有更好的方法 model 它们。
举个例子,也许这些信息甚至不属于这个系统,可以被推送到它自己的独立系统,该系统为所有应用程序管理这种数据。
再举一个例子,也许其中一些设置实际上可能与您系统中的其他东西有关,甚至可能是您尚未引入的概念; IE:也许该数据因季节或公司而异,您还没有考虑过 model 这些类型。
我会在真正需要的情况下保留选项 2(即:您有数千个值要写入)。 是的,它非常灵活,但它也失去了很多语义,并且总体上是你的数据 model 的失败。(它实际上是数据库和/或 ORM 使用的退化,应该非常谨慎地选择。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.