帮助确定维护项目表结构的最佳实践

时间:2009-11-17 13:56:33

标签: sql-server database-design

我在继承的旧版应用程序中有两个不同的现有数据库设计。一方面他们创造了两张桌子; tblAdminMaintCategorytblAdminMaintItems。在另一边,各个表格; tblAdminPersonTitletblAdminRace

方法#1

现在在第一个例子中,tblAdminMaintCategory中有一个条目用于竞赛(比如ID是#2 ),然后在tblAdminMaintItems中每个竞赛都有一个条目与corressponding categoryID。然后查询比赛选项,例如,将去 - > SELECT * FROM tblAdminMaintItems WHERE CategoryID = 2

方法#2

现在在第二个例子中,每个竞赛选项的tblAdminRace都会有一个条目。要查询那将 - > SELECT * FROM tblAdminRace

现在,我正在试图弄清楚,在我自己的应用程序中,我想要遵循哪些路径。我不喜欢第一种方法,似乎是介绍magic numbers。我不喜欢第二种方法引入了很多很小的表,但我不确定那是END OF THE WORLD!!

我很好奇其他人对如何进行或如何进行的意见。什么对你有用?我不应该使用其中一个的原因是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

在不同的表中使用单独的实体是合理的设计;喜欢:比赛,汽车,人,位置,维护任务,维护计划。如果您不喜欢在查询中加入,只需设计多个视图即可。我可能误解了这个例子,但这里有一个建议。

race_model_01

答案 1 :(得分:1)

魔术数字似乎总是很糟糕。特别是在那些没有那么多条目(标题,种族等)的表格中可以使用更多代码的地方。

另一方面,要连接的大量小表不仅会使查询难以维护,而且难以阅读并且需要更多联接来解析。

编辑: 较小的参考表将使maintinance更容易。一个地方的变化全部改变。但是它肯定会让你的表结构设计者崩溃,忘记填充这些元数据表会给你在新的安装站点带来很多问题。