小编Seb*_*ian的帖子

数据库规范化:描述特征 - 表的外键或带值的 varchar 字段?

我和我的同事正在讨论数据库中描述性特征的规范化,例如“状态”或“类型”。让我们将讨论的中心表称为“订单”。

在我的常规设计方法中,我会定义另一个表“OrderStatus”来描述订单的状态,然后在“Order”表上创建一个具有关系的外键,即“OrderStatusID”。

这会给我参考完整性。我可以随时加入状态,并且我的可能值始终存在于“OrderStatus”表中。

我的同事不喜欢这种标准化程度,因此他将在“Order”表上定义一个 varchar 字段“OrderStatus”。该字段将直接包含值。

status 的可能值在他的应用程序中定义,更具体地说,在 OrderStatuses 的枚举中定义,因此,除非我可以访问所述应用程序的源代码,否则我无法使用。

我习惯于将数据库的整个上下文作为关系和表存在于数据库中,并且不得不编写“WHERE OrderStatus = 'Sold'”而不是“WHERE OrderStatusID = 3”让我感到烦恼。

怎么想?我正在寻找两种方法的优点和缺点,但我主要关注性能和可读性/可维护性。

normalization database-design application-design

4
推荐指数
2
解决办法
2632
查看次数