Personalmente siempre he preferido tener columnas int estándar para esto, con un enlace clave externa a una tabla de descripción. Esto le permite limitar los valores para la columna de identificación de tipo.
Por supuesto, esto puede conducir a la saturación de la tabla, pero le permite tener una tabla "localizada" para ir con la tabla de descripción, para que sus aplicaciones puedan mostrar contenido localizado en desplegables/informes, etc.
User.UserTypeID -> UserType.UserTypeID -> UserTypeLocalised.UserTypeID where locality = ??
Ésta es también la base de datos más agnóstica y por lo tanto más fácilmente portado a diferentes plataformas.
Además, no suena bien para un usuario ser un individuo o una organización. Esperaría que un usuario sea parte de una organización, lo que requeriría una tabla de organización y el usuario tendría una columna de ID de organización. Normalmente, el tipo de usuario sería una diferenciación de "Ser humano/sistema" (suponiendo que sus sistemas utilicen inicios de sesión a temperatura ambiente para realizar operaciones y que desee realizar auditorías).
¿Qué RDBMS aparte de MySQL admiten un tipo de datos ENUM? (Esta no es una consulta retórica.) – Tomalak
@Tomalak: Sé que postgresql sí. –
Excelente pregunta, me gustaría que otros participen y traigan respuestas. Tomalak, tal vez debería publicar su pregunta como una respuesta positiva si conoce algunos RDBMS populares que en realidad no son compatibles con enum y enumerelos. – Tom