Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Часто обсуждаемый вопрос о хранение сущностей с наперед не известным набором свойств, или, шире - наперед неизвестный набор сущностей (даже - "Знаний - в "Базе Знаний") обычно утопает в соображениях, что все это велосипеды, и для разумно очерченной предметной области вполне можно построить специализированную структуру, быстрее работающую в силу своей большей приспособленности к SQL и т.п... Тем не менее, вопросы о структуре такого (пусть умозрительного) хранилища возникают. Хочется, оставив в стороне вопрос о целесообразности попыток создание хранилищ такого типа систематизировать (или хотя бы оборзеть, тьфу, обозреть) возможные их конструкции. Ибо вычитывать крупицы зерен из тонн флуда в соответствующих топиках весьма напряжно. Если возможно - хотелось бы кратко видеть следующее - структура хранилища на уровне идей + структура (ядро) на уровне реализации БД - CREATE TABLE-ы (упрощенно). Реализация интерфейса юзера мне в этом контексте не интересна (хотелось бы оставить ее за скобками, или как дополнительное обоснование к выбору структуры). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2005, 11:50 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
А можно уточнить поставленный вопрос? 1. Идет ли речь о том, что сущности и свойства наперед неизвестны разработчику и по мере их возникновения (уточнения) он должен модифицировать (вводить эти сущности) приложение и/или БД? Или же эти сущности и свойства наперед неизвестны даже самому приложению, т.е. имеют динамический характер и могут создаваться и видоизменяться прямо в процессе работы пользователя (приложения) с БД? 2. Вы хотите рассмотреть возможные варианты построения только реляционных структур или как один из способов решения проблемы допускаете использование объектных технологий (объектные СУБД, инструментарий для объектно-реляционного отображения, объектные расширения классических СУБД) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2005, 12:06 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Alexey Rovdo 1. Идет ли речь о том, что сущности и свойства наперед неизвестны разработчику и по мере их возникновения (уточнения) он должен модифицировать (вводить эти сущности) приложение и/или БД? Или же эти сущности и свойства наперед неизвестны даже самому приложению, т.е. имеют динамический характер и могут создаваться и видоизменяться прямо в процессе работы пользователя (приложения) с БД? не известны не сущности и св-ва, а даже их типы, т.е не возможен полный перечень объектов, учитываемых в системе. система должна хранить все, что пользователь пожелает сохранить о введенной сущности, причем если его взгляд на ее св-ва (и их структуру, если св-во не скаляр, а так же некая сущность) поменяется, то система должна позволять разместить это новое пониманое в той же (реляционной) структуре. Хотя в каждой частной задаче некоторые наиболее часто втречающиеся сущности можно охватить, но их св-ва предполагаются сколь угодно уточняемыми. Alexey Rovdo 2. Вы хотите рассмотреть возможные варианты построения только реляционных структур или как один из способов решения проблемы допускаете использование объектных технологий (объектные СУБД, инструментарий для объектно-реляционного отображения, объектные расширения классических СУБД) ? Меня интересуют только варианты реляционных структур. На самом деле вопрос - в каких абстракциях, допускающих реализацию в реляционных структурах, наиболее полно описываются такие хранилища (возможно, и даже наиболее вероятно - с учетом особенностей неких областей приложения - т.е. с некими ограничениями на тип хранимых сущностей и связей). Я хочу концентрировать те конструктивные мысли (подходы), которые разбросаны во множестве в разных топиках. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2005, 12:50 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Думаю, полный кирдык. Особенно, когда прочитал, что ты и о типах данных заранее представления не имеешь (проблемы с интерпретацией/сортировкой/представлением будут). Ограничься, скажем, пятью базовыми типами данных: строка, целое, дата, деньги, натуральное. Заведи справочник бизнес - типов: Название Базовый тип Документы (n)- Значения - (1) Бизнес - типы Для каждого значения храни его представление в виде строки или заведи что-нибудь в виде записи с вариантами. Чтобы разгрузить систему, для справочника Значения введи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2005, 17:44 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Что-то у меня FireFox глюканул... ******************************* Повторюсь: Думаю, полный кирдык. Особенно, когда прочитал, что ты и о типах данных заранее представления не имеешь (проблемы с интерпретацией/сортировкой/представлением будут). Ограничься, скажем, пятью базовыми типами данных: строка, целое, дата, деньги, натуральное. Заведи справочник бизнес - типов: Название Базовый тип Документы (n)- Значения - (1) Бизнес - типы Для каждого значения храни его представление в виде строки или заведи что-нибудь в виде записи с вариантами. Чтобы разгрузить систему, для справочника Значения введи Null - значение и, если значение равно null, просто не создавай эту запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2005, 17:47 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Ну вот, появились какие-то лоскутки мыслей: mv Ограничься, скажем, пятью базовыми типами данных: строка, целое, дата, деньги, натуральное. по поводу хранения свойств-скаляров наверное так во всех анонсированных тут решениях (программер ортодокс, старый черт и т.п.) и имеет место я бы добавил тип: + ссылка ? - (на другую, сохраненную в хранилище сущность/экземпляр сущности (в зависимости от выбранной изначально терминологии и метода представления сущностёв, абы их экземпляров). Тут вопрос в реляционной организации всех ссылочных типов, а стало быть в способе задачи ссылки. (скорее всего все "сущности" (или их экземпляры), вернее их "шапки" должны быть сведены в одну табличку идентификаторов). В случае наличия "блатных" сущностей (выделенных заранее в отдельные таблицы - как сущности заведомо известной неизменной структуры (или заведомо жесткого "ядра" структуры)) , если таковой выделенный тип будет чрезвычайно распространен (в некой области применения), придется добавлять и по полю ссылки на каждую выделенную сущность. Нет? (Ау, ортодоксы, Олд-Ники и пр., поевшие собаку :) - или возможно хранить ссылки (в т.ч. всех сылочных типов) в том же натуральном поле? (при соответсвующем базовом типе это будет означать ссылку на требуемую таблицу сущностей)?? mv Заведи справочник бизнес - типов: Название Базовый тип по построению этого справочника видимо больших расхождений тоже нет? Правда нужен ID бизнес_типа? (названия могут быть весьма длинными?). Достаточно ли этого? Как в случае базового типа "ссылка" получить с одной стороны (текущую) структуру ссылочного типа - будучи в справочнике бизнес_типов, а с другой - будучи в хранилище сущностей - набор конкретных экземпляров (реализаций этой структуры) - для выбора "значения" одного из св-в заданного типа ? Добавить поле "ссылка" на некое описание структур? Или все-таки справочник бизнес_типов должен быть встроен в общее хранилище описаний (струтур) сущностей? Кроме того надо зашить и абсолютно непереопределяемый справочник самих базовых типов? (предлагаемой вами структуры) Примерная область его применения: - 1. для базовых типов - интерфейсные штучки (переназначение полей ввода величины) - 2. если базовый тип - ссылочный - то ограничения на реляционные связи (если полагать структуру не модифицируемой при эксплуатации, то количество ссылочных типов должно быть изначально зашито и неизменно?) mv Документы (n)- Значения - (1) Бизнес - типы Для каждого значения храни его представление в виде строки или заведи что-нибудь в виде записи с вариантами. Документы - это то, что мы называли ранее сущностями? (только теперь это более узкое понятие?). Как в вашей модели организовано (предполагается быть организованным) хранение ЭТИХ САМЫХ "документов"? Считаете ли вы, что это описатели "типов" сущностей? Как они (описатели) организованы? Значения - что это такое? Это отдельное от "Документы" понятие? Т.е. некоторые конкретные "значения" - это записи некоторой отдельной от "Документы" таблички, имеющие с одной стороны тип "ДокументХХХ", а с другой - набор некоторых свойств? Или значения - это значения самих СВОЙСТВ "документа" - т.е. таблица "св-ва", связанная с таблицей "Документ", и осуществляющая привязку к документу как типа св-ва, так и его значения? mv Чтобы разгрузить систему, для справочника Значения введи Null - значение и, если значение равно null, просто не создавай эту запись. Что такое справочник "Значения"? Это еще одна таблица? И каждое значение (float8) я должен хранить и в нем??? . Или "просто" имеется в виду в _интерфейсе_ заполнения значений свойств, при выборе значений _ссылочных_ типов добавлять к набору еще и значение Null? И при вводе пользователем Null в поле соответствующего базового типа удалять заполняемую/изменяемую запись??? Хотелось бы понять, из какого набора абстракций ("Документ"/"Свойство"/"Значение"/"Тип"/"Базовый тип") состоит ваша модель. И где (в какой из абстракций) в ней описана/хранится структура (модифицируемая!) "документов", а где - сами(?) "документы" (или они называются иначе?). Или не предполагается отдельного хранения "структур"? Жаль, что гуру, съевшие всех собак в данной области не горят желанием поучавствоать. Или для их участия необходимо позиционировать тему как "... велосипеды с квадратными/треугольными колесами" (т.е. вещь ненужную и вредную)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 13:55 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
/topic/134831&pg=14 - там в середине страницы есть список (наверняка далеко не полный) готовых "продуктов" реализующих хранение "объектной" модели данных инфосистемы в универсальных структурах БД Реляционных СУБД. Желаемую Вам информацию можно будет получить посмотрев эти продукты :) Если столкнетесь где-нибудь со сравнительными обзорами подобных О-Р систем, пож. дайте ссылочки! Мне тоже интересно! Наверно эта ветвь форума не совсем соответствует Вашему вопросу. Вот если-бы ввести отдельную тему в ветви "Сравнение СУБД" (напр. "Сравнение реализаций ОР СУБД") - можно было-бы вести обсуждение Вашего вопроса там. А так, есть только тема http://www.sql.ru/forum/actualthread.aspx?tid=9021 которая тянется уже третий год, и охватывает и объектно-ориентированные и реляционные и объектно-реляционные СУБД, и большая часть постов в ней типа "сам дурак", хотя есть и полезные... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 13:55 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
4321Часто обсуждаемый вопрос о хранение сущностей с наперед не известным набором свойств, или, шире - наперед неизвестный набор сущностей (даже - "Знаний - в "Базе Знаний") обычно утопает в соображениях, что все это велосипеды, и для разумно очерченной предметной области вполне можно построить специализированную структуру, быстрее работающую в силу своей большей приспособленности к SQL и т.п... Тем не менее, вопросы о структуре такого (пусть умозрительного) хранилища возникают. Хочется, оставив в стороне вопрос о целесообразности попыток создание хранилищ такого типа систематизировать (или хотя бы оборзеть, тьфу, обозреть) возможные их конструкции. Ибо вычитывать крупицы зерен из тонн флуда в соответствующих топиках весьма напряжно. Если возможно - хотелось бы кратко видеть следующее - структура хранилища на уровне идей + структура (ядро) на уровне реализации БД - CREATE TABLE-ы (упрощенно). Реализация интерфейса юзера мне в этом контексте не интересна (хотелось бы оставить ее за скобками, или как дополнительное обоснование к выбору структуры). Структура хранилища будет определяться тем, насколько Вы намерены использовать для отражения модели данных такие понятия, как типы данных и таблицы РСУБД. Поясняю. Если Вы заводите таблицу с несколькими полями (по одному на каждый тип из списка целое, строка, дата... - можно и все поддерживаемые типы перечислить), то вы используете типы данных конкретной СУБД. Альтернативой является хранение символьного представления данных. Второй альтернативой является хранение в одной колонке типа данных, а во второй - бинарного его представления (ну и еще длину массива байтов надо хранить). Получать данные придется из блоба, преобразовывая в указанный тип. Если Вы будете хранить ссылки в трех колонках (имя таблицы, имя ключевого поля и его значение - например, целочисленное), то Вы используете таблицы СУБД. Альтернативой является несколько колонок (ну это уже тупые внешние ключи в общеупотребительном понимании). Можно эти подходы объединить и кроме таблиц сущностей, на которые ссылаются, завести таблицы целочисленных атрибутов, строковых атрибутов и т.д. Я, однако, предпочитаю даты, строки и числа хранить в одной таблице, для вящей простоты. Работают такие вещи быстро (в смысле быстро работает поиск по значениям атрибутов и т.п.). Однако зря Вы выносите вопросы разработки GUI за скобки, так как там в описанных ситуациях может начаться нечто такое, что нивелирует ценность Ваших гибких и красивых моделей данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 14:14 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
P.S. По большому счету это все фигня, РСУБД внутри РСУБД. Имхо, может быть нужно только для построения перечней объектов с наперед неизвестным набором атрибутов. "пока вы смотрите свой телевизор, инопланетяне через него трахают вам мозги" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 14:15 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
> я бы добавил тип: > + ссылка ? Это не тип данных, а способ обращения к сущности. И сначала я бы озаботился глобальной идентификацией сущностей (как внутреннего хранилища, так и внешних), а потом уже описывал бы ссылки. > Или все-таки справочник бизнес_типов должен быть встроен в общее хранилище > описаний (струтур) сущностей? Imho это было бы оправданно. > Кроме того надо зашить и абсолютно непереопределяемый справочник самих > базовых типов? Почему непереопределяемый? > "... велосипеды с квадратными/треугольными колесами" (т.е. вещь ненужную и > вредную)? Не могу отнести себя к гуру, но замечание на пару копеек: суть в том, что существующие способы описания структур данных можно значительно расширить без ущерба для традиционного подхода. Г-н skorohod привел Вам ссылку на обсуждение, где он сформулировал основные принципы такого расширенного подхода. Imho весьма и весьма здравые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 14:49 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Вай, что - то так на меня наехали, даже и сказать не знаю что... В общем-то, я в трех словах описал то, что недавно делал. У меня была задача создать систему архивации документов с возможностью их произвольной рубрикации. Ну, вот и получилась система из трех базовых сущностей - Документы, Атрибуты документов (то, что я назвал бизнес - типами), Значения атрибутов. По поводу типа "ссылка" - как говорила Одна девушка (С.О'Хара) - "Об этом я подумаю завтра". Когда понадобится. Моя схема чрезвычайно проста, зато позволяет пользователям выполнять произвольные выбоки по значениям Атрибутов, самим группировать и фильтровать данные для визуального представления: см. аттач. По поводу Null - значений: да, если юзер вводит пустую строку, то Значение просто убивается. Я проверил: при такой схеме повышается скорость манипулирования метатипами (удаление - меньше удалять, создание Документа - не нужно создавать Значения, создание Атрибута - не нужно создавать пустых Значений для всех документов). В общем, довольно шустро работает. По поводу реализации хранения Значений - тут, может, я слегка перемудрил: храню в действительность ссылки на словарные значения, и, когда юзер вводит новые данные, обращаюсь к словарю на предмет их наличия - и - если нет такого - то создаю. Это я боялся, что объемы большие будут - и сортировку с фильтрацией придется долго делать. Ну думая, что я много выиграл, но - что сделано, то сделано. А по поводу того, что для связи между экземлярами нужны еще и Id я не спорю :) Это тебе к гуру - собакоедам надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2005, 19:30 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
2 mv Наверняка Вы добились того, чего хотели - все работает и поиск шустрит... А если копнуть немножко глубже и предположить, что в Вашей системе структура не стала не 2 а 3-уровневой: Документ-АтрибутДокумента-АтрибутАтрибута, и нужно выполнять поиск еще и по значениям АтрибутАтрибута?! Потянет это система или надо будет доделывать-переделывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 09:16 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
skorohod2 mv Наверняка Вы добились того, чего хотели - все работает и поиск шустрит... А если копнуть немножко глубже и предположить, что в Вашей системе структура не стала не 2 а 3-уровневой: Документ-АтрибутДокумента-АтрибутАтрибута, и нужно выполнять поиск еще и по значениям АтрибутАтрибута?! Потянет это система или надо будет доделывать-переделывать? Однако хитрый вопрос. Построив примерно такую же систему, практической нужды в поиске по атрибутам атрибутов я пока не видел, а список потенциальных мест, где она может возникнуть, невелик - запрограммируем частные случаи без труда, не заморачиваясь над обобщением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 09:47 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
2 dogen & mv Простой "пример из жизни" (я его не выдумал - перед глазами был) - примитивная секретарская системка учета документов "вх./исх." (назвать это документоборотом - рука не поднимается): среди прочего "КарточкаРегистрацииДокумента", кроме "атомарных" реквизитов, имеет несколько табличных частей - "Кому", "Резолюции", "Приложения", "КонтрольИсполнения", ... каждая из которых в общем случае имеет несколько различных полей. КарточкаРегистрации - объект; Табличные части - атрибуты объекта (или "вторичные" объекты); Поля в табличных частях - атрибуты атрибутов объекта (или атрибуты "вторичных" обектов); Согласитесь, что может быть не мало "нужных" запросов, которые не уложаться в плоскую, двумерную схему "объект-атрибут". Ну например: - какие документы предназначены определенному лицу (каждый документ системы может предназначаться нескольким лицам или подразделениям); - какие документы имеют приложения в формате M$ Word (каждый документ системы может иметь несколько файлов-приложений различных форматов); - какие документы должны быть поэтапно выполнены в опр. период (каждый документ системы может иметь несколько этапов выполнения различными лицами в разное время); ..... С одной стороны - невелика птица секретарь, обойдется и без таких запросов! А с другой стороны - особа, приближенная к БОССу... Наверно, лучше дать ей возможность искать, что надо?! (это к вопросу о практической нужде в поиске по атрибутам атрибутов ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 11:23 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
skorohod2 dogen & mv Простой "пример из жизни" (я его не выдумал - перед глазами был) - примитивная секретарская системка учета документов "вх./исх." (назвать это документоборотом - рука не поднимается): среди прочего "КарточкаРегистрацииДокумента", кроме "атомарных" реквизитов, имеет несколько табличных частей - "Кому", "Резолюции", "Приложения", "КонтрольИсполнения", ... каждая из которых в общем случае имеет несколько различных полей. КарточкаРегистрации - объект; Табличные части - атрибуты объекта (или "вторичные" объекты); Поля в табличных частях - атрибуты атрибутов объекта (или атрибуты "вторичных" обектов); Согласитесь, что может быть не мало "нужных" запросов, которые не уложаться в плоскую, двумерную схему "объект-атрибут". Ну например: - какие документы предназначены определенному лицу (каждый документ системы может предназначаться нескольким лицам или подразделениям); - какие документы имеют приложения в формате M$ Word (каждый документ системы может иметь несколько файлов-приложений различных форматов); - какие документы должны быть поэтапно выполнены в опр. период (каждый документ системы может иметь несколько этапов выполнения различными лицами в разное время); ..... С одной стороны - невелика птица секретарь, обойдется и без таких запросов! А с другой стороны - особа, приближенная к БОССу... Наверно, лучше дать ей возможность искать, что надо?! (это к вопросу о практической нужде в поиске по атрибутам атрибутов ) Смешно (это я насчет ТабличныхЧастей). Это же всего лишь группа атрибутов, причем образовалась она потому что кто-то так GUI нарисовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 11:34 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Dogen Смешно (это я насчет ТабличныхЧастей). Это же всего лишь группа атрибутов, причем образовалась она потому что кто-то так GUI нарисовал. Рад, что насмешил :) Термин "ТабличнаяЧасть" конечно относится к GUI, но сути дела не меняет - хоть "группой атрибутов" обозови, хоть "горшком"! И возникли эти "табличные части" совсем не потому что ГУИ такой. Вы про нормализацию данных что-нибудь знаете? Надо учесть несколько получателей документа (заранее неизвестно сколько) - в модели данных добавляется еще один иерархический уровень, а в реляционной структуре - связанные таблицы с отношением 1-m (это когда еще никакого ГУИ и в помине нет). Может предложите здесь на упомянутую мной задачу альтернативную структуру - плоскую, без использования многоуровневой иерархии в модели и в реляционной структуре - без связанных таблиц с отношением 1-m, чтобы учесть для любого документа заранее неизвестное количество получателей (в частном случае)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 12:04 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
> Документ-АтрибутДокумента-АтрибутАтрибута, и нужно выполнять поиск еще и по значениям АтрибутАтрибута?! Imho атрибут - терминальный элемент, т. е., у него не может быть собственных атрибутов. На мой взгляд, сложность реализации описания атрибутов связана с разнообразием принимаемых ими значений; для перечисляемого типа приходится держать список значений; могут понадобиться константы; если атрибуты могут быть связаны некоторым преобразованием, необходимо его описать. Кроме того, хочется иметь список [классифицированных] атрибутов в явном виде для любых сущностей (и для всех сразу). В результате структура получается достаточно громоздкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 12:08 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
skorohodИ возникли эти "табличные части" совсем не потому что ГУИ такой. Вы про нормализацию данных что-нибудь знаете? Что-нибудь знаю. skorohodНадо учесть несколько получателей документа (заранее неизвестно сколько) - в модели данных добавляется еще один иерархический уровень, а в реляционной структуре - связанные таблицы с отношением 1-m (это когда еще никакого ГУИ и в помине нет). Может предложите здесь на упомянутую мной задачу альтернативную структуру - плоскую, без использования многоуровневой иерархии в модели и в реляционной структуре - без связанных таблиц с отношением 1-m, чтобы учесть для любого документа заранее неизвестное количество получателей (в частном случае)? Ну так у Вас же не поднялась рука назвать это Документооборотом. Кроме секретарши кто-ниубдь еще этим пользуется, нет?.. По существу - я, собственно, сказал выше, что вопросов поиска, касающихся прохождения документа по маршруту, немного. Причем удобный интерфейс там имхо даже важнее красиовй структуры данных :)) И не вижу смысла городить огород из многоэтажных атрибутов. Потом замахаешься генерировать left join и where для этих общих случаев. Не окупится. Я бы предложил рассматривать подобное в более конкретной постановке задачи. Имхо судьба большинства конструкторов - 1-2 сделанных на них системы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 12:13 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
skorohod2 mv Наверняка Вы добились того, чего хотели - все работает и поиск шустрит... А если копнуть немножко глубже и предположить, что в Вашей системе структура не стала не 2 а 3-уровневой: Документ-АтрибутДокумента-АтрибутАтрибута, и нужно выполнять поиск еще и по значениям АтрибутАтрибута?! Потянет это система или надо будет доделывать-переделывать? Дык, оно так и работает ;) Юзер из правого списка (атрибуты) перетаскивает строки в левый, там они становятся столбцами, а уровни вложенности регулируются там же, столбцы перетаскиваются в верхнюю панель и определяют порядок группировки. Вот, на картинке - 4 уровня, а можно 44. И поиск с сортировкой работают. Внизу строка "Проверил = Петров", естественно, возможны комбинации. Ну, а по поводу возможных тормозов при больших объемах, когда будет 100 000 000 записей - об этом я уже говорил "Об этом я подумаю завтра". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 13:13 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Все, собакоеды пришли. Всем - спасибо и прощайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 13:17 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
skorohod /topic/134831&pg=14 Спасибо, смотрел. skorohod Наверно эта ветвь форума не совсем соответствует Вашему вопросу. Вот если-бы ввести отдельную тему в ветви "Сравнение СУБД" (напр. "Сравнение реализаций ОР СУБД") - можно было-бы вести обсуждение Вашего вопроса там. Меня интересуют не сравнения СУБД, а "типовые" решения хранилищ "плохоструктурированных данных" (вернее данных, описание которых вводятся/модифицируются вместе с вводом/модификацией самих данных). Т.е. именно "_конструктивные_особенности_" схем данных, позволяющих таковое размещение без переконструирования структуры. - "Объектные" надстройки, выполняющие "криэйт таблы" на каждую вносимую сущность меня мало интересуют, ибо проблема не в том, что я хочу размещать модное слово "объект", а в том, что то, что я хочу размещать, будеть подвижно, и должно быть описано в таких терминах, которые будут достаточны для покрытия всего, что только сможет быть размещено, причем "покрытие" должно осуществляться как со стороны помещения так и со стороны интерпретации данных (т.е., в известном смысле - интерфейса - т.к., сдается мне, если набор абстракций, воплощенных в некую схему БД, позволяет интерпретировать сохраненную в ней информацию {на основе сохраненной в ней-же информации "об интерпретации"}, то стало быть и позволяет [понятную юзеру] визуализацию этой интерпретации - сиречь интермордс). Опять же, сдается мне, что таковые построения существуют, и применительны к весьма неширокому кругу (кругам?) задач (назовем их "секретарскими"?), что связано в первую голову с тем, что для системы реализующей массовые однотипные операции с 1-й-2-мя узкоспециализированными сущностями завсегда проще поместить эти сущности в жесткие рамки с индексами и прочими прибабахами, и обвязать интерфейсом с раз и навсегда заданной функциональностью с минимально необходимой настраиваемостью (далее, очевидно, мысль "стелется мысью по древу" - т.е. по накатанному пути о шустрых системах с хорошо проработанной предметной областью и их преимуществу перед "универсальными думателями"). И сдается мне, далее, что построения эти существуют именно в смысле "хорошо продуманной предметной области", если под предметной областью понимать именно проблемму хранения сущностей, неописанного заранее [полностью] типа, и выборки из хранилища по заранее (на момент построения хранилища) не известным классификациям. - т.е. отражают некий набор абстракций, призванных описать таковую подвижную природу сохраняемых пользователем сущностей (т.с. "сущностей" с точки зрения пользователя), в терминах "неподвижных по конструкции" сущностей ("абстракций" - сиречь - сущностей (записей) с точки зрения БД) и связей между ними. А далее, сдается таки мне, существует уже (в природе) некое количество реализаций таковых построений, т.е. такого "анализа" нашей "предметной области". И у этих реализаций есть и свои особенности, и свои плюсы и минусы. И свои принципы, порождающие и то и другое. И именно как у архитектур конкретных, "обычных реляционных БД" (а отнюдь не их {ОООООРРРРРРР}СУБД). Вот и хотелось все это и оборзеть, сведя в какую-то систему. Вот собственно и все соображения, по каковым этот вопрос задан именно тут. Т.е. (резюме) вопрос-то в сущности в том, _как_ спроектировать реляционную БД для хранения "знаний": т.е. упирается в описание предметной модели "знаний" (возможные варианты построения моделей, их плюсы и минусы). ________________________ ЗЫ: skorohod А так, есть только тема http://www.sql.ru/forum/actualthread.aspx?tid=9021 которая тянется уже третий год, и охватывает и объектно-ориентированные и реляционные и объектно-реляционные СУБД, и большая часть постов в ней типа "сам дурак", хотя есть и полезные... в этих темах есть все: - и "сам дурак", и "надстройки-построители конформных баз" (обзовем их так) и реализации в упомянутом выше смысле (в смысле отображения анализа предметной области на "стандартную" структуру БД, но с выделенными нами панацейными сущностями и связями). Вот и хотел эти последние выделить в отдельном месте. И именно как структур даных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 14:54 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
В соседних ветках это уже отмечалось, но выскажусь еще раз. Мне кажется, что попытка втиснуть в реляционные структуры динамически изменяющуюся модель (причем без использования CREATE TABLE и пр.) обречена на провал. Реляционные СУБД просто не приспособлены для такого обращения. Разумеется, можно построить некие абстракции высокого уровня и впихнуть в них все необходимые данные, но ценой станет отказ от множества функций, предоставляемых именно реляционной СУБД. Т.е. по сути прийдется строить объектную СУБД поверх реляционной, что ИМХО просто лишено смысла. Зачем так надрываться, если есть собственно объектные СУБД, причем ориентированные именно на использование с динамически изменяющимися структурами данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 15:13 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Alexey RovdoВ соседних ветках это уже отмечалось, но выскажусь еще раз. Мне кажется, что попытка втиснуть в реляционные структуры динамически изменяющуюся модель (причем без использования CREATE TABLE и пр.) обречена на провал. Реляционные СУБД просто не приспособлены для такого обращения. Разумеется, можно построить некие абстракции высокого уровня и впихнуть в них все необходимые данные, но ценой станет отказ от множества функций, предоставляемых именно реляционной СУБД. Т.е. по сути прийдется строить объектную СУБД поверх реляционной, что ИМХО просто лишено смысла. Зачем так надрываться, если есть собственно объектные СУБД, причем ориентированные именно на использование с динамически изменяющимися структурами данных? Ну так ведь есть много промежуточных случаев - например, данные о товарных и финансовых транзакциях и данные о переговорах с клиентами, переписка и т.п. Часть данных структурирована слабо или никак, часть - жестко структурирована. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 15:19 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Так ведь тут вовсе не промежуточный случай предлагается разобрать, а самый что ни есть крайний. Да и в промежуточном случае (т.е. если в задаче есть и статические, и динамические структуры данных) строить объектную базу поверх реляционной на мой взгляд нерационально. Имеет смысл просто использовать две базы и соответствующий инструментарий (в т.ч. и входящий в состав самих СУБД) для их связывания. Обычно именно так и поступают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 15:41 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Alexey RovdoТак ведь тут вовсе не промежуточный случай предлагается разобрать, а самый что ни есть крайний. Да и в промежуточном случае (т.е. если в задаче есть и статические, и динамические структуры данных) строить объектную базу поверх реляционной на мой взгляд нерационально. Имеет смысл просто использовать две базы и соответствующий инструментарий (в т.ч. и входящий в состав самих СУБД) для их связывания. Обычно именно так и поступают. Гм, примерчик из жизни можете привести? С обоснованием выбора такой "гибридной архитектуры"? А то некоторые, знаете, справочники дублируют, middleware доморощенное сочиняют... потом кричат что именно потому что так сделано это очень круто... - надеюсь, Вы о другом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 15:44 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32905574&tid=1546016]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
134ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 495ms |

| 0 / 0 |
