Лучше иметь две отдельные пользовательские таблицы или одну?

Мое веб-приложение будет иметь два типа пользователей, которые на 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) код, который обрабатывается пользователями: вход в систему, сброс паролей, и так далее). Вы просто добавляете новый тип разрешения и сопоставляете его с соответствующими пользователями.

Это сэкономит вам массу работы, чтобы иметь только одну таблицу и один столбец в таблице, который определяет их тип.

Нет, составьте по одной таблице для каждого. Это будет легче управлять, это будет масштабируемым

Другие вопросы по тегам