Ser*_*gio 0 sql database-design
在审查了许多数据库设计之后,我仍然不确定什么是最好的方法。我正在设计一个数据库,其中大多数实体具有不同的状态。例如我可能有类似的东西
我在思考两种不同的选择。
1)为每个实体创建一个“状态”表
CREATE TABLE UserStatus(
UserStatusID int,
Description varchar(255)
);
CREATE TABLE OrderStatus(
OrderStatusID int,
Description varchar(255)
);
Run Code Online (Sandbox Code Playgroud)
2)为所有实体创建一个共享状态表
CREATE TABLE Status(
StatusID int,
Description varchar(255)
);
Run Code Online (Sandbox Code Playgroud)
如果您能解释哪个选项更好或每个选项的优点,我将不胜感激
多个表有一个关键优势:您可以声明适当的外键关系以确保引用表中的值正确。
单个表具有不同的优势:您可以将所有状态集中在一个位置。如果您需要做一些事情,比如将所有状态翻译成不同的语言,这会非常方便。
在大多数情况下,我认为第一个优势大于第二个。然而,在某些情况下,第二个可能很重要。