Подтвердить что ты не робот

Дизайн базы данных: 3 типа пользователей, отдельная или одна таблица?

У меня есть 3 типа пользователей:

  • Админы
  • Поставщики
  • Сотрудники

Каждый тип пользователя будет иметь разные пользовательские интерфейсы и доступ к различным типам данных. Их единственное сходство заключается в том, что они используют одно веб-приложение, но имеют доступ к совершенно другим вещам. Лучше ли размещать их в одной пользовательской таблице, например tbl_users, или лучше создать tbl_admins, tbl_suppliers, tbl_employees?

4b9b3361

Ответ 1

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

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

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

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

Или еще одна вещь, которую следует учитывать: вы можете использовать таблицу users, которая содержит только очень ограниченную информацию о пользователях всех трех типов, и если типы имеют расширенные атрибуты, которые не очень хорошо соотносятся друг с другом, вы могут хранить их в других таблицах с внешним ключом обратно в основную таблицу users.

Ответ 2

Существует также третий вариант: поместите столбцы, которые имеют все пользователи, в tbl_users, и создайте три таблицы для tbl_admins, tbl_suppliers и tbl_employees, присоединяющихся к tbl_users как от 1 до 0. 0,1. Вы должны рассмотреть этот выбор как альтернативу, когда количество разделяемых столбцов значимо.

Ответ 3

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

Ответ 4

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

Если пользователь может принадлежать нескольким ролям, подумайте о создании таблицы UserRoles. В противном случае добавление дополнительного поля в существующую таблицу, например RoleType, поможет различать разные типы пользователей.

Ответ 5

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

Это проще, если вы его централизуете.

Забота о том, как/к чему они обращаются, будет под разрабатываемым вами программным обеспечением. Вы можете либо получить/сжать пользовательский интерфейс [или все, что им доступно в программной системе], исходя из типа вашего пользователя.

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

Надеюсь, что это поможет.