对于web应用程序中的时间表,我有以下要求:
目前,我获得了具有以下属性的表User和Entry:
用户:
条目:
问题是:在数据库中建模我的需求的最好方法是什么?
我的想法是在表用户中添加一个布尔字段"lastMonthIsClosed“,并安排一个月作业,在每个月的第十天对所有用户设置该字段为true,在每个月的第一天将该字段设置为false。或者,它也可以是日期字段“lastClosedMonth”.
我想知道是否有一种更优雅的方法来建模这些需求?
发布于 2011-08-31 09:37:06
“关闭”不是用户的属性,也不是月份的属性。这是一个条目的属性。
create table entry (
id integer primary key,
userid integer not null,
start_time timestamp not null,
end_time timestamp not null default current_timestamp
CHECK(start_time < end_time),
notes varchar(255),
closed boolean not null default FALSE
);考虑对持续时间的其他限制。
您可以创建一个视图,仅向用户公开打开的条目。
向该表中添加一个更新触发器之前的行级别。,以防止对关闭项的更改。触发器将防止用户和数据库管理员更改关闭的条目。插入触发器之前的行级别可以防止用户和管理员根据其时间戳插入行。
现在决定如何处理跨越一个月到下一个月的变化的时间嘴唇。
https://stackoverflow.com/questions/7253961
复制相似问题