Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как организовать структуру пользователей? / 8 сообщений из 8, страница 1 из 1
05.06.2017, 06:33
    #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
05.06.2017, 08:43
    #39465680
Как организовать структуру пользователей?
Если таблицу профиля клиента переименовать в "client", теперь не профиль, а отдельная сущность.

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

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

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

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

EAV не подойдет

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

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

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

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

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

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

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

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

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

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

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

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

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

Дело Ваше, думайте.
...
Рейтинг: 0 / 0
07.06.2017, 06:43
    #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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как организовать структуру пользователей? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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