Насколько сложно поддерживать только одну таблицу для пользователей разных ролей? - PullRequest
0 голосов
/ 07 октября 2011

Если вам удастся спроектировать таблицу базы данных для пользователей, наилучшим вариантом будет долговременное обслуживание, программирование базы данных, веб-разработка. Возьмите эту ситуацию в качестве примера, меня попросили создать базу данных для форума, и менеджер хочет, чтобы для всех пользователей была только одна таблица, будь то Admin, Moderator, зарегистрированные ,Guest роли. Я думаю, что это не очень хорошая идея (и я не могу найти причины, просто внутреннее чувство). Как я могу убедить менеджера, что иметь много таблиц, например, для администратора и еще для всех, - хорошая идея. Вы также можете применить аналогичную вещь к сайту basecamp, где есть иерархия:

Company
- Admin
- Employees
- Clients
- Managers

Даже если они различаются только ролями, хорошо иметь разные таблицы, верно?

Ответы [ 3 ]

2 голосов
/ 07 октября 2011

Все зависит от вас, вам нужно уйти и выяснить.Все дело в атрибутах сущностей.

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

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

Для получения дополнительной информации о том, почему вы структурируете базу данных таким способом, изучите Третий Нормальный Форма и другие уровни нормализации данных.

2 голосов
/ 07 октября 2011

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

1 голос
/ 07 октября 2011

Ваш начальник, вероятно, прав: лучшим вариантом для такой структуры было бы иметь одну таблицу «Пользователь», в которой есть столбец «Роль» (при условии, что у каждого сотрудника может быть только одна роль).

Ваш дизайн означает, что, если был добавлен новый тип сотрудника, в базу данных необходимо было бы добавить совершенно новую таблицу, тогда как в приведенном выше примере вам нужно будет только добавить строкуданных в вашу таблицу «Роль».

...