powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура БД для хранения строк с переменным кол-вом полей
71 сообщений из 71, показаны все 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
Структура БД для хранения строк с переменным кол-вом полей
    #33414379
UrryMcA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to: 4m@t!c

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

Сорри - к Вам то как раз никаких претензий.

Это всего-лишь попытка поерничать над "специалистом" guest_20040621. Его ВЕСЬМА информативный ответ меня очень порадовал.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33414454
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!c
>Весьма глупо, потому что нехорошо ссылаться на таблицы по их названию.
>А Вам в таком варианте 100% придется писать в некоем поле имя таблицы,
> в которой значение искать. Не нормально это.
Но такая структура позволяет осуществлять поиск как по всем характеристикам, так и по части характеристик.
Равно как и другие обсуждавшиеся здесь структуры.

4m@t!c
>2. Мы у себя сделали в таблице атрибутов одно поле для integer, одно для
>даты, одно для double, одну текстовую строку... работает достаточно быстро.
>Можно поступить более последовательно, сделать одну таблицу для целых,
>другую для вещественных, третью для дат, четвертую - для блобов... в
>общем, по количеству нужных Вам типов данных. И в таблице атрибутов
>хранить тип значения атрибута и ключ таблицы значений (1:1 получается?).
В такой ситуации я должен знать, из каких полей я должен выбирать характеристики для данной товарной линии, так же должен знать кол-во этих характеристик, что бы составить правильное количество псевдонимов таблицы. или я что-то не понимаю? Буду признателен, если уточните.
У товарной линии есть перечень характеристик, но у них нет значений. Значения есть у характеристик товаров.

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

>Это не постановка задачи.
Постановка задачи была в первом моем посте.

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

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

>храните их в разных tablespace.
Т.е. для каждого товарной группы своя таблица?

>Сорри - к Вам то как раз никаких претензий.
И вам - извините.

>У товарной линии есть перечень характеристик, но у них нет значений.
>Значения есть у характеристик товаров.
Верно, согласен.

>Кстати, Вы ланируете давать возможность один тип характеристик
>использовать в разных товарных линиях?..
>Это еще более усложнит структуру :)
Я это понимаю - все характеристики уникальны.

>Правильное количество псевдонимов таблицы - это здесь зачем?
Пример:
Таблица характеристик товара
ID товара
ID характеристики
поле1 число
поле2 текст
поле3 вещественное
полеn.....

Я должен создать запрос на поиск товара по харктеристикам:
Т.е. в условии я должен проверять перечень полей, в которых хранятся значения характеристик.
Как должен выглядеть запрос??? Какое поле проверять с искомым значением? Если все характеристики хранятся в поле1, то я должен создать псевдонимы, что бы вытянуть все характеристки... Другуим словами, для каждой товарной линии я должен построить соотвествующие конструкции... или я не прав???
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33414558
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!c
>Кстати, Вы ланируете давать возможность один тип характеристик
>использовать в разных товарных линиях?..
>Это еще более усложнит структуру :)
Я это понимаю - все характеристики уникальны.
На практике для документов это не важно, а для товаров важно. Например, сорт для каждой товарной линии - сущность одна, не надо делать этот атрибут уникальным для каждой линии.

4m@t!c
Правильное количество псевдонимов таблицы - это здесь зачем?
Пример:
Таблица характеристик товара
ID товара
ID характеристики
поле1 число
поле2 текст
поле3 вещественное
полеn.....

Ну типа это и есть пропагандируемый тупой вариант. Только это таблица значений характеристик товара. Псевдонимы - изобретете. t001, t002... И Вы забыли еще ID значения характеристики.

4m@t!cЯ должен создать запрос на поиск товара по харктеристикам:
Т.е. в условии я должен проверять перечень полей, в которых хранятся значения характеристик.
Как должен выглядеть запрос??? Какое поле проверять с искомым значением? Если все характеристики хранятся в поле1, то я должен создать псевдонимы, что бы вытянуть все характеристки... Другуим словами, для каждой товарной линии я должен построить соотвествующие конструкции... или я не прав???
Код: plaintext
1.
2.
select * from goods left join attr_values on goods.id=attr_values.id_goods 
where attr_values.id_attr=NNN and attr_values.value=XX.XXX
Я понятно излагаю?.. Выбираем товары по заданному значению такой-то характеристики.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33414592
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Нет, пытаюсь сказать вам, что в данном вопросе не имеет значение ни ОСь, ни
> СУБД, ни что-то еще.

Это ошибочная точка зрения.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33414597
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Нет, пытаюсь сказать вам, что в данном вопросе не имеет значение ни ОСь, ни
> СУБД, ни что-то еще.

Это ошибочная точка зрения.
именно

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

Код: plaintext
1.
select * from goods left join attr_values on goods.id=attr_values.id_goods 
where attr_values.id_attr=NNN and attr_values.value=XX.XXX
Откуда вы узналаи, что нужно проверять поле value ? Я правильно понимаю, что:
Код: plaintext
CREATE attr_values (id_goods (integer), value1 (integer), value2(char), value3(text))

----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33414632
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!c>Ну типа это и есть пропагандируемый тупой вариант.
Тупой???? Я описывал то, как я понял предлагаемый вами вариант.

Код: plaintext
1.
select * from goods left join attr_values on goods.id=attr_values.id_goods 
where attr_values.id_attr=NNN and attr_values.value=XX.XXX
Откуда вы узналаи, что нужно проверять поле value ? Я правильно понимаю, что:
Код: plaintext
CREATE attr_values (id_goods (integer), value1 (integer), value2(char), value3(text))

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

Моделирую ситуацию.
Товаров 5 000 000
Для всех них кол-во товарных линий 500
Каждая товарная линия характеризуется 10 параметрами. Вы осуществляете поиск по характеристикам товарной линии. у которой все поля - целые числа, т.е. вы объеденяете таблицу атрибутов с самой собой 10 раз.
Считаем кол-во строк в таблице атрибутов:
5 000 000 * 10 = 50 000 0000 - размер таблицы атрибутов товаров.
в процессе объединения манипулируем с таблицей неслабых размеров.

В случае разделения свойств манипулируем таблицей состоящей всего навсего из строк для данной товарной линии. Только таблиц конечно же не 1, а 500.


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

"пока вы смотрите свой телевизор, инопланетяне через него трахают вам мозги"
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33419746
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы хотите вести речь только о реляционных СУБД?
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33420761
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!c
Моделирую ситуацию.
Товаров 5 000 000
Для всех них кол-во товарных линий 500
Каждая товарная линия характеризуется 10 параметрами. Вы осуществляете поиск по характеристикам товарной линии. у которой все поля - целые числа, т.е. вы объеденяете таблицу атрибутов с самой собой 10 раз.
Считаем кол-во строк в таблице атрибутов:
5 000 000 * 10 = 50 000 0000 - размер таблицы атрибутов товаров.
в процессе объединения манипулируем с таблицей неслабых размеров.

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

Т.е. реально она будет раза в 2 меньше по строчкам.
И еще я что-то не совсем представляю себе справочник товаров с 5 млн. позиций... это что такое за изврат? глобальная компания которорая всем торгует? или для 2-х одинаковых карандашей разнах цветов заводится столько же позиций?

Возможно проблема скорости как раз в том, что пользователи просто что-то говорят и просто стоит провести инжиниринг предметной области?

В розничной торговле в гипермаркетов справочник товаров на 2 порядка меньше, и то скапливается за длительное время работы, причем часть товара прячат в архив или удаляют (типа удаляют).

Поиск будет волне приемлемым, причем можно пользовать индексы по значениям, если конечно нет отбора типа like '%что-то%'
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33424346
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валентин К
Почему для товара обязательно все атрибуты будут заполнены? на практике как раз наоборот, для одной группы заполнять одни атрибуты, для другой другие, а пустоты нет смысла хранить - это только увеличивает таблицу значений атрибутов.
Правильное понимание демонстрируете, товарищ

Валентин КИ еще я что-то не совсем представляю себе справочник товаров с 5 млн. позиций... это что такое за изврат? глобальная компания которорая всем торгует? или для 2-х одинаковых карандашей разнах цветов заводится столько же позиций?

Наверное, по серийникам учет :) Но в таком случае надо по-другому все строить, а тут пока что обсуждали вариант для оптовой торговли, насколько я мог понять.

А кто-нибудь знает примерное количество книг в большом книжном магазине?.. Но наверное тоже не 5 млн.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33443576
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Почему для товара обязательно все атрибуты будут заполнены?

У каждой товарной линии свои нормированные атрибуты, по которым нужно производить поиск. И тип значнения атрибута - различный.

Насчет большого кол-ва записей-товаров. Вы представляете, сколько один завод, например, по производству запчастей к технике, производит позиций товара в ассортименте???? Так я вам могу сказать - от 3 000 до 3 000 000.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33443606
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!c
Насчет большого кол-ва записей-товаров. Вы представляете, сколько один завод, например, по производству запчастей к технике, производит позиций товара в ассортименте???? Так я вам могу сказать - от 3 000 до 3 000 000.
----------------------------------------
Артисты не приехали, приехали цыгане
Это наводит на мысли о том, что Вы собираетесь систему складского и производственного учета для такого завода разработать. Я ошибаюсь?..
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33443647
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может все-таки посмотреть на поля типа XML?...
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33444996
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Это наводит на мысли о том, что Вы собираетесь систему складского и
>производственного учета для такого завода разработать. Я ошибаюсь?..
Не знаю, что вы вкладываете в понятия "складской и производственный" - это будет проект по систематизации продукции основных заводов-изготовителей.

gardenmanМожет все-таки посмотреть на поля типа XML?...
Не понимаю, о чем вы говорите, более того, считаю применение XML в данном случае неуместным. Если я не прав - прошу поправить меня примером.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33445014
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4m@t!cНе знаю, что вы вкладываете в понятия "складской и производственный" - это будет проект по систематизации продукции основных заводов-изготовителей.Не вижу проблем. Окончательный вывод о применимости предлагаемых здесь подходов можно сделать после того как кто-то сподобится нагенерить соответствующих баз в промышленном масштабе - а обсуждать структуру неблагодарное занятие при таких номенклатурах, пробовать на железе надо тоже.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33445071
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я это уже понял. Просто думал, что есть готовые решения и я буду изобретать велосипед или прикручивать костыли.
Кстати, я начинаю думать в сторону разделения характеристик по таблицам соотвествующих типов данных.
В любом случае не составит большого труда изменить структуру БД и потестировать предложенные подходы.
Еще раз спасибо за идеи.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33466319
Б.Л.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, я начинаю думать в сторону разделения характеристик по таблицам соотвествующих типов данных.

У меня была похожая ситуация, тоже куча объектов с разными наборами характеристик, которые плохо поддавались группировке. Задача была решена именно так. Не самое изящное решение, но тем не менее рабочее.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33467178
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DogenА кто-нибудь знает примерное количество книг в большом книжном магазине?.. Но наверное тоже не 5 млн.
В очень большом - до 100 000. В относительно небольших - до 15 000 - 30 000.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33562770
studentka_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поместила свой вопрос в тему "БД зап. частей", но эта тема более подходит, как мне кажется, т.к. построение таблиц делала, прочитав именно эту тему.

Посмотрите пожалуйста структуру. Обьектами в моём случае будут являться: автомобиль, мотор, коробка передач и т.д., обьектов будет очень много - соответственно для каждой зап. части автомобиля. Самый главный вопрос - об организации аттрибутов Обьекта. Вопрос: правильно ли я поняла ваши обьяснения, т.е. правильно ли построены таблицы. Ошибки, замечания?
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33562910
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Организация аттрибутов сильно зависит от того, сколько их будет примерно.
Поудет и такая схема, она красивая и для курсовой очень понравиццо руководителю :).
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33562926
studentka_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ах если бы только для курсовой... :)
мне нужно реальную базу данных создать, я практику на производстве прохожу, они ко мне как к специалисту относятся (что, конечно, льстит, но и ожидают от меня соответственно многого...). Опыта у меня, однако, маловато, поэтому и прошу здесь знающих людей оценить.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33562950
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Схеме правильная :) что еще можно сказать...

Вопрос не в схеме, а в том, что нужно на предприятии.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33562951
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
studentka_мне нужно реальную базу данных создать
Что-то слабо верится, что практикантке в качестве задания предлагают за время практики написать систему управления предприятием.

Что будет хранится в справочнике?
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33562963
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> я практику на производстве прохожу

Остается надеяться, что Ваша работа оплачивается достойно. ;)

К сожалению, для практического применения Ваша схема малопригодна:
- на Вашей схеме атрибуты каждого объекта уникальны; на самом деле это не так;
- непонятен смысл декомпозиции атрибутов; если вдруг появится новый тип, Вы для него новую таблицу заведете?
- нет возможности использовать перечисляемые значения (на автомобиль А1 может быть установлен только двигатель Д1 или Д2, а не двигатель вообще).

Это то, что на поверхности. ;)
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33563396
nnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению, для практического применения Ваша схема малопригодна:


Я бы сказал, что эта схема вообще не удобна, это схема по Тенцеру,
и дает удобство только по вводу данных, обработка будет чрезвычайно затруднена. И если вернутся к теме и задаче автора топика, то при
описанных критериях, абсолютно непригодна.
Будут страшные тормоза, и огромные трудности по обработке данных.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33563479
studentka_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621
Остается надеяться, что Ваша работа оплачивается достойно. ;)


платить они достойно стали бы специалисту :) Я же довольна, что
получила возможность на реальном примере поучиться.Только вот сложнее получается, чем я себе представляла.

guest_20040621

К сожалению, для практического применения Ваша схема малопригодна:
- на Вашей схеме атрибуты каждого объекта уникальны; на самом деле это не так;
- непонятен смысл декомпозиции атрибутов; если вдруг появится новый тип, Вы для него новую таблицу заведете?
- нет возможности использовать перечисляемые значения (на автомобиль А1 может быть установлен только двигатель Д1 или Д2, а не двигатель вообще).

Это то, что на поверхности. ;)


Спасибо огромное за критику!

1) У меня уникальны ЗНАЧЕНИЯ аттрибутов(каждый аттрибут же имеет свои Attr_Id), т.е., например, у меня часто будут повторяться такие значения аттрибутов, как, "Rigidity" (для каждой скорости каждой коробки передач будет такое значение встречаться), так вот что бы мне не дублировать эту текстовую строку по 100 раз, я перед вставкой нового аттрибута- сначала проверю, а нет ли у меня уже такого значения, и если есть - то выберу Value_Id этого аттрибута и помещу к нововведённому Attr_Id.

2) Типы аттрибутов заранее известны: аттрибуты могут быть только указанных типов: Integer, Double, Varchar. И соответственно для хранения значений этих типов будут соответствующие таблицы.

Таблица же "Type" имеет вид:
----------------
Id | Name
-----------------
1 | Integer
2 | Double
3 | Varchar

Идея та же - что бы для каждого типа не дублировать текстовую строку, а только лишь Integer(Id), за это прийдётся, конечно, лишний join "заплатить". Стоит ли Type в отдельную таблицу выводить, или лучше сразу прописать название типа аттрибута в таблиcу Attributes?

3) Я тоже долго пыталась разобраться в этом. Данные составляющих зап.частей мне нужно будет перекачать с уже имеющейся базы данных. Как мне обьяснили, у каждой зап.части/автомобиля есть свой однозначно характеризующий её номер. Т.е. автомобиля с конкретмным номером может быть только 1 мотор, только 1 коробка передач. Объясняющий мне, правда, не очень уверенно обьяснял, поэтому я надеюсь получить доступ к этой их базе с зап.частями и проверить это сама, но доступ получить у них тут-это долгий процесс. Вот что бы время не терять я решила положиться на обьясняющего и сделать модель на случай, что информация деиствительно достоверна.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33563720
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> У меня уникальны ЗНАЧЕНИЯ аттрибутов (каждый аттрибут же имеет свои Attr_Id)

Я не очень понимаю, что Вы хотели сказать этой фразой. Постарайтесь решить такую задачу: выбрать любой объект (в Вашей терминологии) с перечнем (не значениями!) его характеристик (включая те, значения которых не определены). Плюс к этому было бы правильно описать единицы измерения характеристик (а совсем хорошо было бы еще и использовать разные системы измерений).

> Типы аттрибутов заранее известны

;)) ОК, если Вы настаиваете - пусть так.

> Данные составляющих зап.частей мне нужно будет перекачать с уже имеющейся базы данных.

Хм... на Вашем месте я бы уточнил задачу. Структура данных для хранения будет существенно отличаться от структуры данных для набора оператором. Вполне возможно, что для хранения (не для набора) Ваша схема вполне подойдет.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33563924
studentka_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621> У меня уникальны ЗНАЧЕНИЯ аттрибутов (каждый аттрибут же имеет свои Attr_Id)

Я не очень понимаю, что Вы хотели сказать этой фразой. Постарайтесь решить такую задачу: выбрать любой объект (в Вашей терминологии) с перечнем (не значениями!) его характеристик (включая те, значения которых не определены). Плюс к этому было бы правильно описать единицы измерения характеристик (а совсем хорошо было бы еще и использовать разные системы измерений).


SELECT A.Attr_Id, A.Value_Id, Ti.Name, Ty.Name, A.Line_Number,
FROM Object O, Object_Attributes OA, Attributes A, Title Ti, Type Ty
WHERE O.Object_Id=OA.Object_Id
AND OA.Attr_Id=A.Attr_Id
AND A.Title_Id=Ti.Title_Id
AND A.Type_Id=Ty.Type_Id
AND O.Name=’коробка предач А’;

в итоге таблица результатов будет выглядеть как в прикреплённом рисунке. Дальше я буду проходить по каждой строчке результатов и для каждого Аттр_Ид делать запрос:

SELECT Value from Ty.Name
WHERE Ty.NameValue_Id=Value_Id;

в итоге получу значения аттрибутов. Зачем мне хранить аттрибуты, значения которых не определены? Это необходимо?
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33563937
studentka_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
таблицу забыла
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33563942
nnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
studentka_
SELECT A.Attr_Id, A.Value_Id, Ti.Name, Ty.Name, A.Line_Number,
FROM Object O, Object_Attributes OA, Attributes A, Title Ti, Type Ty
WHERE O.Object_Id=OA.Object_Id
AND OA.Attr_Id=A.Attr_Id
AND A.Title_Id=Ti.Title_Id
AND A.Type_Id=Ty.Type_Id
AND O.Name=’коробка предач А’;

в итоге таблица результатов будет выглядеть как в прикреплённом рисунке. Дальше я буду проходить по каждой строчке результатов и для каждого Аттр_Ид делать запрос:

SELECT Value from Ty.Name
WHERE Ty.NameValue_Id=Value_Id;

в итоге получу значения аттрибутов. Зачем мне хранить аттрибуты, значения которых не определены? Это необходимо?
Какой ужас!!!
И это только выборка одного объекта с атрибутами
А теперь как у Вас получиться выбрать Все объекты у которых
Атрибут1 = Х или Атрибут2 = Y или Атрибут3 = Z
Отсортировав по атрибуту4
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33563988
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> в итоге получу значения аттрибутов.

Со значениями понятно. Нужен просто полный перечень атрибутов любого объекта.

> Зачем мне хранить аттрибуты, значения которых не определены?

Их не нужно хранить. Нужно иметь схему описания сущности в явном виде.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33570299
studentka_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nnovКакой ужас!!!
И это только выборка одного объекта с атрибутами
А теперь как у Вас получиться выбрать Все объекты у которых
Атрибут1 = Х или Атрибут2 = Y или Атрибут3 = Z
Отсортировав по атрибуту4

Естественно только возможностями SQL тут не обойтись, такои запрос прийдеотся программным путеом "дорабатывать". Никто и не утверждал, что всё должно быть легко, требования не позволяют такой роскоши.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33570449
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
studentka_ wrote:
> nnov
> Какой ужас!!!
> И это только выборка одного объекта с атрибутами
> А теперь как у Вас получиться выбрать Все объекты у которых
> Атрибут1 = Х или Атрибут2 = Y или Атрибут3 = Z
> Отсортировав по атрибуту4
>
>
>
> Естественно только возможностями SQL тут не обойтись, такои запрос
> прийдеотся программным путеом "дорабатывать". Никто и не утверждал, что
> всё должно быть легко, требования не позволяют такой роскоши.
Ва первых! Ужас где? в 4-х джойнах? а Вы больше чем к одному не
привыкли? Ваши проблемы...
Ва втарых... что значит "только SQL тут не обойтись, прийдется
программным путем дорабатывать". А сейчас как решается - аппаратно? или
у нас СКЛ - дух святой? или в скл отменили Order by?
или нынче кошерно на клиенте сортировать? или я чего не понял?


--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33570783
studentka_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я о том, что при такой схеме, как у меня ты не сделаешь в одном SQL запросе такую выборку, которую описал nnov, и вряд ли ORDER BY применишь.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33570934
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
studentka_я о том, что при такой схеме, как у меня ты не сделаешь в одном SQL запросе такую выборку, которую описал nnov, и вряд ли ORDER BY применишь.
select
atr(obj_type,obj_id,'atr1'),atr(obj_type,obj_id,'atr2'),atr(obj_type,obj_id,'atr3') ....
from obj_table
where obj_type='personal' and atr(obj_type,obj_id,'atr1')='Иванов'
order by atr(obj_type,obj_id,'atr2')

где atr(obj_id,atr_name) - функция возвращающая значение атрибута типа obj_type с именем atr_name объекта obj_id
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33571185
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мод studentka_я о том, что при такой схеме, как у меня ты не сделаешь в одном SQL запросе такую выборку, которую описал nnov, и вряд ли ORDER BY применишь.
где atr(obj_id,atr_name) - функция возвращающая значение атрибута типа Чисто SQL разворот в колонки для EAV например для трех заданных атрибутов.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
CREATE TABLE EAV_Entity(
  EntId   NUMBER( 17 , 0 ) NOT NULL PRIMARY KEY,
  EntNum  NUMBER( 17 , 0 ) NULL,
  EntDescr VARCHAR2( 100 ) NULL
);
/
CREATE TABLE EAV_Attribute(
  AttrId   NUMBER( 17 , 0 ) NOT NULL PRIMARY KEY,
  AttrNum  NUMBER( 17 , 0 ) NULL,
  AttrDescr VARCHAR2( 100 ) NULL
);
/
CREATE TABLE EAV_Value(
  EntId   NUMBER( 17 , 0 ) NOT NULL ,
  AttrId   NUMBER( 17 , 0 ) NOT NULL,
  Val VARCHAR2( 100 ) NULL
);

select 
  EntId, EntDescr, prop1, prop2, prop3
from
    (select
      e.EntId, e.EntDescr,
      min(case when z.AttrId =   7  then z.val else null end) prop1,
      min(case when z.AttrId =  12  then z.val else null end) prop2,
      min(case when z.AttrId =  17  then z.val else null end) prop3
    from
      EAV_Entity e, EAV_Value z
    where
      e.EntId  = z.EntId
      and z.attrid in ( 7 , 12 , 17 )
    group by
      e.EntId, e.EntDescr )
where
   prop1 >  70000   AND  prop2 < 80000 
;
Пример конечно скелетный, обсуждалось на ORACLE более подробно.
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33571953
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
studentka_ wrote:
> я о том, что при такой схеме, как у меня ты не сделаешь в одном SQL
> запросе такую выборку, которую описал nnov, и вряд ли ORDER BY применишь.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select E.ID,V1.ValueChar as Name
	,V2.ValueInt as Position
	,V4.ValueDate as date
	,V4.ValueDate as ArrivalDate
...................
	,VN.ValueXXX as XXXname

from	dbo.Element E join dbo.Value V1 on E.ID = V1.Element
	join dbo.value V2 on E.ID = v2.Element
	join dbo.value V3 on E.ID = v3.Element
	join dbo.value V4 on E.ID = v4.Element
  .............................
	join dbo.value VN on E.ID = vN.Element
where	E.type = 'Cars'
order by V2.ValueInt,V5.Valuedate,...............
	

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33571955
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, забыл еще ограничения на value, нечто вроде
Код: plaintext
1.
2.
..........
where	E.type = 'Cars' and V1.Parameter =  16  and V2.Parameter= 38  ...

у меня в реальности просто несколько иначе, но смысл тот же....
--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33572757
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 locky
Отсутсвующие значения?
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33573035
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR wrote:
> 2 locky
> Отсутсвующие значения?
Что - отсутствующие значения? Values в которых значения ValueInt etc - null?
В моем случае - я таки храню их в базе - технологически удобно.
Если не хранить - заменяем inner join на left outer join - но можем
неслабо потерять в скорости (не в этом случае, правда, но всё таки...)

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33575314
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор3)Как мне обьяснили, у каждой зап.части/автомобиля есть свой однозначно характеризующий её номер. Т.е. автомобиля с конкретмным номером может быть только 1 мотор, только 1 коробка передач.

вам не совсем корректно объяснили. Во-первых, называйте вещи своими именами. Мотор - это агрегат, запчасть - это деталь. Однозначно запчасть характеризуется навазнием производителя и ее номером - такая связка действительно уникальна. Модель может комплектоваться различными агрегатами. Например, есть Skoda Octavia, которая может комплектоваться моторами как бензиновыми, так и дизельными, с наддувом и без наддува, ну и объем тоже может быть разным.

ИМХО, озвученная модель - это модель Тенцера. Она удобна для понимания и небольших объемах информации. При бОльших объемах инфы данная модель будет тормозить, и гибкость, которой обладает данная модель не будет иметь значение.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33575830
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
ModelR wrote:
> 2 locky
> Отсутсвующие значения?
Что - отсутствующие значения? Values в которых значения ValueInt etc - null?
В моем случае - я таки храню их в базе - технологически удобно.
Если не хранить - заменяем inner join на left outer join - но можем
неслабо потерять в скорости (не в этом случае, правда, но всё таки...)

--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
Если хранить в базе пустые значения,существенная часть гибкости EAV не используется, объем базы растет. Не проще ли тогда сразу отвести параметрам колонки чем париться с EAV?
...
Рейтинг: 0 / 0
Структура БД для хранения строк с переменным кол-вом полей
    #33577115
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR wrote:
>
> Если хранить в базе пустые значения,существенная часть гибкости EAV не
> используется, объем базы растет. Не проще ли тогда сразу отвести
> параметрам колонки чем париться с EAV?
Не проще. Я не собираюсь откзываться от прелестей EAV только потому, что
вынужден дополнительно тратить 12 байт на аттрибут (заполненный или пустой).
Тем паче, что поверх EAV значительно проще создаются всевозможные
автоматические генераторы отчетности, документов, справочников и проч.,
чем поверх традиционной 3NF


--
-------------------------
There's no silver bullet!
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
71 сообщений из 71, показаны все 3 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура БД для хранения строк с переменным кол-вом полей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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