Дизайн таблицы пользователей базы данных электронной коммерции в нескольких магазинах - PullRequest
0 голосов
/ 01 мая 2020

Я занимаюсь разработкой мультимагазинной платформы электронной коммерции Restful api.

Я застрял в дизайне таблицы пользователей.

Пользователи платформы имеют 3 разные роли: администратор, клиент и продавец.

Администратор просто имеет имя пользователя, пароль, поля электронной почты.

У торговых пользователей есть дополнительные поля, в которые входят поля комиссии, activeStates (сводная таблица между состояниями и продавцами), addressDetails, taxNumber, city_id, state_id.

У пользователей-клиентов есть дополнительные поля, которые содержат такс: taxNumber, cart_Id, addressDetails, city_id, state_id. Я нашел 2 способа реализации этих таблиц.

Способ 1

3 разных таблицы, таких как Admin, Customer, Merchant.

Admin Table;

id
username
name
password
email
passwordResetToken
resetTokenExpireTime

Customer Tabe;

id
username
name
password
email
passwordResetToken
resetTokenExpireTime
cart_id
city_id
state_id
addressDetails
taxNumber

Merchant Table;

id
username
name
password
email
passwordResetToken
resetTokenExpireTime
city_id
state_id
addressDetails
taxNumber
commission

Way 2

Только пользовательский стол и за дополнительную плату поля Merchant, таблицы клиентов.

таблица пользователей;

id
username
name
password
email
passwordResetToken
resetTokenExpireTime

таблица клиентов;

cart_id
city_id
state_id
addressDetails
taxNumber
user_id

таблица торговцев;

city_id
state_id
addressDetails
taxNumber
commission
user_id

способ 1 Преимущества

  • Достаточно одной конечной точки входа для всех пользователей, вошедших на платформу.
  • Достаточно только одного метода создания JWT токена. Dynami c конечные точки на основе ролей

Недостатки способа 1

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

Преимущества Way 2

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

Недостатки способа 2

  • Необходимы 3 разные конечные точки входа для пользователей.
  • Жестко запрограммированная роль - основанные конечные точки
  • Для создания токена JWT нужен 3 разных метода, потому что пользователи не связаны.
  • Дополнительная таблица в базе данных

Итак, мне нужно посоветовать этот дизайн базы данных , Какой из способов, которые я нашел, лучше, или у вас есть другой совет из этого 2 способа.

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