一尘不染

多个数据库表或合并为一个

sql

我有一个关于数据库体系结构的问题。

我们正在建立一个CMS。许多字段将具有预填充的选择。例如,客户的信用状态可以为“良好”,“不良”,“未知”或“存款”。该项目的规格是这些预先填充的选择是动态的,管理员可以通过后端添加新值。所以我需要将这些值存储在数据库中。

我正在努力在两种方法之间做出决定

1)为每种清单都有一张桌子。示例将是诸如list_CrediStatus,list_Branches,list_Markets等的表。

优点是这些表不是很大,并且彼此分开。因此,一个表上的数据和查询负载可能不会影响其他表吗?缺点是会有很多。也许30点?并且每个表将需要一个查询。

2)有两个表。有一个描述表,您可以在其中定义所有不同的列表名称(list_CreditStatus,list_Branches等)。还有另一个表包含所有列表的所有值以及一个外键,该外键将每一行链接到其在描述表中的标识符。

优点是较少的表格,1个查询和统一的格式。劣势可能在于性能。该表将需要查询很多。它将有许多行和大量数据。

有人有建议吗?我倾向于选择2。如果这没有道理,请告诉我。要清楚地写这是一个很难的问题。

谢谢,杰德


阅读 246

收藏
2021-03-08

共1个答案

一尘不染

始终将类似的东西放在一个表中,而将不同的东西放在单独的表中。这意味着您可以选择选项1。切记: 基于字段名称的表面相似性并不意味着它们像事物。

单表解决方案很吸引人,因为它看起来更简单,但事实并非如此。将这些分开的代码将变得非常复杂。

另外,您不能使用适当的外键。您如何说ORDER的CREDIT_STATUS列引用了列表表,却不允许某人输入Blood Type(或其他)值?

2021-03-08