繁体   English   中英

如何在数据库中设计应用程序设置表

[英]How to design application settings table in database

我想要创建数据库表,我可以在其中存储应用程序设置。 两种表格设计哪个更好:

  1. 将设置存储在一列和一行中作为键 - 如下所示:

在此处输入图像描述

  1. 仅将设置存储在两行中 - 如下所示:

在此处输入图像描述

两者中哪一个更适合存储应用程序设置?

最好的祝愿

使用第二种方法。 显然,它具有更大的可扩展性。 当您需要添加更多选项时,您将不需要添加其他列。

如果这些选项非常有限且固定,并且都具有不同的数据类型,那么我只会提倡第一种方法。 这是两者之间差异很大的区域-如果您将数字和字符列混合在一起,那么第二个选项实际上别无选择,只能将它们全部存储为VARCHAR 但是,对于行数非常有限并且不受大量INSERTUPDATE约束的设置表,这可能不是一个大问题。

您不希望将第二种方法用于需要高度可访问性的常规表(不存储大多数静态应用程序设置),或者将其用于计算(例如,您经常需要使用类型转换值来对其进行操作)。

对于不经常访问或修改的静态数据,第二种方法效果很好。

这实际上取决于这些值的更改频率以及这些类型的更改程度:

例如,如果您具有多种类型的有限数量的设置,则水平布局会更好,因为您可以指定每种类型。 但是每次您要添加一个新表时,都需要更改表。

相反,如果您有许多不同的类型,并且人们对设置有许多不同的安排,也许您甚至知道将来还会有新的设置,那么第二个列表会更好。 但麻烦的是,您将对每个值都使用varchar(nnn)类型,因此数据库无法为您提供很多帮助。

选项 1 是“更好”,直到有很多设置(即:几十个、数百个)。 如果“很多设置”,可能有更好的方法 model 它们。

举个例子,也许这些信息甚至不属于这个系统,可以被推送到它自己的独立系统,该系统为所有应用程序管理这种数据。

再举一个例子,也许其中一些设置实际上可能与您系统中的其他东西有关,甚至可能是您尚未引入的概念; IE:也许该数据因季节或公司而异,您还没有考虑过 model 这些类型。

我会在真正需要的情况下保留选项 2(即:您有数千个值要写入)。 是的,它非常灵活,但它也失去了很多语义,并且总体上是你的数据 model 的失败。(它实际上是数据库和/或 ORM 使用的退化,应该非常谨慎地选择。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM