2008-10-02 42 views
1

考虑一个“状态”的数据库表列,它是由一个单选按钮组访问一个简单的新闻文章的Web应用程序的情况下:最佳实践 - 元数据和功能定义数据应该混合吗?

状态 - [X]发布[]草稿[]存档

...其中“发布”公开显示文章,“草稿”和“存档”不显示。功能上的“草稿”和“存档”做同样的事情,但带有额外的元数据含义。 “显示”和“隐藏”两个功能状态以及“发布”,“草稿”和“存档”的元数据混合在“状态”的相同列中。

这是一个很好的做法吗?虽然这是一个非常简单的例子,但更大的案例可能会揭示这种做法(或不是......)的缺陷。

回答

2

功能状态与行为有关 - 它们不需要在数据库中建模。如果您的业务逻辑只关心“展示”状态为“已发布”的文章 - 没有理由使用Show列来增加数据的复杂性。

当您决定您的业务逻辑需要附加数据来决定是显示还是隐藏文章(可能是IsApproved标志),那么您可以存储该数据。

从另一个角度来看它 - 如果要添加另一列“显示”,那么具有“草稿”和“显示”= 1状态的文章会做什么?根据您的业务规则,这是一个无效的状态。

0

在这种情况下,我会说这是适当的功能。

我们都在媒体上看到过WTF的某个人偶然在同一时间点击了[x] 和draft [x]。

现在的样子,不可能无意中显示草稿。这对于报纸来说很重要,因为记者对这样的东西臭名昭着:

John Doe,StackOverflow说:“---我不记得那些丑陋的f克克说了什么 - 检查磁带并在稍后填写”

这可能不应该打印。