2010-12-21 56 views
0

想象一下,你有一个表 - 让图谋的例子,这是Orders - 其中有一个名为type场,这可能是只有几个固定值之一(可以说01,为QuotationOrder)。应该将定义的数字存储在数据库中的表中吗?

如果所有的type可能值通过在数据库中的另一个表来表示(只typeIDtypeName列?),并Orders作出引用新表?
或者将这些数字保持原样并将它们记录在数据库之外是正常的吗?

如果这是一个“取决于”的情况:两种选择的重要含义是什么?

我已经在最近的大学分配中使用了第一个选项,但没有真正考虑原因 - 现在回顾设计,我想知道这是否重要。
我从来没有查询过参考表作为我的应用程序的一部分 - 因为我没有“需要” - 这是否表明参考表是不需要的,或者这是我的应用程序中的一个缺陷,因为它应该检查参考表(做什么的?)?

回答

3

我认为最大的区别在于,当您在数据库中包含“查找”数据的参考表(甚至是它们永远不会被应用程序使用)时,它可以在其他开发者工作后在系统上。 “将文档记录在文档中”的优点在于,将它保留在数据库中会在应用程序中使用新值时强制更新引用表。随着时间的推移,书面文档往往会不同步。

还有一点就是保持基准数据的数据库的情况下,当其他一些球队需要连接到您的数据库级应用程序(即对一些数据挖掘,报告等)可能会有所帮助。

+0

+1数据库是存储和引用数据的地方。一个枚举也是一个很好的解决方案,但是当两个+控制器(在MVC中)或两个+大块的中间件或任何其他数字的定义不同时,存储数据(包括这种类型的引用数据)最终会招致灾难。 – 2010-12-21 13:48:25

1

典型地,第二个表有typeIDtypeName,与作为TYPEID主键,并在订单表的外键。

这些可以稍后用于从客户端进行过滤。

而且,稍后可能会有更多与实际类型相关的信息,然后可以将它们存储在同一个表中。

1

如果它的值只对该表有意义,则表明该字段的枚举类型。

如果这个值在多个表中有意义,我会像你一样使用一个参考表。

相关问题