我开发了一个网站(PHP),允许员工将记录添加到我们的系统中。
工作人员将向我们的数据库添加数千条记录。
我需要一种方法来跟踪已完成的记录以及记录的流程/状态。
这里是我能想到的一些团队:
数据输入团队
校对团队
管理团队
当工作人员(数据输入团队)完成记录时 - 他/她将单击“完成”按钮。然后不知何故它应该自动分配给“校对团队”。
一条记录需要校对小组检查两次。如果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/