I will defer readers to http://drupal.org/node/view/5564 for a reason why. There are other good explanations here and there on the forums as well - basically, single users in a user role doesn't scale in a site that might have many types of people visiting.
However I need some clues on how to implement this. Currently, there seem to be two places where user role information is kept.
1) User roles are stored as rid in the users table.
2) User roles are stored in the serialized 'data' field in the users table.
Initially, I didn't know abou the 'data' field, so I went and implemented a relation table called user_in_role, with foreign keys of uid and rid -- essentially a mapping from a user to a role. But now I'm stuck because I don't know exactly what the serialized 'data' field in users does.
Right now, when I query for users and user roles, I'll get a row for each user and role pair (which means that the same uid will come up), and then I would probably have to do some manual processing in order to get a serialized data structure out of that.
So I'm wondering if anyone here has any ideas on how to implement this. I personally see multiple roles as the first step to both taxonomy_access and per_node_access, which is why I decided to tackle this.
Thank you for your time,