powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сохранение в БД истории данных изменения цены на товары в интернет магазине.
25 сообщений из 57, страница 1 из 3
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40119413
shantiom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня!
Как правильно организовать хранение в БД истории изменения цен на товары в интернет магазине.
То есть, собираю данные с сайта интернет-магазина, сбор 2-3 раза в неделю. Товаров несколько тысяч.
Потом эти данные хочу сохранить в БД для последующего анализа.

Пока накидал такую структуру:

1) Таблица   Product (id, art, product_name)
2) Таблица Price (id, date, price, fk_product_id)
3) Таблица Category (id, category_name, fk_product_id)
4) Таблица Brand (id, brand_name, fk_product_id)

СУБД - Postgresql

В правильном ли направлении я двигаюсь ? Это мой первый опыт работы с БД и СУБД)
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40119505
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shantiom,

В Price id не имеет значения можно убирать смело.
Brand (id, brand_name) приводим в такой вид. Бренд закидываем в Product. Конечно если бренд это производитель, а не сферический конь в ваккууме.

Ну и это все актуально если парсим сторонние сайты, а не свою поделку. Правда уже есть куча сервисов в которых видна динамика цен. )
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40119511
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проще у владельца сайта попросить непосредственный доступ к БД. Если даст -
ничего парсить не придётся и с некоторой вероятностью там уже будет история цен.
Если не даст - этот топик перейдёт в разряд нарушения авторских прав и прочего
оффтопика.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40119521
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой Бобр
В Price id не имеет значения можно убирать смело.

Я бы не стал. Тогда надо будет использовать мало того, что естественный ключ, так еще и композитный.
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40119523
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Если не даст - этот топик перейдёт в разряд нарушения авторских прав

Почему?
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40119527
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatПочему?

Во-первых, это может быть явно запрещено в Terms of Service.
Во-вторых, если он собранные данные перерабатывает для себя - это fair use, но
если он их публикует и тем более за деньги, да ещё и выдавая за своё...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40119529
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
fkthatПочему?

Во-первых, это может быть явно запрещено в Terms of Service.
Во-вторых, если он собранные данные перерабатывает для себя - это fair use, но
если он их публикует и тем более за деньги, да ещё и выдавая за своё...
Тогда "Яндекс Маркет" и им подобные это вообще преступная банда хуже нацистов :))
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40119768
shantiom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Проще у владельца сайта попросить непосредственный доступ к БД. Если даст -
ничего парсить не придётся и с некоторой вероятностью там уже будет история цен.
Если не даст - этот топик перейдёт в разряд нарушения авторских прав и прочего
оффтопика.


Спасибо конечно за совет по АПИ, но это все вообще не относится к вопросу.
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40119769
ASNexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat
Dimitry Sibiryakov
пропущено...

Во-первых, это может быть явно запрещено в Terms of Service.
Во-вторых, если он собранные данные перерабатывает для себя - это fair use, но
если он их публикует и тем более за деньги, да ещё и выдавая за своё...

Тогда "Яндекс Маркет" и им подобные это вообще преступная банда хуже нацистов :))


Судя по тому, что на "Яндекс Маркет" есть данные далеко не по всем магазинам (в том числе и вполне известным), можно предположить, что они как раз используют данные только тех, с кем у них есть соответствующие соглашения, и, возможно, плюс тех, кто в принципе не ограничивает использование своей информации (в том-же Terms of Service)
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40119770
shantiom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр
shantiom,

В Price id не имеет значения можно убирать смело.
Brand (id, brand_name) приводим в такой вид. Бренд закидываем в Product. Конечно если бренд это производитель, а не сферический конь в ваккууме.

Ну и это все актуально если парсим сторонние сайты, а не свою поделку. Правда уже есть куча сервисов в которых видна динамика цен. )


Спасибо за ответ.
Вообще вот что я нашел на эту тему, может кому пригодится:
Для сохранения такого рода данных используют Slowly_changing_dimension
https://en.m.wikipedia.org/wiki/Slowly_changing_dimension
https://www.sql.ru/forum/620607/shablony-primeneniya
https://www.sql.ru/forum/900025/scd2
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40119803
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shantiom
Вообще вот что я нашел на эту тему, может кому пригодится:
Для сохранения такого рода данных используют Slowly_changing_dimension

Цена - это ну совсем не dimension. Это стопроцентный и однозначный fact.
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121225
artel.dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer
shantiom
Вообще вот что я нашел на эту тему, может кому пригодится:
Для сохранения такого рода данных используют Slowly_changing_dimension

Цена - это ну совсем не dimension. Это стопроцентный и однозначный fact.


Продажа товара, транзакция, и стоимость транзакции - это fact.

Цена товара на конкретный день - это dimension.
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121227
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artel.dev
Цена товара на конкретный день - это dimension.
.
Если бы это была "просто цена", то было бы да, но приписка "на конкретный день" уже сама по себе указывает что это fact.
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121262
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artel.dev
Продажа товара, транзакция, и стоимость транзакции - это fact.

Да.

artel.dev
Цена товара на конкретный день - это dimension.

Нет. Это факт, причём не связанный с фактом продажи товара.

Если бы цена товара была dimension - значит, хотя бы теоретически могли бы существовать два факта (продажи товара), отличающиеся только значением этого dimension.

Ты прав в том, что есть ряд сущностей, которые сами по себе являются фактом, но при этом могут выступать как измерение для другого факта. Но это - не тот случай.
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121268
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Если бы цена товара была dimension - значит, хотя бы теоретически могли бы существовать два факта (продажи товара), отличающиеся только значением этого dimension.

это происходило, происходит и будет всегда происходить причем даже не теоретически а практически:
- текущая цена в прайсе на день 1000 р
- одному продали без скидки за 1000 р
- другому продали со скидкой 10 % за 900 р
- третьему ............................20% за 800 р

А это всё не просто был один и тот же товар, это вообще один и тот же батон колбасы, половина которого до сих пор лежит на прилавке и его сегодня еще купят 5-10 покупателей не известно по какой цене...
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121269
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
это происходило, происходит и будет всегда происходить не теоретически а практически:
- текущая цена в прайсе на день 1000 р
- одному продали без скидки за 1000 р
- другому продали со скидкой 10 % за 900 р
- третьему ............................20% за 800 р

Применённые скидки, категории клиентов итп. - это разные dimension-ы. И это как раз теория. Я о случае, когда один товар, одна категория клиентов, одни скидки, одна секунда - а цена разная, причём и та, и другая - названы как возможная (разные элементы dimension-а).

На практике происходит другое. Текущая цена в прайсе (для этой категории покупателей, с этими скидками итп.) 1000, а продали за 990. Почему? А потому, что ценник не успели поменять, например. Или ещё по уйме причин. У меня на текущем месте работы вообще был замечательный случай. Два магазина, ну там допустим Adidas и Nike. И вот, покупатели зашли в первый, и там пока они расплачивались на кассе, ребятёнок взял поиграться маленький резиновый мячик. И они ушли. Зашли во второй, и там на кассе этот мячик заметили и пробили. А поскольку у магазинов общий владелец - мячик взял и пробился. Информация об этом ушла в общий учёт, и он маленько встал на уши. Можете помедитировать над вопросом, по какой цене он при этом пробился - из первого магазина или из второго.

И вот поэтому цена - это не dimension. Это просто атрибут транзакции: товар продан по такой-то цене. За конкретную единицу получено столько-то денег. Это реальность, факт нашей жизни. Который может попадать в некий факт из "цен", а может и не попадать.
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121279
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор пишет - собираю для анализа.
И нужна история изменения цен.

Наверное копеечная точность автору не будет нужна.
А будут нужны какие-то тренды. Типа - растет цена на масло за период в среднем, или падает.
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121282
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

то, что анализируется - это тем более fact. Dimension - это разрез, в котором может производиться анализ.
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121284
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нам не стоит в топике обсуждать фактическую цену продажи товара.
Это оффтоп и запутывает автора. Автор - парсит сайты и там будут
только прайсы без фактов продаж.
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121309
Александр Бердышев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, вы что, угараете что ли?)
Есть же стандартный подход: в таблице Price вместо поля date вводим BeginDate и EndDate и храним периоды действия цен.
Если цена не менялась год - вместо 365 записей будем хранить 2.
Я на собесах эту задачу на мидла задаю...
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121321
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Автор - парсит сайты и там будут
только прайсы без фактов продаж.

Еще раз. Там будут прайсы товара на определенную дату . А прайс товара на определенную дату это уже fact, для которого dimensions это, например, "дата прайса", "продавец", "город продавца", "товар", "категория товара" и т.п.
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121323
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Бердышев
Есть же стандартный подход

Можно ссылку на этот "стандарт"?
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121382
Александр Бердышев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
mayton
Автор - парсит сайты и там будут
только прайсы без фактов продаж.

Еще раз. Там будут прайсы товара на определенную дату . А прайс товара на определенную дату это уже fact, для которого dimensions это, например, "дата прайса", "продавец", "город продавца", "товар", "категория товара" и т.п.

У нас цель поспорить, где таблица фактов, а где измерений?
Постановка задачи - нужна бд для аналитики цен по товарам.

ссылка на товар / цена / начало действия этой цены/ дата окончания действия этой цены.
Так, как я написал - в данном случае хранить оптимальнее всего.
1. Займёт меньше места.
2. Быстрее будет работать - т.к. данные меньше весят -> меньший объём нужно читать с диска и обрабатывать
3. При такой структуре таблицы ещё и запросы удобно писать.

Правда нужно будет аккуратнее подходить к индексам - если запросы будут с аналитикой за период.
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121384
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shantiom

СУБД - Postgresql

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

Oracle - Temporal Validity Support
https://docs.oracle.com/database/121/ADFNS/adfns_design.htm#ADFNS967

MSSQL - Temporal Tables
https://docs.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables?view=sql-server-ver15
...
Рейтинг: 0 / 0
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
    #40121391
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕсть специальные структуры данных для темпоральных сведений в таблицах

Но в данном случае они не подходят, поскольку считают периодом срок от DML до
DML и им невозможно указать требуемые значения вручную.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сохранение в БД истории данных изменения цены на товары в интернет магазине.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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