Roles should have a common superclass QbRole, connecting relationships to entities.
It should be possible to store the role attributes both in the same table as the entity and in a separate table.
The role name will always be a part of the attribute names, to avoid name conflicts.
The motivation for using roles is to avoid having to update the tables for the entities as soon as the system is extended, and supporting maximum pluggability of modules.
We need a good example of when this would be practically useful, before it is considered important.
It\'s a good thing for keeping things modular, though.