powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура БД для хранения строк с переменным кол-вом полей
25 сообщений из 71, страница 1 из 3
Структура БД для хранения строк с переменным кол-вом полей
    #33412485
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имею:
1. Ассортимент товаров на данный момент 5 000 000 в ближайшем неопределенном будущем максимум 15 000 000 позиций.
2. Все позиции можно разделить на товарные линии, которые имеют нормированное кол-во свойств. Кол-во свойств каждой товарной линии конечно (3-10), кол-во товарных линий порядка 500-700.
4. Свойства имеют числовое/текстовове значение или ограниченное кол-во вариантов.
5. Поиск должен производится по любому из свойств или по совокупности свойств.
6. На данный момент свойства товарных линий нормированы частично.
7. Кол-во пользователей у системы на данный момент от 100-200 в минуту. Но будет расти - проект будет выкладываться в сеть.

Требуют:
1. Осуществлять поиск по характеристикам.
2. Выдавать эти характеристики при поиске позиции по ключу.
3. Описывать характеристики товарных линий и добавлять характеристики в БД. (Когда-нить это описание закончится и надобность в пункте отпадет.)

На данный момент характеристики хранятся в одной таблице, которая выглядит как:
1. ID позиции.
2. ID характеристики.
3. Значение характеристики.
Данная структура не предусматривала поиск по характеристикам товара (характеристики вообще не были нормированы), а так же не рассчитывалась на работу с данными больше 1-2 млн записей.

В голове два варианта:
1. Сделать одну таблицу:
ID товара
Характеристика1
Характеристика...
Характеристика10
В в полях характеристик хранятся значения или ID варианта значения характеристики. Так же принимается положение о том, какие поля таблицы каким характеристикам соотвествуют, и потом при поиске указав ID товарной линии и связав по нему ID товара осуществить поиск по характеристикам.
Минусы - много пустых полей, нужно согласовать типы данных разных товарных групп с типами данных столбцов
Плюсы - относительно небольшое кол-во строк.

2. Сделать для каждой товарной линии свою таблицу:
Минусы - нереляционно???, множество таблиц.
Плюсы - нет пустых полей, небольшое кол-во строк.

В силу отсутствия качественных знаний и опыта по проектированию БД не могу решить описанную вышу проблему и определиться с вариантом.
Прошу подсказать/ткнуть носом/RTFM:
1. Дополнительные, неозвученные варианты решения?
2. В чем протупил с теми идеями, что озвучил?
3. Если идеи имеют право на существование, то подскажите, пожалуйста, возможные грабли в реализации?

----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33412535
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Ассортимент товаров на данный момент 5 000 000 в ближайшем
> неопределенном будущем максимум 15 000 000 позиций
...
> Кол-во пользователей у системы на данный момент от 100-200 в минуту.

ОС? СУБД? Сервер приложений? Аппаратная часть? Архитектура приложения?

> не рассчитывалась на работу с данными больше 1-2 млн записей.

Как была сделана такая оценка?
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33412574
awhiler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4m@t!cСделать для каждой товарной линии свою таблиц
Это наиболее приемлимый вариант, при такой ожидаемой нагрузке. Но только если вы сделаете нормальный движок по ведению изменений в структурах этих таблиц. Иначе кошмар при поддержке обеспчен.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33412878
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять пошло.Модель Тенцера: прослушивание №100.Почему никто не пользует поиск...
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33412904
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Опять пошло.Модель Тенцера: прослушивание №100.Почему никто не пользует поиск...
Я с превеликим удовольствием пойду в Google, но я не знаю ключевых слов, по которым искать. Буду признателен за "волшебные" слова.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33412937
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
awhiler 4m@t!cСделать для каждой товарной линии свою таблиц
Это наиболее приемлимый вариант, при такой ожидаемой нагрузке. Но только если вы сделаете нормальный движок по ведению изменений в структурах этих таблиц. Иначе кошмар при поддержке обеспчен.

Зачем опускаться на уровень изменений в структуре таблиц?

Сделать таблицу товаров, таблицу товарных линий, таблицу атрибутов товарных линий (будет использоваться как справочник при динамическом построении интерфейса карточки товара), таблицу значений атрибутов товаров. Чего сложного-то.

Потом провести тесты СУБД с реальными и завышенными объемами данных. При такой нагрузке без тестов что-то разрабатывать - суицид, однако.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33412940
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищите на этом форуме по Тенцер - вполне представительное обсуждение.

В Вашем случае при не более чем 10 параметрах струкутура
ИД
10 строковых полей
10 числовых полей,
10 дат
...
вполне пригодна.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33412991
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DogenСделать таблицу товаров, таблицу товарных линий, таблицу атрибутов товарных линий (будет использоваться как справочник при динамическом построении интерфейса карточки товара), таблицу значений атрибутов товаров. Чего сложного-то.

А значения характеристик, привязанных к товару как хранить?????

>Ищите на этом форуме по Тенцер - вполне представительное обсуждение.
Уже ищу, спасибо

----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33413151
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вот выйдет DB2 9 версия с гибридным ядром. Вот и храните все ваши товары в XML.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33413200
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!c Dogenтаблицу значений атрибутов товаров

А значения характеристик, привязанных к товару как хранить?????

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

Мне, честно говоря, неохота рисовать структуру, т.к. даже в рамках описанного подхода возможны варианты.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33413210
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanВот вот выйдет DB2 9 версия с гибридным ядром. Вот и храните все ваши товары в XML.
И в чем будет великий смысл? Как потом искать товары по характеристикам?..
Мы такую базу документов построили. Думали-думали, не положить ли часть свойств документа в XML, и в итоге не надумали.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33413257
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Вот и храните все ваши товары в XML.
Задача "хранить данные" - вторична, потому что первичная задача - цель. А цель - осуществлять максимально быстрый поиск... XML для такого большого кол-ва данных не подходит...

>Получить набор этих значений....
Это я понял.

>В таблице значений атрибутов товаров.
я что-то не понимаю, но значения атрибутов товара могут быть чилса, символы, ID значений. Далее, если все в одну таблицу впихнуть, то получится таблица которая измеряется десятками миллионов...

>Мне, честно говоря, неохота рисовать структуру...
Не надо всю струкутур - только таблицу привязки атрибутов товара к конкретному товару.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33413325
Programmer_Ortodox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В правильном направлении мыслите, задача действительно имеет решение. Кроме элегантности, у данного решения нет других недостатков
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33413348
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Programmer_OrtodoxВ правильном направлении мыслите, задача действительно имеет решение. Кроме элегантности, у данного решения нет других недостатков

Какое из решений???
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33413359
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!c>
>В таблице значений атрибутов товаров.
я что-то не понимаю, но значения атрибутов товара могут быть чилса, символы, ID значений. Далее, если все в одну таблицу впихнуть, то получится таблица которая измеряется десятками миллионов...
1. Ну и что? Индекс по коду товара будет небольшим, выборки из таблицы должны делаться довольно быстро.
2. Мы у себя сделали в таблице атрибутов одно поле для integer, одно для даты, одно для double, одну текстовую строку... работает достаточно быстро. Можно поступить более последовательно, сделать одну таблицу для целых, другую для вещественных, третью для дат, четвертую - для блобов... в общем, по количеству нужных Вам типов данных. И в таблице атрибутов хранить тип значения атрибута и ключ таблицы значений (1:1 получается?).

4m@t!c
Не надо всю струкутур - только таблицу привязки атрибутов товара к конкретному товару.
1:n товары к атрибутам
Значения либо храним в таблице атрибутов, либо в нескольких привязанных как 1:1 таблицах (см. описание выше) - для уменьшения занимаемого пространства.

Имхо если для Вас очень критичны объемы таблиц, то не надо заморачиваться с хранением объектов в реляционных базах данных, а запроектировать минимально необходимые структуры.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33413374
Programmer_Ortodox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!c Programmer_OrtodoxВ правильном направлении мыслите, задача действительно имеет решение. Кроме элегантности, у данного решения нет других недостатков

Какое из решений???
Да хотя бы мое собственное. Баловался я как то этим вопросом тоже. Почему другим можно, а мне нельзя!
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33413509
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Имхо если для Вас очень критичны объемы таблиц
Не критичны. бОльший размер таблицы => бОльшая нагрузка на БД => бОльшее время выполнения запроса. Ясное дело, что это понятие относительное...

>Можно поступить более последовательно, сделать одну таблицу для целых....
Насколько глупо и некорректно звучит вариант создания таблицы атрибутов товаров для каждой товарной линии?

Модель Тенцера не подходит - она гибкая и относительно медленная по сравнению с тем же ROT. Роюсь дальше...
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33413564
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Роюсь дальше

Вместо того, чтобы х@$%ей заниматься, переходите на нормальную архитектуру, СУБД и платформу. Не будет вопросов по поводу детских объемов данных.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33413647
UrryMcA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мне как-то вот не удалось телепатически определить ни бюджет разработки, ни операционку, ни саму БД автора топика.

Доктор, скажите! Это навсегда??
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33413741
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!cбОльший размер таблицы => бОльшая нагрузка на БД => бОльшее время выполнения запроса.
я Вас умоляю

4m@t!c>Можно поступить более последовательно, сделать одну таблицу для целых....
Насколько глупо и некорректно звучит вариант создания таблицы атрибутов товаров для каждой товарной линии?
Весьма глупо, потому что нехорошо ссылаться на таблицы по их названию. А Вам в таком варианте 100% придется писать в некоем поле имя таблицы, в которой значение искать. Не нормально это.

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

Доктор, скажите! Это навсегда??
а какой разниц
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33413930
eav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
eav
Гость
я не понял, простая задачка
Товары - таблица фиксированной стр-ры, содержит код Линии, индекс по коду
Линии
15*10**6 записей
Линии - две таблицы по принципу EAV - содержат свойства линий
число записей ~ 10000 - мизер
Поиск сначала в Линии потом в Товаре
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33414004
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eavя не понял
Вы упрощаете.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33414313
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>переходите на нормальную архитектуру, СУБД и платформу.
я не знаю архитектуру, которая называется "нормальная".
я не знаю СУБД, которая называется "нормальная".
я не знаю платформы, которая называется "нормальная".
Есть задача, нужна модель ее решения.... Эту модель и спрашиваю. Ответ в стиле "нормальная СУБД" никому ни о чем не скажет. Для кого-то и Access - самая совершенная СУБД.

>Не будет вопросов по поводу детских объемов данных.
Конструктивно можно ответить? Например:"Кол-во строк с которым вы работаете не считается большим и вам не стоит переживать по поводу скорости обработки запросов, при условии, что вы будете пользоватся такой-то СУБД. Имею опыт работы с такой СУБД и с кол-вом записей, которые больше ваших раз в 100." Простите, что поучаю, но от ваших постов толка - 0.

>А мне как-то вот не удалось телепатически определить
>ни бюджет разработки, ни операционку, ни саму БД автора топика.
Зачем вам это знать?Или принципы реляционности у каждой СУБД глобально различны? А ОСь-то вам чем не угадила????

>Весьма глупо, потому что нехорошо ссылаться на таблицы по их названию.
>А Вам в таком варианте 100% придется писать в некоем поле имя таблицы,
> в которой значение искать. Не нормально это.
Но такая структура позволяет осуществлять поиск как по всем характеристикам, так и по части характеристик.

>2. Мы у себя сделали в таблице атрибутов одно поле для integer, одно для
>даты, одно для double, одну текстовую строку... работает достаточно быстро.
>Можно поступить более последовательно, сделать одну таблицу для целых,
>другую для вещественных, третью для дат, четвертую - для блобов... в
>общем, по количеству нужных Вам типов данных. И в таблице атрибутов
>хранить тип значения атрибута и ключ таблицы значений (1:1 получается?).
В такой ситуации я должен знать, из каких полей я должен выбирать характеристики для данной товарной линии, так же должен знать кол-во этих характеристик, что бы составить правильное количество псевдонимов таблицы. или я что-то не понимаю? Буду признателен, если уточните.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33414371
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> я не знаю
> я не знаю
> я не знаю

Вы хвастаетесь?

> Есть задача, нужна модель ее решения

Это не постановка задачи. Реализацию, при которой нужно менять структуру данных при незначительном увеличении объема данных - в ведро.

> Ответ в стиле "нормальная СУБД" никому ни о чем не скажет.

Вы заметили дополнительные вопросы?

> Конструктивно можно ответить?

Конечно, можно. Например, так: определите узкие места Вашего приложения. Обновите соответствующим образом аппаратную часть. Постройте для ваших характеристик соответствующие индексы; храните их в разных tablespace.
...
Рейтинг: 0 / 0
25 сообщений из 71, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура БД для хранения строк с переменным кол-вом полей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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