【发布时间】:2020-03-29 07:52:22
【问题描述】:
在查看了许多数据库设计之后,我仍然不确定什么是最好的方法。 我正在设计一个数据库,其中大多数实体具有不同的状态。例如,我可能有类似
- 用户状态:活动、非活动、禁用等。
- 订单状态:打开、关闭、取消;
- 办公室状态:打开、关闭。
我考虑了两种不同的选择。
1) 为每个实体创建一个“状态”表
CREATE TABLE UserStatus(
UserStatusID int,
Description varchar(255)
);
CREATE TABLE OrderStatus(
OrderStatusID int,
Description varchar(255)
);
2) 为所有实体创建一个共享状态表
CREATE TABLE Status(
StatusID int,
Description varchar(255)
);
如果您能解释哪个选项更好或每个选项的优点,我将不胜感激
【问题讨论】:
-
第二种反模式有一个名字“一个真正的查找表”,你不应该使用它。您无法阻止为用户分配具有该设计的订单状态
-
“它开始出错了,随着系统的发展,它会变得更糟”总结得差不多
标签: sql database-design