mysql - 记录录入——如何管理?

标签 mysql database design-patterns database-design

我开发了一个数据输入网站,允许员工将记录添加到我们的系统中。员工可以将数千条记录添加到我们的数据库中,但是我需要一种方法来跟踪哪些员工正在记录中插入数据、他们何时完成记录以及谁正在校对记录。 (注:不是审计系统)

我需要良好的管理技术,如何才能做到?

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

  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   |
+----+------------+-----------+------------------------+

这是管理记录的方式吗?或者有什么更好的替代解决方案?

最佳答案

您可以执行类似于下面结构的操作。

recordsstaffs 表来自您的问题(几乎)。我根据您的描述添加了以下内容:

team --> 拥有所有团队

teamStaff --> 保存哪些工作人员属于哪个团队

recordStatusType --> 保存记录可能处于的所有状态

teamRecordStatusType --> 保存哪些团队(以及哪些工作人员)被允许处理处于哪种状态的记录,即数据输入团队被允许处理数据输入处理和数据输入完成中的记录状态,但没有其他。可以在此处设置包含所有状态类型的管理团队,以便他们可以“查看”所有记录,无论他们处于什么状态。

recordCurrentStatus --> 给定记录的当前状态以及谁进行了最后的更改以及进行更改的时间。这应该允许您禁止同一团队中的任何用户,例如校对团队,已经完成第一次校对,需要将其传递给团队的另一名成员。该表还允许管理员更改给定记录的状态并分配临时状态。

希望这有帮助!

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 team;
+----+---------------------+
| id | team                |
+----+---------------------+
|  1 | Data Entry Team     |
|  2 | Proof Reading Team  | 
|  3 | Admin Team          | 
+----+---------------------+

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

mysql> select * from teamStaff;
+----+---------+--------+
| id | staffId | teamId |
+----+---------+--------+
|  1 |    1    |   3    |
|  2 |    2    |   1    |
+----+------------------+

mysql> select * from recordStatusType;
+----+---------------------------+
| id | statusType                |
+----+---------------------------+
|  1 | Data Entry Processing     |
|  2 | Data Entry Complete       |
|  3 | Ready for Proof Reading 1 | 
|  4 | Proof Reading 1 Complete  |   
|  5 | Ready for Proof Reading 2 | 
|  6 | Proof Reading 2 Complete  | 
+----+---------------------------+

mysql> select * from teamRecordStatusType;
+----+---------+-------------+
| id | teamId | statusTypeId |
+----+---------+-------------+
|  1 |    1    |     1       |
|  2 |    1    |     2       |
|  3 |    2    |     3       | 
|  4 |    2    |     4       | 
|  5 |    2    |     5       |
|  6 |    2    |     6       |
+----+-----------------------+

mysql> select * from recordCurrentStatus;
+----+-----------+--------------+---------------------+-----------------------+
| id | recordsId | statusTypeId | lastModified        | lastModifiedByStaffId |
+----+-----------+--------------+---------------------+-----------------------+
|  1 |    1      |     1        | 2011-10-17 10:24:12 |          1            |
|  2 |    1      |     2        | 2011-10-17 08:24:12 |          1            |
+----+--------------------------+---------------------+-----------------------+

关于mysql - 记录录入——如何管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7794016/

相关文章:

CSV文件的python Dictread,数据中包含NUL字节

java - 如何向已经扩展另一个的类添加可重用逻辑?

php - 调用未定义函数mysql_connect()错误

database - Wiki 的方法 - 数据库混合

mysql - 在 mysql 中用 'N/A' 替换计数 0?

mysql - 根据特定值对记录进行排名的 SQL 语句

mysql - Google MySQL 失败,出现 ERROR 2013 HY000 系统错误 2

java - 集成命令行软件与Java程序

php - 如何防止 PHP 中的 SQL 注入(inject)?

mysql - 当另一个表中没有行时如何从MySQL中选择一行