powered by simpleCommunicator - 2.0.47     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как правильно скомпоновать вместе товары и категории выгружаемые из 5 различных xml файлов
10 сообщений из 10, страница 1 из 1
Как правильно скомпоновать вместе товары и категории выгружаемые из 5 различных xml файлов
    #39897375
guest_XY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Мне была поставлена такая задача: загрузка товаров из 5 xml файлов. Выгрузку сделал и для товаров с атрибутами и для категорий.
Пока создал отдельные таблицы для каждого источника ( 5 таблиц товаров, 5 таблиц категорий ).
Дальше не знаю как поступить, асортимент выгруженных товаров практически идентичный и категории пресекаются, а их id, parent_id в каждой таблице разный.
Вроде логичным кажется совместить товары в одну таблицу, но надо придумать что делать с категориями. Пока создал такую таблицу:
CREATE TABLE `category` (
`id` int(11) UNSIGNED NOT NULL,
`parent_id` int(11) UNSIGNED DEFAULT NULL,
`name` varchar(64) DEFAULT NULL,
`garda_id` int(11) DEFAULT NULL,
`glem_id` int(11) DEFAULT NULL,
`issaplus_id` int(11) DEFAULT NULL,
`karree_id` int(11) DEFAULT NULL,
`olla_id` int(11) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Так сказать таблицу "соответствий": определенному id категории соответствует определенный id из выгруженного файла (для производителя "Гарда" он помещается в ячейку garda_id, для "Карри" - karree_id и т.д.

А как дальше поступить не знаю. На ум приходят такие варианты:
1. Привязывать нужные id при преобразовании xml товаров (Но категорий штук 60, файлов выгружается от 1000 до 20000 - придется каждый гонять черз цикл - искать соответствия - время выгрузки думаю заметно выростет, - хотя это не особо критично.
2. Средствами MySQL перегонять потом товары в общую таблицу где на основе таблицы соответствий им будет назначена нужная категория.
3. написать скрипт который будет перегонять товары в общую таблицу тоже обращаясь к таблице соответствий.
4. Писать сложные SELECT запросы, в которых будет обращениев таблицу соответствий и исходя из нее будет отдельная выборка для каждого производителя.

Может вопрос и идиотский, задач с выгрузкой из разных источников и совмещением из разных каталогов дела не имел.
Подскажите наиболее правильное решение такой ситуации.
...
Рейтинг: 0 / 0
Как правильно скомпоновать вместе товары и категории выгружаемые из 5 различных xml файлов
    #39897390
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диапазоны ID в разных источниках могут пересекаться (и соответственно значения ID - совпадать)?
...
Рейтинг: 0 / 0
Как правильно скомпоновать вместе товары и категории выгружаемые из 5 различных xml файлов
    #39897391
guest_XY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да. мало того что везде разные `id` g при одинаковом `name` , так еще и пересекаются. Поэтому когда в одну таблицу пробовал сводить, то уникальный индекс был из двух столбцов` id` и `source` например glem.
Вот думаю можно написать скрипт который перелопатит все таблицы и соберет в одну (яимею ввиду товары). А то при загрузке xml не хочу дополнительные циклы писать.
Просто может есть какой-то другой способ для MariaDB/MySQL .На форуме упоминалось наследование, Вроде как для похожей в принципе ситуации - но я посмотрел - это PostgreSQL. Что мне не очень подходит. Куда дальше копать пока не знаю.
...
Рейтинг: 0 / 0
Как правильно скомпоновать вместе товары и категории выгружаемые из 5 различных xml файлов
    #39897398
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Вы хотите слить всё в одну таблицу, то Вам в любом случае придётся формировать собственный суррогат в качестве ID.
Надо ли Вам будет мапить старые ID на новые - зависит от ряда факторов.
...
Рейтинг: 0 / 0
Как правильно скомпоновать вместе товары и категории выгружаемые из 5 различных xml файлов
    #39897405
guest_XY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, думал узнать как обычно люди делают в таких ситуациях. А то "будет свой велосипед с квадратными колесами". Потому как я вижу такой вариант - достал товар из таблицы производителя №1, посмотрел какому моему id каталога соответствует его id категории, заменил добавил в общую таблицу, першел к следующему товару ... потом тоже для производителя №2, 3 и т.д. Думал, есть какое-то более удобное решение.
...
Рейтинг: 0 / 0
Как правильно скомпоновать вместе товары и категории выгружаемые из 5 различных xml файлов
    #39897426
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_XY
Да, думал узнать как обычно люди делают в таких ситуациях. .

Ситуация стандартная.
"Обычно" не бывает. В каждом случае есть нюансы, имеющие первостепенное влияние на принятие решения.
...
Рейтинг: 0 / 0
Как правильно скомпоновать вместе товары и категории выгружаемые из 5 различных xml файлов
    #39897539
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_XY

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

Технически это делается так. В базе создается отдельная схема. Обычно STAGING. И туда сливаются сырые данные
со всех-всех источников. Там они - чистятся. Обогащаются от справочников. Или наоборот нормализуются.
И когда достигнуты какие-то критерии (например count(*) соответствует ожиданиям плюс минус проценты)
то эти данные переливаются в основную схему.

По поводу того
...не знаю как поступить, асортимент выгруженных товаров практически идентичный и категории пресекаются, а их id, parent_id в каждой таблице разный.
Вроде логичным кажется совместить товары в одну таблицу, но надо придумать что делать с категориями.
ты как программист не в состоянии принимать бизнесовые решения. Бизнес аналитик или владелец
этих данных тебе должен рассказать что их них чего обозначает.
...
Рейтинг: 0 / 0
Как правильно скомпоновать вместе товары и категории выгружаемые из 5 различных xml файлов
    #39897553
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_XY
Мне была поставлена такая задача: загрузка товаров из 5 xml файлов. Выгрузку сделал и для товаров с атрибутами и для категорий.
Пока создал отдельные таблицы для каждого источника ( 5 таблиц товаров, 5 таблиц категорий ).
Дальше не знаю как поступить, асортимент выгруженных товаров практически идентичный и категории пресекаются, а их id, parent_id в каждой таблице разный.

ETL же
стандартная ситуация - куча поставщиков, и у каждого свой прайс
сидишь и ручками каждый ID сопоставляешь в таблице соответствий.
можно загуглить
...
Рейтинг: 0 / 0
Как правильно скомпоновать вместе товары и категории выгружаемые из 5 различных xml файлов
    #39897790
guest_XY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
guest_XY

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

Технически это делается так. В базе создается отдельная схема. Обычно STAGING. И туда сливаются сырые данные
со всех-всех источников. Там они - чистятся. Обогащаются от справочников. Или наоборот нормализуются.
И когда достигнуты какие-то критерии (например count(*) соответствует ожиданиям плюс минус проценты)
то эти данные переливаются в основную схему.

Спасибо что объяснили общую схему. Понимаю что не зная конкретной ситуации, вы лишь обозначили принцип, но похоже именно это мне и было нужно чтобы дальше гуглить, читать и думать.
По поводу того
...не знаю как поступить, асортимент выгруженных товаров практически идентичный и категории пресекаются, а их id, parent_id в каждой таблице разный.
Вроде логичным кажется совместить товары в одну таблицу, но надо придумать что делать с категориями.
ты как программист не в состоянии принимать бизнесовые решения. Бизнес аналитик или владелец
этих данных тебе должен рассказать что их них чего обозначает.

По поводу решений,.. Ну нет у нас бизнес аналитика. Это заказ, отчати учебный (закзчик в курсе, что он такой) поэтому плата там более чем умеренная. Особенность магазина это конструктор обуви (уже сделан мной, раньше был к Drupal7 прикручен) теперь и одежды + фасетный поиск (с ним думаю еще придется повозится, вероятно что-то вроде Sphinx буду использовать, ). Реализуется на Yii2 поскольку писать под Drupal - свои решения через его API как по мне пытка, особенно сравнивая с Yii. Вот и решил взять Yii, тем более магазины на нем есть и какие-то типовые решения, можно там посмотреть. Вот так и решили: заказчику шустрый магазин к концу зимы, мне практический опыт. Так что думаю на этот форум еще не раз придется заглядывать, когда буду фильтры настраивать).
...
Рейтинг: 0 / 0
Как правильно скомпоновать вместе товары и категории выгружаемые из 5 различных xml файлов
    #39897800
guest_XY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
полудух
guest_XY
Мне была поставлена такая задача: загрузка товаров из 5 xml файлов. Выгрузку сделал и для товаров с атрибутами и для категорий.
Пока создал отдельные таблицы для каждого источника ( 5 таблиц товаров, 5 таблиц категорий ).
Дальше не знаю как поступить, асортимент выгруженных товаров практически идентичный и категории пресекаются, а их id, parent_id в каждой таблице разный.

ETL же
стандартная ситуация - куча поставщиков, и у каждого свой прайс
сидишь и ручками каждый ID сопоставляешь в таблице соответствий.
можно загуглить


Понимаю что типовая, интересовало как это сделать наиболее правильно, там выше идей было 4. По ETL вот вижу статью на Хабре. За подсказку спасибо, теперь понятно с чего начинать ETL-системы.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как правильно скомпоновать вместе товары и категории выгружаемые из 5 различных xml файлов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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