什么是在数据库中表示时间表的最佳方式

时间:2009-03-11 22:46:22

标签: database modeling

我正在尝试对时间表,计费小时数,项目,用户进行建模

什么是在数据库中表示这些内容的最佳方式

详细阐述问题:我最大的困境是如何将日期,时间,项目保持在一起

一种可能的解决方案

用户(PK id,名称)

项目(PK id,name,FK user_id)

BillableHour(PK id,FK project_id,小时,日期)

谢谢

4 个答案:

答案 0 :(得分:1)

从您想要的报告开始,然后向后工作。

最小输入单位是“活动”,“持续时间”,但如果使用该最小值,则可以使用sri.attends.scrum.for.parisian.branch.of.client50.via.scype.from.home等活动。 to.discuss.installation.routine.of.zoom22,您的报告代码将包含很多switch语句。

据推测,您将至少有一个报告,其中包含姓名,活动描述以及给定时间段的总时间。如果这是您唯一的报告,您可以将其实现为四字段列表:工作者(字符串),任务(字符串),开始(时间),持续时间(整数)。如果有报告要求分配给特定项目的所有活动,或者一个用于活动类型X的所有活动,或者将活动分配给特定客户的报告,那么您的设计将受益于更多领域。

也许你有一份报告可以区分家庭办公室的installation.server.updates和warzone中活跃的敌人枪声下的安装.server.updates。如果您的时间日志屏幕上有一个“while.a.target”复选框,则可以为您的用户节省时间。

答案 1 :(得分:0)

如果您不熟悉普通表格,那么值得学习。保存您在数据库中存储冗余数据(以及其他好处)。

http://databases.about.com/od/specificproducts/a/firstnormalform.htm

答案 2 :(得分:0)

我可以从非常高的层面告诉你我是如何在一个非常简单的时间保持应用程序的。虽然,这不一定是最好的方式。

我目前没有方便的ER图表,但这只是一组表格的基本起点。

用户  ID PK

的UserRole  UserID FK  RoleID FK

角色  ID PK  名称

UserProject  ID PK  UserID FK  ProjectID FK  HoursAvailable

客户  ID PK  名称

项目  ID PK  CustomerID FK

EntryType  ID PK  姓名(即可计费,不可计费等)

条目  ID PK  UserID FK  ProjectID FK  EntryTypeID FK  小时  日期  TaskName(这可以进一步规范化,特别是如果你想要一堆任务)  描述

我可以继续,但你明白了。

答案 3 :(得分:0)

以下是我的旧会计系统使用的一些表的简要(和不完整)摘要:

  • 用户:使用该系统的人;姓名,密码等
  • 实体:公司或企业;姓名,政府身份证等
  • 项目:可以结算的项目;名称,供应商实体,客户实体
  • 时间表:时间表条目:用户,项目,开始时间/日期,工作小时数,工作描述