Ответ Дмитрия хороший, но поскольку в вашем случае речь идет о том, что по сути является таблицей пересечений, есть еще один хороший способ решить эту проблему. В вашей ситуации мне также нравится идея создания профиля пользователя по умолчанию, который вы можете использовать в своем коде для установки настроек по умолчанию. Это хорошо, потому что поддерживает вашу модель данных в чистоте, не вводя дополнительные ключи-кандидаты. В этом фиктивном / дефолтном профиле вам нужно было бы четко понимать, что это такое. Вы можете дать ему ясное имя, например «Пользователь по умолчанию», и убедиться, что никто, кроме администратора, не имеет доступа к учетным данным пользователя.
Еще одно преимущество этого решения заключается в том, что вы можете войти в систему как пользователь по умолчанию и использовать графический интерфейс вашей системы для изменения значений по умолчанию, а не манипулировать данными с помощью инструментов доступа к БД. В зависимости от политики вашего магазина, прямой доступ к таблицам данных программистам может быть затруднен или невозможен. Использование протестированных / утвержденных графических интерфейсов для изменения настроек по умолчанию удаляет много красной ленты и предотвращает некоторые виды случайного повреждения данных.
Итог: первичные ключи важны. В транзакционной системе каждая таблица должна иметь хотя бы один уникальный индекс, один из которых должен быть первичным ключом. Вы всегда можете применить это, добавив суррогатный ключ (автоинкремент) к каждой таблице. Даже если вы это сделаете, вам все равно обычно нужен уникальный индекс натуральный , когда это возможно. Так вы обычно найдете то, что ищете в таблице.
Создание записи Default User в вашей пользовательской таблице - это не обман или хак, она использует структуру таблицы так, как она предназначена, а позволяет вам использовать уникальное ограничение на комбинацию идентификатора пользователя и идентификатора профиля , независимо от того, изобретаете ли вы дополнительное, произвольное уникальное ограничение с суррогатным ключом.