Mysql数据库设计建议

标签 mysql

我正在尝试开发一个项目/员工/时间应用程序,并且需要数据库设计。我已经有一段时间没有这样做了,所以我正在寻求好的建议。

基本上,该应用程序是为了跟踪员工在项目上工作了多少小时。员工每天必须登录系统来记录他们在项目上花费的时间。到周末时,他们会提交时间表并显示他们在每个项目上工作的总时间。

例如,员工 A 于 2012 年 2 月 11 日在项目 A 上工作 3 小时,员工 B 于 2012 年 2 月 9 日在项目 A 上工作 2 小时,在项目 B 上工作 1 小时。经理登录后可以看到这 2 名员工在项目 A 上花费了 5 小时,在项目 B 上花费了 1 小时。经理还可以看到员工 B 在所有项目(A 和 B)上花费了多少小时。我想到的数据库表是

EMPLOYEES
id/name/password/manager_privi

PROJECTS
id/project_name/client/hours/date

HOURS
employee_id/project_id/date

这足以满足我的需要吗?谢谢您的帮助。

最佳答案

我对您在问题中指定的时间和日期列有点困惑,因此我将使用更具体的名称。我是这样看的。

PK 位于引号之间

CLIENTS("id", name)

它被引用但丢失了:)

EMPLOYEES("id", name, password, manager_privi)

不确定 manager_privi 是什么...可能是员工的经理?

PROJECTS("id", project_name, client_id, start_date, end_date)

将日期一分为二,以免与工作日期混淆

HOURS("employee_id, project_id, worked_date", hours)

请注意,这是一个复合键。您可能还必须在project_id和work_date上创建索引以加快速度,但这与其设计无关 请注意,一名员工不能在同一项目的同一日期拥有 2 条记录。在这种情况下,如果员工尝试为同一日期和项目添加更多小时数,您将必须更新小时数

希望这有帮助。

关于Mysql数据库设计建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213558/

相关文章:

php - MySql 查询到 Postgres 查询。 Postgres 不支持 IF 条件

c# - 在 ASP.NET 4.5 中将 LINQ 与 MySql 结合使用

php - 将车辆实体连接到 ProductinOrder 实体中的产品实体

php - 如果条件为真,则选择数据

mysql - InnoDB 初始化警告

java - 如何将字符串中的日期转换为 Sql 日期?

php - search.php 页面返回错误

mysql - 为什么这个mysql语法错误

php - 如何在 PHP 中创建动态 MySQL 更新查询

Mysql使用另一个表来转换值