Лучше иметь две отдельные пользовательские таблицы или одну? - PullRequest
4 голосов
/ 24 сентября 2011

У моего веб-приложения будет два типа пользователей, которые на 100% различаются - по полям, функциям и назначению на сайте. Цель одного типа пользователей - публиковать блоги, а цель другого - читать их и «следить» за постерами.

ЕДИНСТВЕННОЕ, что у них общего, - это идентификатор, электронная почта, пароль и пара других бит метаданных, таких как дата присоединения и т. Д.

Должен ли я попытаться извлечь их из одной и той же таблицы счетов или создать одну таблицу для каждой?

ПРИМЕЧАНИЯ

- Одна потенциальная вещь, о которой стоит подумать, заключается в том, что во избежание путаницы среди пользователей электронные письма между двумя типами учетных записей должны быть уникальными.

-Читатели и авторы будут иметь разные наборы данных, которые необходимо будет хранить о них, помимо обычных метаданных «учетной записи».

Ответы [ 4 ]

4 голосов
/ 24 сентября 2011

Я бы их отделил.

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
}
3 голосов
/ 24 сентября 2011

Определить «пользователя».Если пользователь - это человек, который зарегистрировал себя на вашем сайте, используя адрес электронной почты, пароль и псевдоним и который может войти в систему, то включите всех в таблицу users.

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

В противном случае, когда вы добавляете новый тип разрешения в будущем, вам не нужно добавлять новую таблицу для этого типа пользователя (и изменить весь (sql) код, который обрабатывается пользователями: вход в систему, сброс паролей и т. д.).Вы просто добавляете новый тип разрешения и сопоставляете его с соответствующими пользователями.

2 голосов
/ 24 сентября 2011

это сэкономит вам весь труд, если у вас будет только одна таблица и один столбец в таблице, определяющий, к какому типу они относятся.

0 голосов
/ 24 сентября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...