Гость
Map
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Сохранение в БД истории данных изменения цены на товары в интернет магазине. / 25 сообщений из 57, страница 1 из 3
12.12.2021, 14:07
    #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
12.12.2021, 21:34
    #40119505
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
shantiom,

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

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

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

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

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

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

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


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

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

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


Судя по тому, что на "Яндекс Маркет" есть данные далеко не по всем магазинам (в том числе и вполне известным), можно предположить, что они как раз используют данные только тех, с кем у них есть соответствующие соглашения, и, возможно, плюс тех, кто в принципе не ограничивает использование своей информации (в том-же Terms of Service)
...
Рейтинг: 0 / 0
13.12.2021, 22:53
    #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
14.12.2021, 07:09
    #40119803
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
shantiom
Вообще вот что я нашел на эту тему, может кому пригодится:
Для сохранения такого рода данных используют Slowly_changing_dimension

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

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


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

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

Да.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Правда нужно будет аккуратнее подходить к индексам - если запросы будут с аналитикой за период.
...
Рейтинг: 0 / 0
19.12.2021, 16:36
    #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
19.12.2021, 16:57
    #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]