你能告诉我一个更好的方法来设计禁止用户的表吗?

时间:2014-03-18 12:57:10

标签: sql database database-design

我正在设计一个Web应用程序,我需要让管理员和版主有权允许和拒绝其他用户访问该应用程序。我想要一个包含以下列的表:

  1. OperationType(禁止/访问重新获得)。
  2. BannedUser
  3. 用户(admin / mod授予访问权限或禁止其他用户)
  4. EVENTDATE
  5. 原因(可选)
  6. 我可以只有一个表,存储所有被禁止的用户,但我想跟踪应用程序中实际发生的情况,并确保管理员和版主也没有行为不端。

    因此,如果我的表中没有包含OperationType列,则可以检索所有被禁用户的列表,就像编写以下查询一样简单:

    select BannedUser from UserBan;
    

    但是,如果我将表格与OperationType列一起离开,如上所示,我的简单选择查询可能会变成这样:

    select o3.BannedUser
    from 
    (
    select o1.BannedUser, max(o1.EventDate) EventDate
    from UserBan o1
    group by o1.BannedUser
    ) o2, UserBan o3 
    where o3.EventDate = o2.EventDate and
    o3.BannedUser = o2.BannedUser and
    o3.OperationType = 1
    

    假设OperationType = 1是禁止的。

    那么,有人可以为我的案例提供更好的解决方案吗? :)

0 个答案:

没有答案