powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как организовать структуру пользователей?
8 сообщений из 8, страница 1 из 1
Как организовать структуру пользователей?
    #39465656
Здравствуйте, как организовать структуру пользователей?

Есть 3 вида пользователей: админ, оператор и клиент.
У каждого типа пользователей, разные данные (поля).
За каждым пользователем закреплен свой оператор или наоборот, у оператора есть свои клиенты.

Думаю сделать так:
1. таблица пользователей "user" (id, login, password, name и т.д.)
2. таблица профиль клиента "client_profile" (id, user_id и т.д.)
3. таблица профиль оператора "operator_profile" (id, user_id и т.д.)

А вот как сделать связь оперетар-клиент?

Сделать "один ко многим" или в таблицу "user" добавить "parent_id"?

Как сделать правильно?
...
Рейтинг: 0 / 0
Как организовать структуру пользователей?
    #39465680
Если таблицу профиля клиента переименовать в "client", теперь не профиль, а отдельная сущность.

Есть таблица "заявки", в ней записывать id из таблицы "user", или "id" из таблицы client?
...
Рейтинг: 0 / 0
Как организовать структуру пользователей?
    #39465789
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ерунда денормализованная.

Есть пользователи. Есть роли. Есть отношение пользователь-роль. То, что "у клиента есть оператор", говорит лишь о том, что у роли "клиент" есть компонент "оператор", вследствие чего у экземпляра "пользователь", имеющего значение атрибута "роль", равного "клиент", будет атрибут "идентификатор оператора".

Реализовывать подобную схему (шаблон роли -> атрибуты экземпляра пользователя) удобнее всего как EAV.
...
Рейтинг: 0 / 0
Как организовать структуру пользователей?
    #39465823
Akina,

RBAC реализован.

EAV не подойдет

Мне не нравиться данный подход, вот я и обращаюсь за советом.

Нужно отдельная таблица для клиентов, т.к. будут: балансы, статусы и т.д.
...
Рейтинг: 0 / 0
Как организовать структуру пользователей?
    #39465992
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кирилл ГолодаеаRBAC реализован.Это понятно.

Кирилл ГолодаеаEAV не подойдетПричина?

Кирилл ГолодаеаМне не нравиться данный подходКакой именно? EAV?

Кирилл ГолодаеаНужно отдельная таблица для клиентовИз физики бизнес-процесса это никак не проистекает. Но хотите так - делайте так... только тогда настоятельно советую сделать клиента отдельной сущностью (и опера, и админа - ещё 2 отдельных), а с сущностью "человек" попрощаться.
...
Рейтинг: 0 / 0
Как организовать структуру пользователей?
    #39466332
Akina,

"Мне не нравиться данный подход" мой с сущностями.

Делать 3 отдельных сущности, считаю неправильно "Ерунда денормализованная"

К примеру, есть модули "shop", "blog", "form" и у каждого свой профиль пользователя, но при этом, есть общая таблица пользователей.
Делают так: заводят таблицу профиля "forum_user" и добавляют нужные поля для форума.
Вы считаете данный подход неправильным?

В моём случаи, можно переместить все поля для оператора и клиента в таблицу "user".
Важно, у клиента должно быть поле "баланс" с типом "decimal".
Вот и думаю, как поступить, все в одну таблицу или делать профиля, ни тот ни другой подход не нравится.

Как поступили бы Вы, с EAV и без?
Заранее спасибо.
...
Рейтинг: 0 / 0
Как организовать структуру пользователей?
    #39466347
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кирилл ГолодаеаДелают так: заводят таблицу профиля "forum_user" и добавляют нужные поля для форума.Не всегда. Во всяком случае не так категорично.

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

Вариант второй - EAV. По сути совершенно то же самое, да и проблемы те же, только место экономится.

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

Дело Ваше, думайте.
...
Рейтинг: 0 / 0
Как организовать структуру пользователей?
    #39467457
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мнение чайника
Кирилл ГолодаеаДумаю сделать так:
1. таблица пользователей "user" (id, login, password, name и т.д.)
2. таблица профиль клиента "client_profile" (id, user_id и т.д.)
3. таблица профиль оператора "operator_profile" (id, user_id и т.д.)

Убрать id из 2й и 3й таблиц.

Кирилл ГолодаеаА вот как сделать связь оперетар-клиент?
Сделать "один ко многим" или в таблицу "user" добавить "parent_id"?

Варианты:
1. Через промежуточную таблицу клиент-оператора сделать отношение многие-ко-многим (если вдруг появится необходимость или потребуется иметь историю отношений клиент-оператор)
2. Добавить "parent_id" не в "user", а в "client_profile"
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как организовать структуру пользователей?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]