枚举式值的最佳表布局是什么



假设您在各种表中有大量字段,这些字段具有整数代码,然后必须与另一个表交叉引用,然后该表给出这些代码的文本表示,即本质上是枚举。这些代码中的每一个都出现在许多不同的表中,然后在存储枚举值的任何地方都有一个外键。

有两个主要选项:

  • 将所有枚举存储在一个大表中,该表定义了所有枚举,然后有一些列指定枚举类型
  • 将每个枚举定义存储在一个独立的表中

哪种方法更好,尤其是在性能方面?有问题的数据库接收大量的INSERT和DELETE,读取相对较少。

这取决于情况。分开的桌子有很大的优势。可以定义外键关系,以强制引用表的列类型。

第二个优点是对于不同的类型可能有不同的数据列。例如,国家/地区表可能具有ISO2和ISO3代码和货币。城市表可能有一个时区。

一张桌子很方便的一个场合是国际化。对于将值翻译成不同的语言,我发现将它们全部放在一个地方很方便。

一张桌子也有空间优势。SQL中的表存储在页面上,许多引用表将小于一个页面。这留下了很多未使用的空间。将它们存储在一张表中可以"压缩"它们,从而消除空间。然而,在现代世界,这很少是一个真正的考虑因素。

不过,通常情况下,除非您有充分的理由使用单个表,否则您会使用单独的表。

最新更新