Лучше иметь две отдельные пользовательские таблицы или одну?
Мое веб-приложение будет иметь два типа пользователей, которые на 100% различаются - по полям, функциям и назначению на сайте. Цель одного типа пользователей - публиковать блоги, а цель другого - читать их и "следить" за постерами.
ЕДИНСТВЕННОЕ, что у них общего, - это необходимость идентификатора, электронной почты, пароля и пары других бит метаданных, таких как дата присоединения и т. Д.
Должен ли я попытаться извлечь их из одной и той же таблицы счетов или создать одну таблицу для каждой?
ЗАМЕТКИ
-Возможно подумать о том, что для предотвращения путаницы пользователей электронные письма между двумя типами учетных записей должны быть уникальными.
-Читатели и авторы будут иметь разные наборы данных, которые необходимо будет хранить о них, помимо обычных метаданных "учетной записи".
4 ответа
Я бы их отделил.
TABLE User {
id
email
password
salt
created
modified
}
TABLE follower {
user_id
...
}
TABLE author {
user_id
...
}
Со временем ваше приложение будет расти. Возможно, теперь у вас есть две предназначенные роли - но это может измениться в будущем. У вас могут быть авторы, которые также следуют за другими авторами или подписчиками, которые "повышены" до авторов. Вы также можете начать добавлять другие "роли" и захотеть что-то вроде этого:
TABLE user_role {
user_id
role_id
}
TABLE role {
id
name
}
Определите "пользователя". Если пользователь - это кто-то, кто зарегистрировал себя на вашем сайте, используя адрес электронной почты, пароль и псевдоним, и кто может войти в систему, тогда вставьте всех в users
Таблица.
То, что пользователи могут или не могут делать на сайте, не отличается для пользователя. Это их разрешения, которые отличаются. Карта разрешений для пользователей в отдельной таблице. Не создавайте таблицу для каждого типа пользователей.
В противном случае, когда вы добавляете новый вид разрешений в будущем, вам не нужно добавлять новую таблицу для этого типа пользователя (и изменять весь (sql) код, который обрабатывается пользователями: вход в систему, сброс паролей, и так далее). Вы просто добавляете новый тип разрешения и сопоставляете его с соответствующими пользователями.
Это сэкономит вам массу работы, чтобы иметь только одну таблицу и один столбец в таблице, который определяет их тип.
Нет, составьте по одной таблице для каждого. Это будет легче управлять, это будет масштабируемым