mysql - 数据模型: Having separate table for a field vs having it as a column in the main table

标签 mysql database-design enums data-modeling datamodel

我们有一个场景,我们想要存储“状态”(例如“用户”)

我们希望对“用户”状态的允许值施加限制。

因此我们考虑了两种替代方案:

  1. 在“用户”表中将“状态”作为枚举类型的列
  2. 为“状态”建立一个单独的表,并在数据库初始化期间填充允许的值,并将其作为“用户”表中的外键。

您能否建议哪种方法更好以及为什么 感谢分享最佳实践的引用资料

最佳答案

枚举不太受欢迎。为状态制作一个单独的表。使用单独的表,可以轻松更改或添加状态、添加相关数据(如果将来需要,只需在状态表中添加一个新字段),轻松获取不同状态的列表。您还可以选择将主表中的状态字段设置为 NULL 或默认设置为其他值。您可以重复使用另一个表中的状态。

如果您只有两种状态,即“事件”和“非事件”,则只需在主表中使用 BOOL(或 TINYINT)字段类型。

关于mysql - 数据模型: Having separate table for a field vs having it as a column in the main table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51693283/

相关文章:

mySQL 查询未正确返回?

mysql - 为什么查询有时会挂起而不是其他人

mysql - 合并多个查询 - 同一表

sql - 标签和 URL 的数据库设计

c# - .NET Flag Enum 从值中获取属性

mysql - 无法从终端登录mySql

mysql - 确保 SQL 父类(super class)型表具有子类型

为具有多项数据的用户设计Mysql

ios - 如何将 NSCoding 协议(protocol)与枚举一起使用?

c++ - 将字符串解析为不区分大小写的 protobuf 枚举