|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
Всем доброго дня! Как правильно организовать хранение в БД истории изменения цен на товары в интернет магазине. То есть, собираю данные с сайта интернет-магазина, сбор 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 В правильном ли направлении я двигаюсь ? Это мой первый опыт работы с БД и СУБД) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 14:07 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
shantiom, В Price id не имеет значения можно убирать смело. Brand (id, brand_name) приводим в такой вид. Бренд закидываем в Product. Конечно если бренд это производитель, а не сферический конь в ваккууме. Ну и это все актуально если парсим сторонние сайты, а не свою поделку. Правда уже есть куча сервисов в которых видна динамика цен. ) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 21:34 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
Проще у владельца сайта попросить непосредственный доступ к БД. Если даст - ничего парсить не придётся и с некоторой вероятностью там уже будет история цен. Если не даст - этот топик перейдёт в разряд нарушения авторских прав и прочего оффтопика. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 23:06 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
Злой Бобр В Price id не имеет значения можно убирать смело. Я бы не стал. Тогда надо будет использовать мало того, что естественный ключ, так еще и композитный. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 00:35 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Если не даст - этот топик перейдёт в разряд нарушения авторских прав Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 00:36 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
fkthatПочему? Во-первых, это может быть явно запрещено в Terms of Service. Во-вторых, если он собранные данные перерабатывает для себя - это fair use, но если он их публикует и тем более за деньги, да ещё и выдавая за своё... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 01:40 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov fkthatПочему? Во-первых, это может быть явно запрещено в Terms of Service. Во-вторых, если он собранные данные перерабатывает для себя - это fair use, но если он их публикует и тем более за деньги, да ещё и выдавая за своё... Тогда "Яндекс Маркет" и им подобные это вообще преступная банда хуже нацистов :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 01:58 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Проще у владельца сайта попросить непосредственный доступ к БД. Если даст - ничего парсить не придётся и с некоторой вероятностью там уже будет история цен. Если не даст - этот топик перейдёт в разряд нарушения авторских прав и прочего оффтопика. Спасибо конечно за совет по АПИ, но это все вообще не относится к вопросу. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 22:47 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
fkthat Dimitry Sibiryakov пропущено... Во-первых, это может быть явно запрещено в Terms of Service. Во-вторых, если он собранные данные перерабатывает для себя - это fair use, но если он их публикует и тем более за деньги, да ещё и выдавая за своё... Тогда "Яндекс Маркет" и им подобные это вообще преступная банда хуже нацистов :)) Судя по тому, что на "Яндекс Маркет" есть данные далеко не по всем магазинам (в том числе и вполне известным), можно предположить, что они как раз используют данные только тех, с кем у них есть соответствующие соглашения, и, возможно, плюс тех, кто в принципе не ограничивает использование своей информации (в том-же Terms of Service) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 22:49 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
Злой Бобр 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 22:53 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
shantiom Вообще вот что я нашел на эту тему, может кому пригодится: Для сохранения такого рода данных используют Slowly_changing_dimension Цена - это ну совсем не dimension. Это стопроцентный и однозначный fact. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 07:09 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
softwarer shantiom Вообще вот что я нашел на эту тему, может кому пригодится: Для сохранения такого рода данных используют Slowly_changing_dimension Цена - это ну совсем не dimension. Это стопроцентный и однозначный fact. Продажа товара, транзакция, и стоимость транзакции - это fact. Цена товара на конкретный день - это dimension. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 14:37 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
artel.dev Цена товара на конкретный день - это dimension. Если бы это была "просто цена", то было бы да, но приписка "на конкретный день" уже сама по себе указывает что это fact. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 15:11 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
artel.dev Продажа товара, транзакция, и стоимость транзакции - это fact. Да. artel.dev Цена товара на конкретный день - это dimension. Нет. Это факт, причём не связанный с фактом продажи товара. Если бы цена товара была dimension - значит, хотя бы теоретически могли бы существовать два факта (продажи товара), отличающиеся только значением этого dimension. Ты прав в том, что есть ряд сущностей, которые сами по себе являются фактом, но при этом могут выступать как измерение для другого факта. Но это - не тот случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 19:48 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
softwarer Если бы цена товара была dimension - значит, хотя бы теоретически могли бы существовать два факта (продажи товара), отличающиеся только значением этого dimension. это происходило, происходит и будет всегда происходить причем даже не теоретически а практически: - текущая цена в прайсе на день 1000 р - одному продали без скидки за 1000 р - другому продали со скидкой 10 % за 900 р - третьему ............................20% за 800 р А это всё не просто был один и тот же товар, это вообще один и тот же батон колбасы, половина которого до сих пор лежит на прилавке и его сегодня еще купят 5-10 покупателей не известно по какой цене... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 20:48 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
vmag это происходило, происходит и будет всегда происходить не теоретически а практически: - текущая цена в прайсе на день 1000 р - одному продали без скидки за 1000 р - другому продали со скидкой 10 % за 900 р - третьему ............................20% за 800 р Применённые скидки, категории клиентов итп. - это разные dimension-ы. И это как раз теория. Я о случае, когда один товар, одна категория клиентов, одни скидки, одна секунда - а цена разная, причём и та, и другая - названы как возможная (разные элементы dimension-а). На практике происходит другое. Текущая цена в прайсе (для этой категории покупателей, с этими скидками итп.) 1000, а продали за 990. Почему? А потому, что ценник не успели поменять, например. Или ещё по уйме причин. У меня на текущем месте работы вообще был замечательный случай. Два магазина, ну там допустим Adidas и Nike. И вот, покупатели зашли в первый, и там пока они расплачивались на кассе, ребятёнок взял поиграться маленький резиновый мячик. И они ушли. Зашли во второй, и там на кассе этот мячик заметили и пробили. А поскольку у магазинов общий владелец - мячик взял и пробился. Информация об этом ушла в общий учёт, и он маленько встал на уши. Можете помедитировать над вопросом, по какой цене он при этом пробился - из первого магазина или из второго. И вот поэтому цена - это не dimension. Это просто атрибут транзакции: товар продан по такой-то цене. За конкретную единицу получено столько-то денег. Это реальность, факт нашей жизни. Который может попадать в некий факт из "цен", а может и не попадать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 21:02 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
Автор пишет - собираю для анализа. И нужна история изменения цен. Наверное копеечная точность автору не будет нужна. А будут нужны какие-то тренды. Типа - растет цена на масло за период в среднем, или падает. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 22:41 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
mayton, то, что анализируется - это тем более fact. Dimension - это разрез, в котором может производиться анализ. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 22:55 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
Нам не стоит в топике обсуждать фактическую цену продажи товара. Это оффтоп и запутывает автора. Автор - парсит сайты и там будут только прайсы без фактов продаж. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2021, 23:07 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
Коллеги, вы что, угараете что ли?) Есть же стандартный подход: в таблице Price вместо поля date вводим BeginDate и EndDate и храним периоды действия цен. Если цена не менялась год - вместо 365 записей будем хранить 2. Я на собесах эту задачу на мидла задаю... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2021, 10:25 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
mayton Автор - парсит сайты и там будут только прайсы без фактов продаж. Еще раз. Там будут прайсы товара на определенную дату . А прайс товара на определенную дату это уже fact, для которого dimensions это, например, "дата прайса", "продавец", "город продавца", "товар", "категория товара" и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2021, 11:25 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
Александр Бердышев Есть же стандартный подход Можно ссылку на этот "стандарт"? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2021, 11:26 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
fkthat mayton Автор - парсит сайты и там будут только прайсы без фактов продаж. Еще раз. Там будут прайсы товара на определенную дату . А прайс товара на определенную дату это уже fact, для которого dimensions это, например, "дата прайса", "продавец", "город продавца", "товар", "категория товара" и т.п. У нас цель поспорить, где таблица фактов, а где измерений? Постановка задачи - нужна бд для аналитики цен по товарам. ссылка на товар / цена / начало действия этой цены/ дата окончания действия этой цены. Так, как я написал - в данном случае хранить оптимальнее всего. 1. Займёт меньше места. 2. Быстрее будет работать - т.к. данные меньше весят -> меньший объём нужно читать с диска и обрабатывать 3. При такой структуре таблицы ещё и запросы удобно писать. Правда нужно будет аккуратнее подходить к индексам - если запросы будут с аналитикой за период. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2021, 16:16 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2021, 16:36 |
|
Сохранение в БД истории данных изменения цены на товары в интернет магазине.
|
|||
---|---|---|---|
#18+
maytonЕсть специальные структуры данных для темпоральных сведений в таблицах Но в данном случае они не подходят, поскольку считают периодом срок от DML до DML и им невозможно указать требуемые значения вручную. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2021, 16:57 |
|
|
start [/forum/topic.php?fid=32&msg=40119768&tid=1539765]: |
0ms |
get settings: |
21ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
722ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 860ms |
0 / 0 |