Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Alexey RovdoВ соседних ветках это уже отмечалось, но выскажусь еще раз. Мне кажется, что попытка втиснуть в реляционные структуры динамически изменяющуюся модель (причем без использования CREATE TABLE и пр.) обречена на провал. Реляционные СУБД просто не приспособлены для такого обращения. Разумеется, можно построить некие абстракции высокого уровня и впихнуть в них все необходимые данные, но ценой станет отказ от множества функций, предоставляемых именно реляционной СУБД. Т.е. по сути прийдется строить объектную СУБД поверх реляционной, что ИМХО просто лишено смысла. Зачем так надрываться, если есть собственно объектные СУБД, причем ориентированные именно на использование с динамически изменяющимися структурами данных? Существуют решения, вплоть до используемых в коммерческих продуктах класса КИС. Примером может служить Альфа от Информконтакт (www.informcontact.ru), при всех проблемах этой системы там реальзованы "аналитические справочники", настраиваемые непосредственно пользователем (консультантом) под конкретный проект. При этом никаких претензий на объектность там нет (в версии 2.3). Аналитика может цепляться к различным сущностям (бизнес-обектам), заранее определенным разработчиком и имеющих в том числе и стандартные реквизиты (например "Счета", "Накладные" и т.п.) Проблем связанных с быстродействием из-за этой надстройки не было. Кончено данный механизм не предполагает изменений поведения объектов в зависимости от значений аналитик, но при желании и это можно реализовать используя тригера (СУБД Oracle). ЗЫ Прошу не рассматривать как рекламу продукта, сам продукт не могу посоветовать, только в качестве примера %) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 16:18 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Alexey RovdoВ соседних ветках это уже отмечалось, но выскажусь еще раз. Мне кажется, что попытка втиснуть в реляционные структуры динамически изменяющуюся модель ... .................................... Зачем так надрываться, если есть собственно объектные СУБД, причем ориентированные именно на использование с динамически изменяющимися структурами данных? Не хотелось-бы повторяться, но рискну :) Ув. Alexey Rovdo! На вопрос "Зачем так надрываться..." есть (по крайней мере для части пишущих и читающих этот и подобные ему топики) ответы, и я их попытался сформулировать в /topic/134831&pg=14 в сообщении 28 янв 05, 17:47 - а именно: skorohod "...интересуют тех людей, которые в силу разных обстоятельств своей профессиональной деятельности пришли к выводу, что стандартная методика проектирования и разработки ИС на основе РСУБД их уже не удовлетворяет, а про ООСУБД они или: 1) не знают совсем; 2) знают (в разной степени хорошо) и хотят их использовать но НЕ МОГУТ - по финансовым, корпоративным или каким-либо другим причинам; 3) знают очень хорошо и поняли, что это тоже "не то" и сознательно не хотят их использовать; Так вот я считаю, что поднимаемые в обсуждении этого топика вопросы интересны в основном именно людям "3)" и наверно "2)". Т.е. тем, кто не хочет/может переходить на новый инструмент разработки, а хочет по максимуму использовать годами наработанный опыт работы с РСУБД на несколько более высоком (логическом) уровне." Среди читателей наверняка есть и люди 1) но они, после того как познакомятся с возможностями ООСУБД, или переходят на них (ООСУБД) или переходят в 2) / 3) категорию. Согласен, что ООСУБД есть, наверняка у них есть много удобств, преимуществ и т.д. по сравнению с РСУБД, есть много приверженцев, пользователей... НО! Вы не можете отказать никакому Васе Пупкину в его праве "убивать" время на реализацию вышеподнятого вопроса средствами именно РСУБД потому, что у него нет денег на Весант, потому, что у него нет времени и желания (ну такой уж он человек или работа, семья...) на изучение новой системы, наконец потому, что он просто любит работать с MS SQL или Interbase или еще чем-нибудь другим реляционным... Пусть таких Вась тут и не много, но они есть и этот топик именно им интересен! А Ваша позиция "Зачем надрываться..." - сродни (сорри) телерекламе! - "купите ххх, и в подарок Вы получите совершено бесплатно еще ууу и zzz!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 16:24 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Alexey RovdoВ соседних ветках это уже отмечалось, но выскажусь еще раз. Мне кажется, что попытка втиснуть в реляционные структуры динамически изменяющуюся модель (причем без использования CREATE TABLE и пр.) обречена на провал. Реляционные СУБД просто не приспособлены для такого обращения. Разумеется, можно построить некие абстракции высокого уровня и впихнуть в них все необходимые данные, но ценой станет отказ от множества функций, предоставляемых именно реляционной СУБД. Т.е. по сути прийдется строить объектную СУБД поверх реляционной, что ИМХО просто лишено смысла. Зачем так надрываться, если есть собственно объектные СУБД, причем ориентированные именно на использование с динамически изменяющимися структурами данных? Вы невнимательны: авторсдается мне, что таковые построения существуют, и применительны к весьма неширокому кругу (кругам?) задач (назовем их "секретарскими"?), Повторю, я не хочу хранить "объекты" в смысле ООП. Я хочу понять, каковы мои возможности в построении реляционной БД для хранения разнообразных до/переопределяемых сущностей. (нигде у меня не сказано про "наследование" и еще черт знает что). Более того, дергать криэйттаблы только затем, что у меня подвижная структура сущностей (и больше ничего) - это ли не надрыв? А вот я возьму и выйду за любые рамки по количеству таблиц/полей. И что тогда? От чего и где отказываемся - это вопрос конкретной реализации "абстракции высокого уровня ", которые и хочется рассмотреть (и поковырять хотя бы виртуально пальцем), а, думается мне, не вопрос ИМХО-в. "Надрываться" - в смысле зачем описывать некую область в свзязных абстракциях, и, тем более, сравнивать разные описания? Их продуктивность? - Хотя бы затем, чтобы поиметь опыт такого описания. До тех пор, пока не рассмотрена ни одна, пусть умозрительная реализация, как мы узнаем, действительно ли этот подход не стоит рассмотрения ни при каких условиях? Давайте и останемся в наших узких рамках. А преимущества объектных БД в деле размещения динамически изменяемых структур данных можно рассмотреть и в другом месте - там где уже не один год меряются ИМХа-ми. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 16:53 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
4321 skorohod Наверно эта ветвь форума не совсем соответствует Вашему вопросу. Вот если-бы ввести отдельную тему в ветви "Сравнение СУБД" (напр. "Сравнение реализаций ОР СУБД") - можно было-бы вести обсуждение Вашего вопроса там. Меня интересуют не сравнения СУБД, а "типовые" решения хранилищ "плохоструктурированных данных" (вернее данных, описание которых вводятся/модифицируются вместе с вводом/модификацией самих данных). Т.е. именно "_конструктивные_особенности_" схем данных, позволяющих таковое размещение без переконструирования структуры. Так я Вам фактически тоже самое и предложил, но другими терминами :) Смысл в том, что это д.б. именно сравнение. Тема д.б. "привязана" к первой странице ветви форума (если это здесь возможно). Пусть не в "Сравнение СУБД", пускай здесь - в общем нет большой разницы. Просто название надо более серьезное дать ("как корабль назовешь - так он и поплывет" :) 4321 - "Объектные" надстройки, выполняющие "криэйт таблы" на каждую вносимую сущность меня мало интересуют, ибо проблема не в том, что я хочу размещать модное слово "объект", а в том, что то, что я хочу размещать, будеть подвижно, и должно быть описано в таких терминах, которые будут достаточны для покрытия всего, что только сможет быть размещено, причем "покрытие" должно осуществляться как со стороны помещения так и со стороны интерпретации данных (т.е., в известном смысле - интерфейса - т.к., сдается мне, если набор абстракций, воплощенных в некую схему БД, позволяет интерпретировать сохраненную в ней информацию {на основе сохраненной в ней-же информации "об интерпретации"}, то стало быть и позволяет [понятную юзеру] визуализацию этой интерпретации - сиречь интермордс). Не все объектные надстройки выполняют "криэйт таблы" на каждую вносимую сущность, хотя такой функционал может выполняться автоматически и быть абсолютно скрыт от пользователя, редактирующего структуру данных системы. Это только один из возможных вариантов реализации. Полярный ему(но далеко не единственный альтернативный) вариант - жесткая неизменяемая "универсальная" структура БД в которой таблицы не изменяются и не добавляются при редактировании сущностей. А есть и множество промежуточных вариантов... "Типовыми" решения становятся, выходя в массы. Не думаю, что мы сможем здесь собрать именно "типовые" решения. Будет набор реализаций, имеющих единичные внедрения, хотя и это будет вполне достаточной почвой для сравнительного анализа. Я не собираюсь критиковать Ваше предложение - оно и мне интересно, и наверняка некоторым другим... (Только-бы здоровья хватило!) Давайте попробуем согласовать форматы представления здесь тематических "продуктов", критерии их сравнения! Я имею ввиду именно варианты архитектуры систем, организации реляционной структуры БД, организации хранения модели предметной области... Кроме того, думаю, это поспособствует реализации еще одного момента, ранее звучавшего в некоторых темах - возможно получится свести в единый формат и оформить в виде общедоступной библиотеки сами модели предметных областей задач учета (а может Вы это имели ввиду под "типовыми" решениями?), или хотя-бы общеупотребимых справочных частей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 17:13 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
skorohod Вы не можете отказать никакому Васе Пупкину в его праве "убивать" время на реализацию вышеподнятого вопроса средствами именно РСУБД потому, что у него нет денег на Весант, потому, что у него нет времени и желания (ну такой уж он человек или работа, семья...) на изучение новой системы, наконец потому, что он просто любит работать с MS SQL или Interbase или еще чем-нибудь другим реляционным... Пусть таких Вась тут и не много, но они есть и этот топик именно им интересен! А Ваша позиция "Зачем надрываться..." - сродни (сорри) телерекламе! - "купите ххх, и в подарок Вы получите совершено бесплатно еще ууу и zzz!" Вы уж очень эмоционально среагировали на вопрос (на который, по большому счету, и отвечать то было необязательно). Впрочем, это вполне понятный ответ на него. Только ведь и вопрос касался именно крайнего случая. А вот ниже уже выясняется, что и крейт-таблы все-таки допустимы и статические данные все-таки какие-то есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 17:22 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Alexey RovdoТак ведь тут вовсе не промежуточный случай предлагается разобрать, а самый что ни есть крайний. Да и в промежуточном случае (т.е. если в задаче есть и статические, и динамические структуры данных) строить объектную базу поверх реляционной на мой взгляд нерационально. ну чё вы словами-тта кидаетесь? Хде сказано за объедки? За сущности базар идет. И токо за них. Не путайте красное с кислым. (встречается и сладкое и полусладкое). Alexey Rovdo Имеет смысл просто использовать две базы и соответствующий инструментарий (в т.ч. и входящий в состав самих СУБД) для их связывания. Обычно именно так и поступают. пгастите, а синхронизацией этого кентавра заниматься вася пупкин будет? Мдя-с. Вот уж гемору, так гемору. И куда они обычно такие-то поступают? В кащенку, али еще кудыть? Еще раз! Просьба не базарить за объедкные БД. Не наследуем мы код. Не наследуем и не перекрываем и задач таких не ставим. Мы узкую задачу посмотреть хочем. Меж прочим. скороходу: Повторюсь. Я хотел организовать "узкотематический" топик именно по организации хранения сущностей "с подвижной структурой" в виде неизменной реляционной структуры. Понятно, что наиболее известны в этой области реализации "дополнительных атрибутов" (внутри "обычных учетных схем" - т.е. таких, где для всего другого, кроме этих довесков - одна "сущность" в смысле предметной области - одна таблица). Но конь тут явно валялся и давно. Подначить людей, занимавшихся этим на пусть поверхностные обзоры своих "систем абстракций" у меня, кажется, не получилось - видимо дорожат своими ноу-хау. Их право. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 17:26 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
4321Подначить людей, занимавшихся этим на пусть поверхностные обзоры своих "систем абстракций" у меня, кажется, не получилось - видимо дорожат своими ноу-хау. Их право. Да ладно. Там решения на поверхности лежат - умный быстро сообразит, а неумным оно и вправду не нужно Я вот упирал на то что степень гибкости таковой "системы абстракций" зависит от того, насколько дорогую в разработке и внедрении систему рожать намерены. Причем для покрытия нужд среднего офиса тут не очень-то и копать нужно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 17:33 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Alexey Rovdo А вот ниже уже выясняется, что и крейт-таблы все-таки допустимы и статические данные все-таки какие-то есть. Еще раз огромная просьба, свои домыслы и вымыслы обсуждать в в более приспособленном для этого месте. Тут сделана, признаюсь неудачная, попытка обсудить сугубо узкий вопрос - об отражении задачи о сохранении наперед не определенного набора сущностей с наперед не определенными атрибутами на жестко предопределенную структуру данных. Построить т.с. абстрактную модель именно этой, с позволенья сказать, "предметной области". И по возможности просмотреть, а в идеале - _систематизировать_ варианты (буде такие будут предложены). Но варианты именно такого отображения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 17:35 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
4321 Alexey Rovdo А вот ниже уже выясняется, что и крейт-таблы все-таки допустимы и статические данные все-таки какие-то есть. Еще раз огромная просьба, свои домыслы и вымыслы обсуждать в в более приспособленном для этого месте. Тут сделана, признаюсь неудачная, попытка обсудить сугубо узкий вопрос - об отражении задачи о сохранении наперед не определенного набора сущностей с наперед не определенными атрибутами на жестко предопределенную структуру данных. Построить т.с. абстрактную модель именно этой, с позволенья сказать, "предметной области". И по возможности просмотреть, а в идеале - _систематизировать_ варианты (буде такие будут предложены). Но варианты именно такого отображения. Ну ладно. Гм. Атрибут хранить в блобе. Тип атрибута хранить в целочисленном или символьном поле. Наименование в символьном поле. Можно еще поле для ссылки на другой атрибут завести, для хранения древовидных структур. Но какая с этого радость? Надо все что можно из таких блобов вытаскивать (самое тупое - завести для значений атрибутов числовое поле, текстовое, дата, блоб - ну и хватит), а то по значению атрибута искать плохо. Тип атрибута говорит, из какого поля вытаскивать значение. Накладных расходов на хранение - очень мало (все эти поля по сравнению с блобами места много не займут). Вот мое такое предложение Одна-две таблицы (блобы все же лучше хранить в еще одной таблице). Типа, осмысленность предложения проверена практикой. Теоретическая красивость меня в данном случае больше не интересует :] Это все было про атрибуты объектов. Сами объекты (документы) я храню в еще одной таблице. Есть опять-таки поле для формирования дерева объектов (просто ссылка на родителя). Связи между документами я не храню и они меня не интересуют (за исключением упомянутого отношения parent-child) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 17:53 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
DogenP.S. По большому счету это все фигня, РСУБД внутри РСУБД. Имхо, может быть нужно только для построения перечней объектов с наперед неизвестным набором атрибутов. Ну да. ну да. Именно в первую голову для построения перечня. Но ничто же не мешает в атрибуты включить и принадлежность к внесенному нами же в классификатор (атрибутов) типу (не базовому, а в смысле классификатора). Нет? (Ну что-то в этом роде, если не вдаваться в организацию всех этих абстракций, пока еще туманную). И вот мы можем делать выборку (из перечня) не только по наличию у объекта атрибута со значением "Вася Пупкин", но по наличию атрибута "такой весь из себя специальный атрибут" (это тип его, атрибута, значица - т.е. тоже значеньице текстовое некое, вот только где... ) со значением "Вася Пупкин". Нет? И "Вася Пупкин" (значение такое) в других атрибутах нервно курит в сторонке, и не портит нам отчетность. Так? Вот и вопрос, как замесить это все покрасивше. Т.е. растолкать по некоторым абстракциям, отражающим всю эту кухню в нескольких базовых понятиях и связях между ними. Разные ж наверное реализации-то есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 18:01 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
4321 DogenP.S. По большому счету это все фигня, РСУБД внутри РСУБД. Имхо, может быть нужно только для построения перечней объектов с наперед неизвестным набором атрибутов. Ну да. ну да. Именно в первую голову для построения перечня. Но ничто же не мешает в атрибуты включить и принадлежность к внесенному нами же в классификатор (атрибутов) типу (не базовому, а в смысле классификатора). Нет? (Ну что-то в этом роде, если не вдаваться в организацию всех этих абстракций, пока еще туманную). И вот мы можем делать выборку (из перечня) не только по наличию у объекта атрибута со значением "Вася Пупкин", но по наличию атрибута "такой весь из себя специальный атрибут" (это тип его, атрибута, значица - т.е. тоже значеньице текстовое некое, вот только где... ) со значением "Вася Пупкин". Нет? И "Вася Пупкин" (значение такое) в других атрибутах нервно курит в сторонке, и не портит нам отчетность. Так? Вот и вопрос, как замесить это все покрасивше. Т.е. растолкать по некоторым абстракциям, отражающим всю эту кухню в нескольких базовых понятиях и связях между ними. Разные ж наверное реализации-то есть? "по наличию атрибута" у меня реализовано путем введения сущности "тип документа", а ей уже соответствует определенный набор атрибутов. Набирать заранее неизвестный набор атрибутов для каждого документа мне нет нужды (ну если приперло создать уникальный документ - создайте для него новый тип, сиречь набор атрибутов). Это дисциплинирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 18:07 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Ну там (в области анализа объектов, атрибутов, связей их) и правда где-то 7...10 сущностей, а вариантов как их связать - до фига. Что Вы их, все перечислить хотите??? Тут уж из задач надо исходить - для чего Вам такая схема нужна. "пока вы смотрите свой телевизор, инопланетяне через него трахают вам мозги" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 18:10 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Dogen "по наличию атрибута" у меня реализовано путем введения сущности "тип документа", а ей уже соответствует определенный набор атрибутов. Набирать заранее неизвестный набор атрибутов для каждого документа мне нет нужды (ну если приперло создать уникальный документ - создайте для него новый тип, сиречь набор атрибутов). Это дисциплинирует. Продолжаем колоться Вот уже прорезалась табличка "тип документа" (или даже "тип сущности"?) + табличка "атрибуты сущности" - т.е. это описатели структуры (уже "юзерской") сущности. По ним, я так понимаю, вы интермордс вырисовываете для заполнения экземляра "документа" заданного вида. Так глядишь и раскрутим на более подробное раскрытие. Сразу вопрос. "Тип документа" (сущности) у вас имеет какие либо иерархические причандалы? (Скажем просто - в качестве организации просмотра типов по дереву типов, а не для какого-нть наследия). И (только тихо! не к ночи помянуто): забирались вы в реализацию "наследования" структур одним "типом документа" (в вашей терминоЛогии) от другого или нет? (не в смысле выкопирования описателя, от одного id к другому, а в смысле именно "наследования". Тилько шопотом (боюсь опять выскочат объектщики, тьфу на них). И нужно ли оно в таких вещах? - Понятно, что запросы, если описатель собирается просмотром по "дереву", усложнятся (вернее могут - "ит депендс"), а обычная для БД реализация "наследия" в смыле выкопирования атрибутов от одного "типа сущности" к другому пусть и не съекономит места в описателях (и не даст жесткости, т.е. даст свободу не иметь "потомку" ненужного добра), но не заставит заморачиваться просмотром всех "предков"). Или "наследование" структур тоже вполне реализуемо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 18:41 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Ну нате вам вариант из практики. Привожу только один модуль. Под каждую сущность создается свой отдельный модуль (так что динамическое изменение набора сущностей здесь не пройдет). Статические атрибуты сущности Документы лежат в таблице d_Document. Динамические атрибуты перечислены в DocumentExtendedData, а их реальные значения лежат в других модулях (это могут быть и обыкновенные значения - целые, даты и т.п. - и другие сущности, имющиеся в базе). Таблицы ...Group... реализуют вспомогательный интерфейс для группировки сущностей и в рассматриваемом контексте о них можно забыть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 19:18 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Alexey RovdoНу нате вам вариант из практики. Ихде тут обьектная БД - атдельна, релясьонная -атдельна? Или это к другому чому пример? Alexey Rovdo Привожу только один модуль. Под каждую сущность создается свой отдельный модуль (так что динамическое изменение набора сущностей здесь не пройдет). Статические атрибуты сущности Документы лежат в таблице d_Document. Динамические атрибуты перечислены в DocumentExtendedData, а их реальные значения лежат в других модулях (это могут быть и обыкновенные значения - целые, даты и т.п. - и другие сущности, имющиеся в базе). Таблицы ...Group... реализуют вспомогательный интерфейс для группировки сущностей и в рассматриваемом контексте о них можно забыть. Саавем другое дело... ик. Вот выбрось статику из d_DOcument, ик, и подумай как в ней разместить все типы (динамически доопределяемые), ик, и вернемся к постановке задачи в ее начальном звучании, ик... А, кстати я не паааанимаю, зачем у тебя в таблицах пппа 2 ключа - глобальАйДи + еще что-тта. Или глобаль он того, он не совсем глобаль? И чего то я не всего то понимаю... ик. Наверное это у тебя АйДи таблицы так храницца? и чё, прям так в каждой записи одно и то же число и лежитттт. Ой саавсем я забблудился. Звиняй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 21:25 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
К объектным СУБД это не имеет никакого отношения. Действительно в некоторых таблицах по два идентификатора. Мне так было удобнее исходя из потребностей конкретной задачи. В принципе везде можно оставить исключительно GlobalID , переопределив соотвествующим образом и все Foreign key. И действительно в каждой таблице GlobalID дублирует соответствующее значение из таблицы d_Global (1-to-1 relation). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2005, 12:56 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Alexey RovdoК объектным СУБД это не имеет никакого отношения. Я так и понял. Не удержался от подначки на тему "так обычно и делают" (проскакивало выше по топику). - Заметим, в целом мысль крутится вокруг одной и той же схемки: описатели типов сущностей (для интерфейса т.е. для "интерпретации") - в данном случае, как я вижу -a_DocumentType|a_DocumentExtendedDataType + экземпляры сущностей - тут таблички d_xxx, собственно значения атрибутов-скаляров (у динамически доопределяемых атрибутов), как я вижу, вне схемки (видимо в общей для всех классов табличке значений?). Т.е. все трабла в том, что описатели типов разных сущностей не очень хотят сводится в одну реляционную структурку? Есть ли другие подходы к запихиванию динамически приписываемых атрибутов к сущностям? Alexey Rovdo Действительно в некоторых таблицах по два идентификатора. Мне так было удобнее ... Хозяин - барин. Я тоже щас репу морщу по поводу идейки отдублировать ключ в табличку (правда Fk, но тоже явное излишество). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2005, 19:40 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
4321 Dogen "по наличию атрибута" у меня реализовано путем введения сущности "тип документа", а ей уже соответствует определенный набор атрибутов. Набирать заранее неизвестный набор атрибутов для каждого документа мне нет нужды (ну если приперло создать уникальный документ - создайте для него новый тип, сиречь набор атрибутов). Это дисциплинирует. Продолжаем колоться Вот уже прорезалась табличка "тип документа" (или даже "тип сущности"?) + табличка "атрибуты сущности" - т.е. это описатели структуры (уже "юзерской") сущности. По ним, я так понимаю, вы интермордс вырисовываете для заполнения экземляра "документа" заданного вида. Так глядишь и раскрутим на более подробное раскрытие. Сразу вопрос. "Тип документа" (сущности) у вас имеет какие либо иерархические причандалы? (Скажем просто - в качестве организации просмотра типов по дереву типов, а не для какого-нть наследия). И (только тихо! не к ночи помянуто): забирались вы в реализацию "наследования" структур одним "типом документа" (в вашей терминоЛогии) от другого или нет? (не в смысле выкопирования описателя, от одного id к другому, а в смысле именно "наследования". Тилько шопотом (боюсь опять выскочат объектщики, тьфу на них). И нужно ли оно в таких вещах? - Понятно, что запросы, если описатель собирается просмотром по "дереву", усложнятся (вернее могут - "ит депендс"), а обычная для БД реализация "наследия" в смыле выкопирования атрибутов от одного "типа сущности" к другому пусть и не съекономит места в описателях (и не даст жесткости, т.е. даст свободу не иметь "потомку" ненужного добра), но не заставит заморачиваться просмотром всех "предков"). Или "наследование" структур тоже вполне реализуемо? Типы документов я наследовать один от другого не собираюсь, поскольку в нашем случае это будет полезно, но трудозатраты вряд ли окупятся. В будущем - может быть. Но честно говоря, намного проще написать процедуру копирования набора атрибутов одной сущности в новый такой набор. Подробнее уже некуда. Следите за рекламой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2005, 09:33 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Dogen Типы документов я наследовать один от другого не собираюсь, поскольку в нашем случае это будет полезно, но трудозатраты вряд ли окупятся. В будущем - может быть. Разумный скепсис, но, с другой стороны, отсутствие опыта [попыток реализации] - это отсутствие опыта. Т.е. оценка трудозатрат не подкреплена реальными шишками от реальных грабель. - Я как раз на развилке в принятии решения. С одной стороны - казалось бы упрощается обновление наследуемых атрибутов при их редактировании в предке. Но только тех, которые не поимели конкретных значений в потомках (тут возникает проблема разруливания по логике - какие-то атрибуты должны иметь возможность перекрывать в потомке тип, заданный в предке, какие-то нет. Какие-то действия пользователя по настройке классификации типов _должны_ а) однозначно пытаться сменить тип атрибута и во всех потомках сущности ("CASCADE"), б) - какие-то только в тех, которые еще "не перекрыты явно" (не поимели своих строк в описателе) или не поимели _значений_ унаследованного типа (в этом случае - нужно будет "перекрывать" ("теневым образом" - разве что сообщив об этом) атрибуты потомков в процессе редактирования атрибута предка, в) какие-то должны иметь влияние только на текущий уровень классификации (т.е. все потомки не должны наследовать этого атрибута). Все то же самое, как легко заметить, можно и сделать с помощью выкопирования описателя объекта в его детей (и поиметь те же вопросы "теоретического" характера при переопределении атрибутного состава предка). DogenНо честно говоря, намного проще написать процедуру копирования набора атрибутов одной сущности в новый такой набор. чего проще - всобачить триггер на заимствование аттрибутов при создании потомка (+- для полной логической завязки - триггер на редактирование предка, но тут - сразу вопросы к логике - т.е надо оперделиться "что мы хотим поиметь"). Кстати, в некоем смысле то, что привел Alexey Rovdo описывает (частично) то, о чем говорите и Вы? Т.е. приблизительно та же завязка между типами и экземплярами? Правда самих значений ("расширенных") атрибутов я у него на схеме не вижу. Кажется - только ссылки? 2Alexey Rovdo: Смотрю я на вашу схемку, и возникают у меня вопросы: 1. За что отвечают поля IsChilde и IsReplicated? Какой в них физ смысл (что за абстракции или логические связки промеж оных в них порылись?) 2. За что отвечает поле d_DocumentExtendedData.DataObjectID (d_DocumentExtendedData.Type - это кааца Fk к ID из aDoc....DataType) ? (если это дубликат d_Document.Type - то это то, о чем я думаю? Т.е. денормализация с целью поиметь нужные индексы в d_DocumentExtendedData ?) Или это ссылка на реализацию атрибута в какой-нть табличке значений? (если вы его находите не через GlobalID) 2.1 (того же типа вопрос и по ObjectTypeID) 3. Ну и т.п. __ 2All: не видно особых альтернатив к набору абстракций, покрывающих "предметную область" (и даже к реализации). Пока только такой набор (грубо): 1. Сущности 2. Их сотав (описатели) 3. Экземпляры сущностей +- 4. (вероятно по вкусу) - дублирование всего набора на сущности "блатного" типа "атрибут". Нешто никто не делал иначе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2005, 11:43 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
4321 Dogen Типы документов я наследовать один от другого не собираюсь, поскольку в нашем случае это будет полезно, но трудозатраты вряд ли окупятся. В будущем - может быть. Разумный скепсис, но, с другой стороны, отсутствие опыта [попыток реализации] - это отсутствие опыта. Т.е. оценка трудозатрат не подкреплена реальными шишками от реальных грабель. - Я как раз на развилке в принятии решения. С одной стороны - казалось бы упрощается обновление наследуемых атрибутов при их редактировании в предке. Но только тех, которые не поимели конкретных значений в потомках DogenНо честно говоря, намного проще написать процедуру копирования набора атрибутов одной сущности в новый такой набор. чего проще - всобачить триггер на заимствование аттрибутов при создании потомка (+- для полной логической завязки - триггер на редактирование предка, но тут - сразу вопросы к логике - т.е надо оперделиться "что мы хотим поиметь"). 2All: не видно особых альтернатив к набору абстракций, покрывающих "предметную область" (и даже к реализации). Пока только такой набор (грубо): 1. Сущности 2. Их сотав (описатели) 3. Экземпляры сущностей Нешто никто не делал иначе? А кому оно надо иначе? Ведь этим люди пользоваться будут, а нашим среднестатистическим людЯм такие навернутые концепции как иерархии типов документов не то что не нужны, а объяснить может быть сложно :)) С другой стороны, ну сделаю я такую иерархию, когда кому-то она реально понадобится. На все остальные функции это никак не повлияет, повлияет только на процесс создания/реадктирования типов документов. Что делается, если Вы реально эксплуатировали подобные системы, далеко не каждый день. Касательно разумного скепсиса - это в настоящее время деньгами определяется. Можно много чего наизобретать, но зачем изобретать то что никому еще не было нужно. Проще заранее подумать о возможном расширении структур данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2005, 12:47 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
IsChild Определяет тип атрибута (не забываем, что атрибутом может быть любая сущность), с точки зрения его самостоятельности. Есть атрибуты зависимые и независимые. Зависимые атрибуты (сущности) имеют "хозяина" (d_Global.Owner_id). Зависимые атрибуты (сущности) удаляются вместе со своим "хозяином". Поле IsChild анализируется только в момент вставки нового атрибута. После того, как атрибут (сущность) уже оказался в базе, определение его зависимости/независимости уже происходит по значению d_Global.Owner_id. Замечание: все, что лежит в таблицах с именами a_... фактически имеет отношение к бизнес-логике, а не к самим данным. IsReplicated Задает уникальность атрибута для каждого документа. Т.е. должен ли документ иметь только один такой атрибут или их может быть множество (одинаковые имена и типы атрибутов, но возможно разные значения). IsHeritable В данной схеме нет, но в отдельных случаях тоже использовал. Если объекты могут объединяться в иерархию (например, в таблице d_Document есть поле parent_id, указывающее на документ-родитель), то атрибуты родительского объекта могут считаться и атрибутами всех принадлежащих им сущностей-потомков, а могут и не являться. Поле IsInherited как раз и определяет этот факт. Разумеется есть две стратегии поведения, которые выше уже и были упомянуты. 1-я - это строить схемы и писать процедуры для того, чтобы вытягивать сами значения наследуемых атрибутов из сущностей-родителей. 2-я - при создании сущностей-детей копировать все наследуемые значения в соответствующие атрибуты именно этих сущностей. Второй способ на мой взгляд лучше с точки зрения быстродействия выборки и обработки запросов на чтение. Первый способ сокращает издержки при записи и изменении значений атрибутов. Поле d_DocumentExtendedData.DataObjectID указывает на сущность, которая является значением атрибута. А ObjectTypeID ограничивает возможный выбор таких сущностей только одним типом (бизнес-логика). Чтобы было чуть понятнее приведу еще один модуль этой базы (простейшие сущности - параметры). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2005, 13:15 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Посмотрю еще. А пока: Alexey Rovdo IsChild Определяет тип атрибута (не забываем, что атрибутом может быть любая сущность), с точки зрения его самостоятельности. Есть атрибуты зависимые и независимые. Зависимые атрибуты (сущности) имеют "хозяина" (d_Global.Owner_id). Зависимые атрибуты (сущности) удаляются вместе со своим "хозяином". Поле IsChild анализируется только в момент вставки нового атрибута. После того, как атрибут (сущность) уже оказался в базе, определение его зависимости/независимости уже происходит по значению d_Global.Owner_id. Немного не допонял. т.е. вы обрабатываете следующую ситуацию (для простоты считаем что речь идет исключительно о "документах"): "Документ" + "Приложение к нему". (Когда приложение - тоже документ, но не живущий без "хозяина", и удаляемый вместе с ним. Причем оно может входить не более чем в один документ (иначе как рулить удалением? считать ссылки?). Если же ссылочный(сущностный) атрибут (некоего "хозяина") может входить во что угодно (справочный - например контрагенты с их структурой) то он неЧайлд? Или же речь о более широком классе случаев? (например мы хотим иметь разные "представления" сущности. Если мы поленились выделить их в нечто выделенное (отличное по хранению от сущностей), то надо помнить, как долго живет данное "представление"? (оно при этом не "приложение" а "другое лицо" той же сущности, и не может входить в более чем одно отношение-связь "хозяин"-"представление" - в точности как и в случае с приложением)? Alexey Rovdo Замечание: все, что лежит в таблицах с именами a_... фактически имеет отношение к бизнес-логике, а не к самим данным. В моем случае это "логика интерпретирования вообще". Т.е. имеет прямое отношение к хранению типов и ("хранению") их интерпретации. Alexey Rovdo IsReplicated Задает уникальность атрибута для каждого документа. Т.е. должен ли документ иметь только один такой атрибут или их может быть множество (одинаковые имена и типы атрибутов, но возможно разные значения). С этим ясно. Что-то в этом смысле мыслилось. Правда в некоторых случаях есть "предельная емкость". Alexey Rovdo IsHeritable В данной схеме нет, но в отдельных случаях тоже использовал. Если объекты могут объединяться в иерархию (например, в таблице d_Document есть поле parent_id, указывающее на документ-родитель), то атрибуты родительского объекта могут считаться и атрибутами всех принадлежащих им сущностей-потомков, а могут и не являться. Поле IsInherited как раз и определяет этот факт. Разумеется есть две стратегии поведения, которые выше уже и были упомянуты. 1-я - это строить схемы и писать процедуры для того, чтобы вытягивать сами значения наследуемых атрибутов из сущностей-родителей. 2-я - при создании сущностей-детей копировать все наследуемые значения в соответствующие атрибуты именно этих сущностей. Второй способ на мой взгляд лучше с точки зрения быстродействия выборки и обработки запросов на чтение. Первый способ сокращает издержки при записи и изменении значений атрибутов. Вопрос возникает при перемещении по иерархии. Какие вообще перемещения считать допустимыми? Зависит ли признаки допустимости перемещений от типов сущностей. Есть ли у кого опыт анализа ситуаций в этой области? Или все предпочитают не заморачиваться данным вопросом, запретив перемещение типов в классификаторе (при наличии "наследования" атрибутов, в любом из предложенных видов) Alexey Rovdo Поле d_DocumentExtendedData.DataObjectID указывает на сущность, которая является значением атрибута. А ObjectTypeID ограничивает возможный выбор таких сущностей только одним типом (бизнес-логика). Чтобы было чуть понятнее приведу еще один модуль этой базы (простейшие сущности - параметры). Ну где-то так я и думал (т.е. даже для атрибута "простого" типа вы отсылаете его в требуемую глобальную таблицу(ы) значений, кстати, в силу зависимости таблиц от типов, запрашивание величин атрибутов (или их интерфейсов - для сущностных) происходит динамически - ищем таблицу (поле) по типу объекта + ищем интерфейс по тем же признакам? Имена втавляем в строки запросов и т.п...?). Хотя было сомнение. 2Dogen Странно таки что нет других абстрактных схем. Головы то разные. Или у всех испорчены реляционным взглядом на вещи? (проскакивали тут намеки на нечто иное в принципе - какая то даже предикативная арифметика, казалось бы. Ихде они авторы?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2005, 14:20 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
4321 2Dogen Странно таки что нет других абстрактных схем. Головы то разные. Или у всех испорчены реляционным взглядом на вещи? (проскакивали тут намеки на нечто иное в принципе - какая то даже предикативная арифметика, казалось бы. Ихде они авторы?) Бритва Оккама, знаете ли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2005, 14:25 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
4321Спасибо за ответы. Посмотрю еще. А пока: Alexey Rovdo IsChild Определяет тип атрибута (не забываем, что атрибутом может быть любая сущность), с точки зрения его самостоятельности. Есть атрибуты зависимые и независимые. Зависимые атрибуты (сущности) имеют "хозяина" (d_Global.Owner_id). Зависимые атрибуты (сущности) удаляются вместе со своим "хозяином". Поле IsChild анализируется только в момент вставки нового атрибута. После того, как атрибут (сущность) уже оказался в базе, определение его зависимости/независимости уже происходит по значению d_Global.Owner_id. Немного не допонял. т.е. вы обрабатываете следующую ситуацию (для простоты считаем что речь идет исключительно о "документах"): "Документ" + "Приложение к нему". (Когда приложение - тоже документ, но не живущий без "хозяина", и удаляемый вместе с ним. Причем оно может входить не более чем в один документ (иначе как рулить удалением? считать ссылки?). Если же ссылочный(сущностный) атрибут (некоего "хозяина") может входить во что угодно (справочный - например контрагенты с их структурой) то он неЧайлд? Или же речь о более широком классе случаев? (например мы хотим иметь разные "представления" сущности. Если мы поленились выделить их в нечто выделенное (отличное по хранению от сущностей), то надо помнить, как долго живет данное "представление"? (оно при этом не "приложение" а "другое лицо" той же сущности, и не может входить в более чем одно отношение-связь "хозяин"-"представление" - в точности как и в случае с приложением)? Первое. Но в принципе и на child-сущность можно ссылаться откуда угодно (у нее ведь есть свой GlobalID). Ее зависимость от родителя проявляется только при удалениях. Нельзя удалить родителя без удаления всех его "детей". Родитель разумеется всегда только один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2005, 14:28 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
а вот вам еще для затравки А как вам решение на основе XMLType ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2005, 14:55 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Dogen 4321 2Dogen Странно таки что нет других абстрактных схем. Головы то разные. Или у всех испорчены реляционным взглядом на вещи? (проскакивали тут намеки на нечто иное в принципе - какая то даже предикативная арифметика, казалось бы. Ихде они авторы?) Бритва Оккама, знаете ли. Думаю над бритвой, и что же вона поодхряпала. Сделал запрос по паре [ОТНОШЕНИЕ ИНТЕРФЕЙС] на форуме. Нашел интересные ссылки (смотрел когда-то, но к переосмыслению - не вред) . Итак, стандартное конструирование одна "сущность" - одна таблица (т.е. одно ОТНОШЕНИЕ и один, связанный с ней ИНТЕРФЕЙС). В том случае если атрибуты всех сущностей ничем не выделяются с т.зрения задачи и полностью характеризуются именем и значением, (т.е. - "типовой перечень", как в вашем случае), то требование отдельного интерфейса для каждой сущности избыточно - т.к. все отношения вырождаются в отношение "сущность-атрибут". И хранение таких "сущностей" в отдельных таблицах (в "специализированных отношениях") - избыточно. Т.е. как правило в наших "конструкторах" реализуются именно такие подслучаи. Нет? Вопрос: есть ли промежуточные случаи задачи - когда хранить каждую сущность в отдельной таблице (отношении) еще избыточно, но перечень (и тип) отношений (и интерфейсов к ним) уже не покрывается рассмотренным выше велосипедом из единственного отношения "сущность-атрибут"? (подсхема ...Extended.. у Alexey Rovdo) Есть ли реализации, кому они встречались? Каков набор(ы?) базовых абстракий в этом случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2005, 12:52 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
Что толку выдумывать непромокаемый порох в отрыве от прогнозирования технических характеристик конкретных систем?.. Ну можно запихать все в одну таблицу, и сущности, и атрибуты, ну и что это в итоге даст? Граф с вершинами-сущностями и направленными (... является тем-то для того-то ...) связями между ними? А зачем и кому это нужно? "пока вы смотрите свой телевизор, инопланетяне через него трахают вам мозги" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2005, 13:07 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
По ссылкам нашел такой вариант: Кроме _отношения_ сущность-атрибут для строго типизированных атрибутов , реализованного в наборе таблиц (по числу типов - как и предлагалось, правда ссылка интересна отдельной реализацией перечислений как _базового_типа_ , правда членами перечислений, судя по всему, имеют только строковое наименование и ничего более), вводится понятие "СВЯЗЬ" (т.е. исключительно "бинарное" _отношение_ сущность-сущность, но с заданным типом - т.е., на деле, - "тренарное отношение" сущность<->сущность<->тип_связи(специализированная сущность)). Как это обыгрывается (в т.ч. - в интерфейсе) т.е. характеризуется ли "тип_связи" чем-то кроме наименования- непонятно. 2 Dogen: можно запихать. Можно не запихивать. Пока не пойму, как это связано с классом задач (т.е. как(какой) "минимализм" в предметной области делает оправданным тот или иной подход к построению схемы данных) - не отвечу на Ваш вопрос. А для понимания и хочется охватить набор возможных решений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2005, 15:35 |
|
||
|
Систематизируем велосипеды?
|
|||
|---|---|---|---|
|
#18+
4321По ссылкам нашел такой вариант: Кроме _отношения_ сущность-атрибут для строго типизированных атрибутов , реализованного в наборе таблиц (по числу типов - как и предлагалось, правда ссылка интересна отдельной реализацией перечислений как _базового_типа_ , правда членами перечислений, судя по всему, имеют только строковое наименование и ничего более), вводится понятие "СВЯЗЬ" (т.е. исключительно "бинарное" _отношение_ сущность-сущность, но с заданным типом - т.е., на деле, - "тренарное отношение" сущность<->сущность<->тип_связи(специализированная сущность)). Как это обыгрывается (в т.ч. - в интерфейсе) т.е. характеризуется ли "тип_связи" чем-то кроме наименования- непонятно. 2 Dogen: можно запихать. Можно не запихивать. Пока не пойму, как это связано с классом задач (т.е. как(какой) "минимализм" в предметной области делает оправданным тот или иной подход к построению схемы данных) - не отвечу на Ваш вопрос. А для понимания и хочется охватить набор возможных решений. Путь к пониманию свой у каждого :) Вы уж тогда базу знаний создавайте по построению структур данных. Это многим было бы интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2005, 15:57 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1546016]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
87ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 511ms |

| 0 / 0 |
