2011-09-28 58 views
0

我开发了一个网站(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 | 
+----+------------+-----------+------------------------+ 

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

回答

1

我认为设计做得很好。但可能要将组分成组表,并将record_status分成状态表。如果你存储大量的记录,你会存储很多无用的信息,至少创造record_status字段和组现场

表枚举类型:群体
ID - 名
1 - 管理
2 - data_entry
3 - proof_reading
...

表:状态
id - 名称
1 - data_entry_processing
...

,如果你希望用户在不同的组在同一时间,你可以创建users_group表

表:user_groups
GROUP_ID - user_id说明
1 - 1
2 - 1
1 - 4
3 - 4 - 4
....

希望这会有帮助