首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库:对这些需求建模的最佳方法?

数据库:对这些需求建模的最佳方法?
EN

Stack Overflow用户
提问于 2011-08-31 07:41:42
回答 1查看 115关注 0票数 0

对于web应用程序中的时间表,我有以下要求:

  • 用户可以创建条目
  • 只有在当前月份和最后一个月才能创建和修改条目,如果没有“关闭”的话。
  • 如果用户手动选择关闭一个月,则在第十天、第一个月或更早的时候自动关闭一个月。

目前,我获得了具有以下属性的表User和Entry:

用户:

  • id
  • 名字

条目:

  • id
  • 用户标识
  • 日期
  • 开始时间
  • 终时
  • 备注

问题是:在数据库中建模我的需求的最好方法是什么?

我的想法是在表用户中添加一个布尔字段"lastMonthIsClosed“,并安排一个月作业,在每个月的第十天对所有用户设置该字段为true,在每个月的第一天将该字段设置为false。或者,它也可以是日期字段“lastClosedMonth”.

我想知道是否有一种更优雅的方法来建模这些需求?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-31 09:37:06

“关闭”不是用户的属性,也不是月份的属性。这是一个条目的属性。

代码语言:javascript
复制
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
);

考虑对持续时间的其他限制。

  • 一定超过1分钟。
  • 至少要6分钟。(十分之一小时)
  • 必须少于9小时。
  • 必须少于24小时。

您可以创建一个视图,仅向用户公开打开的条目。

向该表中添加一个更新触发器之前的行级别。,以防止对关闭项的更改。触发器将防止用户和数据库管理员更改关闭的条目。插入触发器之前的行级别可以防止用户和管理员根据其时间戳插入行。

现在决定如何处理跨越一个月到下一个月的变化的时间嘴唇。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7253961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档