I have developed a data entry website that allow staffs to add records on to our system. Staffs can add thousands of records into our database, however I need a way to keep track which staff are inserting data in a record, when they have finished a record, and who are proof reading the records. (Note: Its not audit system)
I need a good management technique, how can it be done?
Here a number of Teams I could think of:
-
Data Entry Team
-
Proof Reading Team
-
Admin Team
When staff (Data Entry Team) completed a record – he/she will then click on the Complete button. Then somehow it should assign to ‘Proof Reading Team’ automatically.
A record need to be checked twice from a Proof Reading Team. If StaffB finish proof reading then another member from Proof Reading Team need to check it again.
When Proof reading is done, Admin Team will then assign “Record Completed” or something like that.
In a few months later record might need to be updated (spelling mistake, price change, etc) – Admin might to assign record to Data entry team.
Here what I tried:
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 |
+----+------------+-----------+------------------------+
Is this how it should be done for managing records? or what is the alternative better solution?
You could do something like the structure below.
The
records&staffstables are from your question (pretty much). I have added in the following based on what you described:team–> holds all of the teamsteamStaff–> holds which staff members are in which teamrecordStatusType–> holds all of the statuses that a record can be inteamRecordStatusType–> holds which teams (and by relation which staff members) are allowed to process records in which status i.e Data Entry Team are allowed to process records in Data Entry Processing & Data Entry Complete statuses but nothing else. An Admin team could be set up here with all status types so that they can ‘see’ all records irrespective of what status they are in.recordCurrentStatus–> the current status of a given record along with who made the last change and when that change was made. This should allow you to disallow any user in the same team e.g. Proof Reading Team, who has already completed the first proof reading and needs to pass it onto another member of the team. This table will also allow a given record’s status to be changed by an admin and assigned a status ad hoc.Hope this helps!