mysql - 数据输入跟踪(数据库设计)

标签 mysql database database-design project-management

我开发了一个网站(PHP),允许员工将记录添加到我们的系统中。

工作人员将向我们的数据库添加数千条记录。

我需要一种方法来跟踪已完成的记录以及记录的流程/状态。

这里是我能想到的一些团队:

  1. 数据输入团队

  2. 校对团队

  3. 管理团队

当工作人员(数据输入团队)完成记录时 - 他/她将单击“完成”按钮。然后不知何故它应该自动分配给“校对团队”。

一条记录需要校对小组检查两次。如果StaffB完成校对,则校对小组的另一名成员需要再次检查。

校对完成后,管理团队将分配“记录已完成”

几个月后,记录可能需要更新(拼写错误、价格变化等) - 管理员可能会将记录分配给数据输入团队。

这是一个好的数据输入管理解决方案吗?我如何将其纳入数据库设计的角度?

这是我尝试过的:

mysql> select * from records;
+----+------------+----------------------+
| id | name       | address              |
+----+------------+----------------------+
|  1 | Bill Gates | Text 1 Text  Text 1  |
|  2 | Jobs Steve | Text 2 Text 2 Text 2 |
+----+------------+----------------------+


mysql> select * from staffs;
+----+-----------+-----------+---------------+
| id | username  | password  | group         |
+----+-----------+-----------+---------------+
|  1 | admin1    | admin1    | admin         |
|  2 | DEntryA   | DEntryA   | data_entry    |
|  3 | DEntryB   | DEntryB   | data_entry    |
|  4 | PReadingA | PReadingA | proof_reading |
|  5 | PReadingB | PReadingB | proof_reading |
+----+-----------+-----------+---------------+


mysql> select * from data_entry;
+----+------------+-----------+------------------------+
| id | records_id | staffs_id | record_status          |
+----+------------+-----------+------------------------+
|  1 |          2 |         3 | data_entry_processiing |
|  2 |          2 |         3 | data_entry_completed   |
|  3 |          2 |         4 | proof_read_processing  |
|  4 |          2 |         4 | proof_read_completed   |
|  5 |          2 |         5 | proof_read_processing  |
|  6 |          2 |         5 | proof_read_completed   |
+----+------------+-----------+------------------------+

是否有更好的数据库设计替代方案?

最佳答案

我认为设计做得很好。但可能您想将组分成组表,并将 record_status 分成状态表。如果您要存储大量记录,您将存储大量无用信息,至少为 record_status 字段和组字段创建一个枚举类型

table: groups
id - name
1 - admin
2 - data_entry
3 - proof_reading
...

table: status
id - name
1 - data_entry_processing
...

如果您希望用户一次位于不同的组中,您可以创建 users_group 表

table: user_groups
group_id - user_id
1 - 1
2 - 1
1 - 4
3 - 4
4 - 4
....

希望这有帮助

关于mysql - 数据输入跟踪(数据库设计),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7583393/

相关文章:

SQL INNER JOIN 多个表未按预期工作

mysql - 条件 UNIQUE/FK 约束

sql - 数据库结构反馈

php - 如何使用 mysql 在 android 中更改密码(注册和登录工作正常,但更改密码时出现问题)

mysql - 同一张表,多个左连接,条件在mysql中

MySQL将日期添加到日期

javascript - 服务器发送事件 : Not working

mysql - Laravel/MySql 中的多态与普通数据库设计

mysql - SQL - 如何返回包含重复项的一列的所有列字段

mysql - 在 mysql 中分离两个相关数据集的最佳实践