• It would be advisable to create User-defined Database Roles, add your Database Users to the Roles, and only grant permissions or Fixed Role Membership to those Roles. The Roles will act as containers where you can always go to figure out what a given person can do in a database. If I ever need to add people to db_datareader (I prefer not too but sometimes it makes sense, usually for non-prod or ad hoc reporting) I still do not add Users directly to db_datareader. I add the User to a User-defined Database Role and add that Database Role to db_datareader. This keeps the user-to-role layout flat, i.e. Users can only belong to User-defined Database Roles (I aim for 1 to 1 User to User-defined Role, i.e. each user can only belong to one Role) which eases my auditing tasks and makes it easier to avoid a lot of the multi-role-membership and inherited membership oddities that can arise.

    There are no special teachers of virtue, because virtue is taught by the whole community.
    --Plato