Вам не нужны 3 пользовательские таблицы.Вы описываете понятие «роль», которое обычно приводит к следующим типам таблиц:
User
Role
User_Role (cross reference to declare which users have which roles)
У вас будет 3 роли: одна для внутренней, одна для клиентов, одна для подрядчиков.Это нормализованный дизайн, но вы можете обойтись денормализованным дизайном в одной пользовательской таблице (но я бы не рекомендовал его).Я предполагаю, что у вас будет другая логика в зависимости от роли.
Кроме того, я должен отметить, что с учетом типов пользователей и сайтов, которые вы описали выше, естественно подумать о выполнении такого рода аутентификации с использованием нескольких хранилищ LDAP,которые, например, могут быть реализованы с 3 различными активными каталогами.Это позволяет делегировать проверку подлинности и авторизацию ИТ-отделу, который контролирует эти домены.