У меня есть база данных в производстве, с двумя типами пользователей. Подобно Uber, у нас есть «Rider» и «Driver».Два типа пользователей в базе данных, как я могу переделать мою базу данных?
В моей базе данных у меня есть Пользователи, Rider и Driver tables. Таблица пользователей содержит общие данные между двумя типами пользователей, а таблицы Драйвер и Райдер содержат оставшиеся данные.
Когда база данных изначально была спроектирована, не считалось, что Драйвер может также хотеть быть Всадником. Этот вариант использования, как теперь возник, и я не уверен, как обрабатывать таблицы базы данных.
В настоящее время поле email_address имеет уникальное ограничение. Пользователь также имеет поле user_type, которое является либо Rider, либо Driver.
Мои текущие мысли - удалить уникальное ограничение на email_address и создать уникальный индекс в email_address и user_type, что позволит пользователям использовать обе стороны приложения.
Это создает проблему необходимости указывать, с каким типом пользователя работают, например, при вызове/входе в систему. Думаю, теперь мне нужно будет что-то вроде/login? Type = rider.
Есть ли какие-либо лучшие подходы к этому? Мы в производстве, поэтому я не могу просто ломать и воссоздавать, но я открыт для переноса данных, если есть лучшее решение.
Это звучит как беспорядок. У меня просто была бы одна таблица для всех пользователей, а затем вторая таблица для пользовательских ролей.Каждая запись в этой таблице будет иметь идентификатор пользователя и идентификатор роли. В случае пользователей, которые являются гонщиками и драйверами, в ролях для одного пользователя будет две записи. –
@TimBiegeleisen Спасибо за быстрый ответ. Пользовательские типы также имеют дополнительные поля, например. number_of_trips_taken применяется к «Всадникам», но не «Драйверы». –
Создайте таблицу метаданных всадников, чей внешний ключ является идентификатором пользователя. Если пользователь не присоединился к этой таблице, вы проигнорируете его как не драйвер. –