powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование: eav система или другие варианты....
29 сообщений из 29, показаны все 2 страниц
Проектирование: eav система или другие варианты....
    #38855468
Miruk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо спроектировать БД. Самый важный вопрос это каким способом реализовать хранение характеристик к объекту. Характеристики могут быть текстовыми, числовыми и типа дата.
Есть 4 варианта:

1) значения характеристик, которые имеют одно значение храним в одной таблице, в виде полей таблицы.
Множественные значения характеристик (для одного объекта, к одной характеристике несколько значений), которые имеют тип Number, в другой. Связь 1 ко многим.

Минусы: Мы заранее не знаем, сколько этих характеристик будет. Следовательно, количество полей в таблице характеристик постоянно будет меняться.
Вторая таблица, характеристика только число.
Если система поменяется, то придется переписывать почти все.

Плюсы: быстрая выборка данных.

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

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

3) от таблицы объектов, все характеристики хранить в вертикальном виде и группировать их по типу в разных полях (трех). связь один ко многим

Минусы: сложность выборки
сохранение процедурой
eav система
Плюсы: логика схемы проще.

4) разбить справочники и значения характеристик по 3 таблицы. связь один ко многим.

Минусы: при выборке необходимо делать union таблиц, который исключает использование индексов
Плюсы: универсальность
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855484
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос не в том, "EAV" или "не EAV", а скорее в том, какую конкретную реализацию EAV применить. :)

Варианты с добавлением новых полей даже не рассматривайте. Это тупик (сто раз уже обсасывали почему).
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855489
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Miruk Мы заранее не знаем, сколько этих характеристик будет. Следовательно, количество полей в таблице характеристик постоянно будет меняться.В подавляющем большинстве приложений, количество полей изменяется не постоянно, а от версии к версии.
Но это скучно, банально и не интересно. Забубеньте свою особенную систему. Создайте трудности, а затем начните их героически преодолевать.
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855499
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MirukСамый важный вопрос это каким способом реализовать хранение характеристик к
объекту.
Нет, перед ним идёт ещё более важный вопрос: будет ли нужен поиск по этим характеристикам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855524
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один вариант - все характеристики хранить как XML.
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855572
Miruk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, Да, конечно, поиск будет осуществляться! В этом есть тоже загвоздка. Спасибо, что участвуете!
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855573
Miruk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LSV,
Буду очень признательна, если вы скинете мне ссылку!
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855580
Miruk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257, а поиск по характеристикам будет быстрый? Записей в таблице будет около миллиона.
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855586
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая СУБД в плане?
И сколько у вас этих характеристик и почему они должны постоянно добавлятся?
Как эти характеристики будут использоваться (обновлятся, заливаться, искаться)
Каков процент пустых (незаполненных характеристик)?
Все может повлиять на конечную структуру.
От себя замечу что традиционная структура - самая простая и быстрая, так что чтобы городить что то еще нужно иметь основание.
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855587
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Miruk Записей в таблице будет около миллиона.Немного

Miruk поиск по характеристикам будет быстрый?Смотря какой поиск.
Тупо seek по одному индексированному полю - однозначно быстрый.
Index scan уже помедленне.
Table scan - перечитает всю таблицу (но только одну).
А Table scan для EAV перечитает все таблицы.
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855592
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У EAV кроме ужасного поиска есть второй органический недостаток - контроль целостности переложен на плечи прикладной программы. Суй туда любой мусор, крои структуру как хочешь - СУБД возражать не будет, но за последствия отвечай сам
https://ru.wikipedia.org/wiki/GIGO
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855600
Miruk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257,

Oracle
пока что характеристик около 300 (можно разбить на три типа, в общем-то: число, текст и дата)
добавлять могут с выходом новых указов правительства и т.п.

Как эти характеристики будут использоваться (обновлятся, заливаться, искаться) - insert, update и select. основные операции значений характеристик к объекту.

Каков процент пустых (незаполненных характеристик)? около 30%, думаю.

По поводу традиционной. Я предложила руководству разбить значения характеристик на 3 таблицы (по типам). Эти таблицы имеют одинаковую структуру. Поэтому поиск по разным типам характеристик можно проводить при помощи union. НО! Боятся, что поиск будет долгий, индексы не будут использованы.

Другой вариант предлагает у нас программист: создать в таблице 999 полей. И по мере добавления новой характеристики заносить 300+i значение. Но мне кажется, что это тоже не то, что надо.

Может быть XML лучше подойдет даже. Но здесь у меня пробел в знаниях...
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855602
babona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всякую модель и пилюли нужно применять с умом.
Есть предметные области, где EAV - обоснованно. Почитайте внимательно EN-википедию, там расписано где.
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855603
Miruk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257Miruk Записей в таблице будет около миллиона.Немного

Miruk поиск по характеристикам будет быстрый?Смотря какой поиск.
Тупо seek по одному индексированному полю - однозначно быстрый.
Index scan уже помедленне.
Table scan - перечитает всю таблицу (но только одну).
А Table scan для EAV перечитает все таблицы.

Я про поиск значений характеристик, используя XML.
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855609
Miruk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
babona, статья там мне тоже не дала однозначного ответа
а вот статья http://habrahabr.ru/post/247767/ заставила призадуматься
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855610
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Miruk пока что характеристик около 300Немного
Miruk добавлять могут с выходом новых указов правительства и т.п.
То есть не внезапно, по желанию левой пятки. Вышел указ - разработана новая версия приложения - добавлен скрипт на базу.
Miruk Как эти характеристики будут использоваться (обновлятся, заливаться, искаться) - insert, update и select. основные операции значений характеристик к объекту.
Это то понятно по-другому не получится. Вопрос будут ли они обновлятся по отдельности, по одному объекту, или скопом. Насколько критично время на обновление. Как правило чем легче писать - тем сложнее читать и наоборот.
Miruk создать в таблице 999 полей.Почему не 300?
Miruk И по мере добавления новой характеристики заносить 300+i значение.А это откуда? Возможно потребуется внести дефолтное значение новой характеристики во все объекты. Объектов как я понимаю около миллиона?
Miruk Я про поиск значений характеристик, используя XML. Да почти точно так же - индекс на XML по сути парсит документ, выдирает значения полей и строит по ним нормальный индекс. Все затраты - при обновлении и добавлении XML. Прелесть в том, что ничего вручную делать не надо - все заботы берет на себя СУБД.
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855616
Miruk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257Miruk пока что характеристик около 300Немного
Miruk добавлять могут с выходом новых указов правительства и т.п.
То есть не внезапно, по желанию левой пятки. Вышел указ - разработана новая версия приложения - добавлен скрипт на базу.
в общем-то не внезапно. но времени особо не будет. нужно будет срочно дорабатывать проект.
Miruk Как эти характеристики будут использоваться (обновлятся, заливаться, искаться) - insert, update и select. основные операции значений характеристик к объекту.
Это то понятно по-другому не получится. Вопрос будут ли они обновлятся по отдельности, по одному объекту, или скопом.
если и будут изменяться, то точно по одному объекту
Насколько критично время на обновление. Как правило чем легче писать - тем сложнее читать и наоборот.
время критично, наверное, для любого пользователя пк...
Miruk создать в таблице 999 полей.Почему не 300?
чтобы не мапить отдельно поля. Но. какого типа создавать поля от 300-999? Ну и ладно, может быть и 300 пока сошло бы на первой. А дальше??? Для меня это вариант вообще никак не нравится...
Miruk И по мере добавления новой характеристики заносить 300+i значение.А это откуда? Возможно потребуется внести дефолтное значение новой характеристики во все объекты. Объектов как я понимаю около миллиона?
А вот про дефолтное значение, если можно, поподробнее...
Miruk Я про поиск значений характеристик, используя XML. Да почти точно так же - индекс на XML по сути парсит документ, выдирает значения полей и строит по ним нормальный индекс. Все затраты - при обновлении и добавлении XML. Прелесть в том, что ничего вручную делать не надо - все заботы берет на себя СУБД.
про это обязательно почитаю! но времени в обрез, 2 программера (JS и Frontend) сидят и ждут....начальство торопит... я сойду с ума ((((
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855618
Miruk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот про XML.
http://khpi-iip.mipk.kharkiv.edu/library/extent/dbms/viper/vip2.html
Четыре параметра важных для нашего проекта
Производительность поиска XML Плохая
Производительность выборки части документа Плохая
Производительность вставки Наилучшая
Производительность обновления (уровень под-документа) Плохая
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855619
Miruk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня все упирается в EAV все-же... минусов у этой системы много... но и плюсы есть. что делать???
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855620
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Miruk чтобы не мапить отдельно поля. Но. какого типа создавать поля от 300-999?Чего то я не понимаю. Приведите пример (надеюсь это не секретная информация). Объект - покупатель
Характеристика имя - строка
Характеристика бюджет - число
Характеристика дата последней покупки - дата
Характеристика диапазон и т.д.

Miruk про это обязательно почитаю! но времени в обрез, 2 программера (JS и Frontend) сидят и ждут....начальство торопит... я сойду с ума (((( Сам бог велел делать тупо и просто.

Про статью - авторы решили доказать что и так тоже можно производительность всего в разы хуже чем у конкурентов, но их устраивает. Спорить не о чем.
Натяжки
- Прикладное программирование без программирования
- их продукт совершенен, багов нет как факта
- программисты для конкурирующих субд криворукие новички.
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855778
Miruk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объект - жилой дом
Характеристики: материал стен (м.б. несколько наименований)
год постройки
год кап ремонта
количество этажей
площадь
и таких характеристик пока что 300
они добавится

а вот идея разбить справочники и значения характеристик по 3 таблицы. связь один ко многим. это совсем плохая идея?


Сам бог велел делать тупо и просто.
Само просто здесь будет что???
есть 5 вариантов уже. у меня было раньше 4, здесь вариант с xml появился.
xml подойдет для большой системы с количеством пользователей около 3000 чел. с одновременной работой в системе 800 пользователей?
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855954
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Miruk,

6й вариант - взять NOSQL БД, они как раз предназначены для хранения малосвязанных обьектов с переменным количеством свойств.
Важно понимать, что для Вашей задачи нет серебряной пули, любое решение будет лучше в одном и хуже в другом.
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38855957
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mirukа вот идея разбить справочники и значения характеристик по 3 таблицы. связь один ко многим. это совсем плохая идея?

Непонятно что имеется в виду - можно пример структуры?
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38856018
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MirukУ меня все упирается в EAV все-же... минусов у этой системы много... но и плюсы есть. что делать???Минусы будут у любого решения. :)

Упрощенно:

* таблица-справочник параметров:
ID
Имя
тип данных(int,date,str,float,bool)
вспомогательные поля и признаки

* Таблица EAV-данных:
автонумератор
ID параметра
ID типа документа
ID документа
Поле INT
Поле Date
Поле Str
Поле Float
Поле Bool

Этого вполне достаточно.
Если сделать работу только через хр.процедуры, то легко обеспечить и правильность ввода и проверки.
Скорость вставок и выборок будет достаточной, хоть и не рекордной. :)
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38856431
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин Важно понимать, что для Вашей задачи нет серебряной пули, любое решение будет лучше в одном и хуже в другом.Плюс один
Кот Матроскин Непонятно что имеется в виду - можно пример структуры? Тоже присоединяюсь к вопросу
Miruk Само просто здесь будет что?Самое простое и быстрое решение это одна таблица с 300 полями.
С такой структурой умеют работать все - отчетопостроители, генераторы GUI и т.д. Такая структура понятна любому новому человеку (хотя работать с 300 полями может быть неудобно)
С такой структурой удобно работать серверу (искать), в самом худшем случае будет один полный скан таблицы.
Для того чтобы от такой структуры отойти нужно обоснование. У яндекс маркета с гигантским количеством разных товаров и разных характеристик такое обоснование есть. У парней из статьи такое обоснование тоже есть всё прикладное «программирование» выполняет бизнес-аналитик (а лучше – продвинутый пользователь) . Иначе это просто откладывание проблемы "на потом".
Далее, я не верю что все 300 полей равнозначны. Наверняка есть хиты - поля по которым поиск ведется часто, обычные поля по которым поиск ведется редко, и прочее по которым поиск ведется так редко что можно и подождать. То есть возможна гибридная структура - поля из первой и второй групп в таблице, остальное в EAV, первую группу индексируем.
Miruk здесь вариант с xml появился.xml был бы выгоден, если бы вы его УЖЕ использовали (например для связи с партнерами).
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38856628
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MirukНеобходимо спроектировать БД. Самый важный вопрос это каким способом реализовать хранение характеристик к объекту. Характеристики могут быть текстовыми, числовыми и типа дата.
Есть 4 варианта:

1) значения характеристик, которые имеют одно значение храним в одной таблице, в виде полей таблицы.
Множественные значения характеристик (для одного объекта, к одной характеристике несколько значений), которые имеют тип Number, в другой. Связь 1 ко многим.

Минусы: Мы заранее не знаем, сколько этих характеристик будет. Следовательно, количество полей в таблице характеристик постоянно будет меняться.
Вторая таблица, характеристика только число.
Если система поменяется, то придется переписывать почти все.

Плюсы: быстрая выборка данных.

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

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

3) от таблицы объектов, все характеристики хранить в вертикальном виде и группировать их по типу в разных полях (трех). связь один ко многим

Минусы: сложность выборки
сохранение процедурой
eav система
Плюсы: логика схемы проще.

4) разбить справочники и значения характеристик по 3 таблицы. связь один ко многим.

Минусы: при выборке необходимо делать union таблиц, который исключает использование индексов
Плюсы: универсальность

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

ну в общем 4ый надо делать.
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38856913
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MirukУ меня все упирается в EAV все-же... минусов у этой системы много... но и плюсы есть. что делать???

если склоняться к EAV - то можно ознакоимтся с этим обсуждением http://www.sql.ru/forum/246069-a/model-dannyh-po-tenceru
и вообще посмореть о модели Тенцера и её расширении (и такие статейки попадались

но если речь в ТЗ идёт о скорости поиска и выборки - то EAV не совсем подходит

не знаю полностью Вашу задачу, но напрашивается такое решение:
- выделить ключевые характеристики - (которые будут заполнены у большинства объектов и по которым нужна быстрота поиска и выборки, а, возможно, и агрегирования. Так сказать "костяк характеристик". Всё, что касается этих характеристик - нормализовать согласно учебникам :) Пр чём - со справочниками и контролем целостности средствами БД
- остальные характеристики (по которым поиск реже или отсутствует, которые будут на 30% и более пустыми и т.п.) запихать хоть в EAV, хоть в её расширения (Тенцер и т.п.), хоть в XML, да хоть в куда

Удачи!
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38856993
Miruk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, ребята! Сделаю гибридную структуру. Но надеялась, что есть ещё что-то, что я не знаю. Оказывается вариантов не много...
...
Рейтинг: 0 / 0
Проектирование: eav система или другие варианты....
    #38862613
duchka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Miruk,

Присмотритесь к конфигуратору habr.ru/post/247767/
Если не нужно api, а просто хотите вносить данные и делать отчеты - самое то.
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование: eav система или другие варианты....
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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