2010-12-17 42 views
1

我们正在重新设计和合并数据库中的某些表。我们曾经有过两张桌子'administrators''users',我们现在将它们组合成一张名为'users'的桌子。为了便于更改,我们创建了一个'user_types'表和一个'user_user_types'表,这是'用户'和'user_types'之间的一对多链接表。在数据库中构造这些数据的更好方法是什么?

我们必须使用'user_types'表的原因是,有不同类型的管理员,其中一个是超级管理员,他有权访问我们系统中的所有内容。在旧的设置中,'administrators'表中有一个字段'SiteAdmin',表示该特定管理员是否是超级管理员。自从转移到这个新系统以来,我的想法是在'user_types'表中会有一个用户类型,它将是一个超级管理员,并且在这些情况下我们只将正确的用户链接到该用户类型。然而,我的同事程序员在这里说他仍然希望在新的“用户”表中使用'SiteAdmin'位字段。我认为这有点多余,但他声称会有超负荷,并且在SQL服务器上需要更多的处理器密集度才能将表加入到'users','user_types'表中,以确定特定用户是否为超级管理员。

我的问题是哪种方式更好?在SQL服务器上加入这两个表是否太棒了,它保证在'用户'表中添加位字段来标记超级管理员?

谢谢!

回答

3

您的重新设计似乎是合理的,更容易维护。我怀疑加入会影响性能,尤其是因为您可能在登录时为每个用户查询一次用户类型。

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

0

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

0

我觉得很奇怪,如果有什么打击性能加入到小桌子里的话。

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

相关问题