MySQL: 枚举表 - 只使用一个还是多个?

MySQL: enumeration tables - use only one or many?

直到现在,我仍然使用列 IDCODE 进行了更多的枚举 table .. (money_type, payment_type, shipping_type ...).

将每个枚举 table 分开还是只枚举一个更好?包含列 IDCODETYPE ... 其中类型为 "money, payment, shipping"。

在我的系统中将有最少 50 个枚举 tables..

从纯技术的角度来看,几乎没有理由反对为此目的创建一个巨大的查找 table。但是,有一些合理的商业理由反对这样做:

  1. 安全。您可能不希望同一用户能够编辑所有查找数据。如果您将所有这些存储在一个 table 中,那么限制对某些记录的访问可能会很困难。显然,您可以使用视图来做到这一点,但是如果您创建的视图与查找类型一样多,那么首先使用单个 table 有什么意义呢?

  2. 可配置性。在许多情况下,这些查找 table 可能包含比 id 和人类可读描述更多的数据,并且附加数据将仅特定于给定参数。例如,在税码查找中 table 您可以指定给定的税码仅适用于国内交易,不适用于跨境交易(例如增值税)。如果你有一个巨大的table来保存所有的配置数据,那么这样的定制就困难多了。

显然,如果进行这些查找 table 的目的是提供人类可读的描述(例如,定义 table 可用于 GUI),那么您可以有一个 table 为此。否则,即使您需要进行 50 次查找 tables.

,我也会采用每个参数方法进行 1 次查找 table