The role and instrument tables have been merged into one (the instrument
table). There are not that many roles that aren't instruments and it is
much simpler to mange this way. The role editor and role selector have
been removed and the instrument related UI parts have been modified
accordingly.
While the previous code was indeed valid SQL is wasn't the best way to
do this. Also, only works with parts where included in the result set.
This is fixed now. Some optimization may still be neccessary.
Before works where stored using a complicated tree structure where each
part references its parent. Now it's a flat structure that keeps track
of the relations using a new field named part_level. The corresponding
query was simplified accordingly. Also, the updateWork function was
rewritten.
This includes tables for persons, instruments and works as well as some
queries and functions to work with them. The generated code should be
ignored by Git for now. I also added a section to README.md explaining
how to handle code generation.