Разработка структуры данных для продуктов - PullRequest
0 голосов
/ 04 декабря 2018

Мне нужно спроектировать структуру таблиц с данными о продукте, чтобы соответствовать следующим требованиям:

1. A product consists of the following fields: EAN, CN, description, pvp
2. There are several types of users that access the products. The user types are not stable, they can be added or deleted at any time.
3. Any of the fields of the products may vary depending on the type of user who views it. For example:

У нас есть три пользователя:

1 - John - guest
2 - David - client
3 - Vicent - vip

У нас есть этот продукт сэти данные по умолчанию:

8470001234567 - 123456 - Iphone X - $799

Гость, вместо просмотра этих данных, видит следующее:

8431239876547 - 987654 - Iphone X - $849

Пользователи-клиенты видят данные по умолчанию, а пользователи vip видят:

8470001234567 - 654321 - Iphone X Sale - $709

Это означает, что пользователь видит данные по умолчанию для данного продукта, если нет исключения для его типа.Исключение может повлиять на любое поле (кроме идентификатора).

Я могу представить себе следующую структуру:

  • PRODUCTS : id ,ean, cn, описание, pvp
  • PRODUCT_EXCEPTION : product_id , user_type_id , ean, cn, описание, pvp

Я убедился, что с этой структурой делается много запросов, вы думаете о способе оптимизации этого, чтобы не было необходимости делать так много запросов?

Примечание 1: продукты содержатся впредложения, которые имеют определенное количество товаров.Примечание 2: я использую Laravel.Модель Offer связана с продуктами, то есть я получаю продукты следующим образом: $ offer-> products ()

1 Ответ

0 голосов
/ 06 декабря 2018

Глядя только на описание проблемы, я закончил с этим, что эквивалентно тому, что вы предлагаете с вашим Product_Exception:

enter image description here

Обоснование:

  • Поскольку типы пользователей различаются, вы не можете поместить значения непосредственно в таблицу Product.Ex.3 типа пользователей == 3 цены.Не здесь.Таким образом, вам нужна таблица ссылок между Product и UserType.
  • Таблица ссылок будет содержать характеристики 1 Product для 1 UserType.
  • Если вы хотите иметь значение по умолчанию, вы можете поместитьхарактеристики в таблице продукта также.Но тогда ваши запросы станут больше!Проверьте, существует ли значение исключения, если не используете значение по умолчанию.

Так что ваше решение имеет смысл для меня.

...