根据时间建模登录约束

时间:2010-01-26 08:18:39

标签: database-design login constraints data-modeling

早上好,

对于现有的Web应用程序,我需要实现“基于时间的登录约束”。这意味着对于每个用户,以后可能是每个组,我可以在(不)允许登录系统时定义时隙。由于应用程序的所有数据都存储在数据库表中,我需要以某种方式创建一种以这种方式对这个想法进行建模的方法。

我的第一种方法,我会在这里解释一下:

  • 创建一个登录约束树(称为“时间段”),其主要“类别”,如“工作日”,“周末”,“公众假期”等,位于顶层,处于“已排序”状态订单(意为“公众假期”的优先级高于“工作日”)
  • 为每个顶级节点创建子节点,其具有更精细的时间跨度,如“星期一”,“星期二”,......
  • 下面,创建一个“小时”级别:0,1,2,...,23。不需要进一步的细节。
  • 默认情况下将每个成员设置为“允许”
  • 对于系统的每个成员,创建一个1:n关系member:timeslots来定义约束,例如会员A可能有A:monday-forbiddenA:tuesday-forbidden
  • 在每次登录时执行深度优先搜索,并检查该成员是否有约束。 为什么深度搜索?好吧,我认为成员可能有规则:

A:monday->forbiddenA:monday-10->allowedA:mondey-11->allowed

因此,星期一12:30的登录失败,但10:30的登录失败。

出于性能原因,我可以打破关系数据库范例,并为member-to-timeslots-table中的每个条目设置一个标志,如果该成员的信息设置为“更精细”的时隙,则设置为true,但这是第二个步骤

这个模型原则上是个好主意吗?是否有现有型号?

感谢。

1 个答案:

答案 0 :(得分:0)

哇。这听起来比我想要处理的更复杂。我只是创建一个这样的表:

Allowed_Login_Times

  • Weekday_Start
  • Weekday_End
  • Saturday_Start
  • Satruday_End
  • Sunday_Start
  • Sunday_End
  • HOLIDAY_START
  • HOLIDAY_END

每列都是一个从0到23的int,表示小时。

我让应用程序决定它应该是什么时间以及应该检查哪个列。

您的解决方案更灵活,但我无法想象尝试创建管理GUI来维护数据。