I'll-Be-Back
I'll-Be-Back

Reputation: 10828

Data Entry Tracking (Database Design)

I have developed a website (PHP) that allow staffs to add records on to our system.

Staffs will be adding thousands of records into our database.

I need a way to keep track of what record have been done and the process/status of record.

Here a number of Teams I could think of:

  1. Data Entry Team

  2. Proof Reading Team

  3. Admin Team

When staff (Data Entry Team) completed a record - he/she will then click on the Complete button. Then somehow it should asssign 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"

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.

Is this good data entry management solution? How do I put this into Database Design perspective?

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 there alternative better solution of database design?

Upvotes: 0

Views: 328

Answers (1)

Packet Tracer
Packet Tracer

Reputation: 3924

i think design it's well done. but may be you want to separate group into groups table, and record_status into status table. If you're storing a lot of records you would store a lot of useless information, at least create an enum type for record_status field and group field

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

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

and if you want the users to be in different groups at a time, you could create users_group table

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

Hope this helps

Upvotes: 1

Related Questions