Возможно, вы захотите рассмотреть вопрос о нормализации.
Если предположить, что имена пользователей уникальны - два человека не могут иметь одно и то же имя пользователя, заходите - тогда вы можете исключить "id" из таблицы Users, чтобы предотвратить обновление / вставку / удаление аномалий (выполнение этого почти наверняка положить пользователей в BCNF, и, вероятно, DKNF - это хорошо).
Клиенты в порядке. В чем разница между Клиентами и Пользователями? Действительно ... похоже на меня.
Убедитесь, что ссылки выполняются с использованием ограничений внешнего ключа, и я думаю, что это должно быть лучше.
EDIT:
На основе нового дизайна у меня есть следующие предложения:
Изменение клиентов / пользователей на три таблицы:
ClientNames
- ClientID (PK)
- ClientName
ClientUsernames
- ClientID (PK)
- Username
UsernamePasswords
- Username (PK)
- Password
Это безопасно и говорит о том, что один Клиент / Пользователь имеет одно имя, один Клиент / Пользователь имеет одно Имя пользователя и одно Имя пользователя имеет один Пароль. Я не вижу другого хорошего разложения (в том смысле, что оно будет в плотной нормальной форме).
Вы можете исключить одну из этих таблиц, исключив синтетический ключ "ClientID", если хотите. У этого есть недостатки, и это может быть невозможно (некоторые люди имеют одно и то же имя!).
Проблема в том, что ClientID, ClientName и UserName, скорее всего, определяют друг друга таким образом, что их нельзя поместить в одну таблицу.