在数据库中构建此数据的更好方法是什么?

时间:2010-12-17 18:10:10

标签: sql-server sql-server-2008 database-design

我们正在对数据库中的一些表进行一些重新设计和合并。我们曾经有两个表格'administrators''users',我们现在正在组合成一个名为'users'的表格。为了促进这种变化,我们创建了一个'user_types'表和一个'user_user_types'表,它是'users'和'user_types'之间的一对多链接表。

我们必须使用'user_types'表的原因是因为有不同类型的管理员,一个是超级管理员,可以访问我们系统中的所有内容。在旧设置中,'administrators'表中有一个名为'SiteAdmin'的字段,表示该特定管理员是否是超级管理员。由于转移到这个新系统,我的想法是'user_types'表中的用户类型将是一个超级管理员,我们只是在这些情况下将正确的用户链接到该用户类型,但我的同事程序员这里说他仍然想在新的'用户'表中使用'SiteAdmin'位字段。我认为这有点多余,但他声称会有过多的负载,并且SQL服务器上的处理器密集程度更高,必须将'users''user_types'表连接在一起以确定特定用户是超级管理员。

我的问题是哪条路更好?在加入两个表时,SQL服务器上的命中率是如此之高,以至于它保证将位字段添加到“用户”表以标记超级管理员?

谢谢!

3 个答案:

答案 0 :(得分:3)

您的重新设计在未来似乎是合理且可维护的。我怀疑连接会影响性能,特别是因为您可能在登录时每个用户查询一次用户类型。

你可以针对这两种设计编写一些单元测试,用一堆伪数据填充表格,并针对连接运行计时器而不是使用标志的计数器。

答案 1 :(得分:0)

性能差异取决于这些表中的数据量。如果您谈论几百或几千个用户行,您将看不到解决方案之间的任何差异。如果您拥有数百万用户,并且可能会同时访问大量数据,那么您可能会发现存在差异。

答案 2 :(得分:0)

我觉得很奇怪,如果有很多表演加入到一张小桌子上。

可能更大的问题是存储不同类型的用户两种不同的方式,这会使维护变得混乱。我认为从长远来看,你的解决方案更为直接。

相关问题