Let's separate into separate entities Task statuses, Schedule types, Tasks, Executors, Task log. (Filling conditional, made for clarity)
Task statuses Schedule types
| ID | Name | | ID | Name |
| ---- | --------------- | | ---- | -------- |
| 1 | On performance | | 1 | day |
| 2 | Completed | | 2 | week |
| 3 | Not done |
| 4 | Created |
| 5 | Submitted |
| | to another |
| | performer |
Performers
| ID | Name |
| ---- | -------------- |
| 1 | Artist1 |
| 2 | Artist2 |
| 3 | Artist1 |
We will also store tasks as a separate entity, so that the task itself can be separated from its state.
Tasks
| ID | Description | View schedule | Creation Date | Artist |
| ---- | ----------- | ---------------- | --------------- ------ | -------------- |
| 1 | Description1 | 1 | 01/01/2015 00:00:00 | 1 |
| 2 | Description2 | 1 | 01/01/2015 00:00:00 | 2 |
| 3 | Description3 | 2 | 01/01/2015 00:00:00 | 3 |
We will store the changes in the task states in a separate table so that the chronology of the changes in the states and additional attributes can be tracked.
Task Log
| ID | Task | Date | Status | Artist |
| ---- | -------- | --------------------- | -------- | ---- -------- |
| 1 | 1 | 01/01/2015 00:00:00 | 4 | |
| 2 | 1 | 01/01/2015 01:00:00 | 1 | |
| 3 | 1 | 01/01/2015 02:00:00 | 5 | 2 |
| 4 | 1 | 01/01/2015 02:00:00 | 2 | |