Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Как известно, у каждого человека в голове есть свои тараканы. Вот, например, вчера я ехал в автобусе с мужиком, который неожиданно наехал на ни в чем не повинную девушку с фразой "фигли ты лыбишся, у меня трое ртов, довели страну". Какая тут связь - никто не понял, но он буквально бился в истерике. Мужику лет 40 на вид средний класс, инженер, аккуратная светлая одежда, часы, портфель.... Ни в жисть не подумаешь, что такое может быть. Да что там вчера!... Пройтись здесь по соседним топикам, так там эти тараканы тоже усов понавысовывали. У кого незаметных, у кого то аж за версту видно и уже не справиться с ними. Воооооот..... К чему я это всё..... Есть и у меня пара таких тараканов в голове. Я, кстати, про них давеча упоминал, обещался как вырастут - на публику вывести. Вывожу. Тут они родные, смотрите. Только чур сразу не пинать - критики, уличенные в неознакомлении, будут жестонко игнорироваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2005, 18:05 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
манифестирование это конечно хорошо, а почему нет ни слова о существующих объектно-реляционных настройках, типа ejb, hibernate, jdo итп? библиография у вас там какая-то мутная и старая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2005, 18:18 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
"Нельзя не отметить, что между моделируемыми объектами и описывающим их множеством значений отношений существует сложная связь: данные о любом объекте могут храниться в разных переменных отношений и любая переменная отношения может хранить данные о разных объектах." На мой взгляд, впрочем это Вам хорошо известно, эта фраза - заблуждение. Во-первых, потому что она не может рассматриваться в отрыве от двух концепций: а) связей между "моделируемыми объектами" (Вы же нигде ясно не говорите, что связей не существует); б) нормализации схемы БД. Во-вторых, потому что без этих двух концепций она (фраза) относится к некоторой субъективной схеме: человек - это объект, а почки и кости мы будем хранить в разных отношениях. Получается, что кость - это не объект... Мне кажется, не хорошая предпосылка для формализации аспектов НРМ... Но, конечно, буду читать и перечитывать еще много раз... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2005, 00:22 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Я не говорю про связи между самими объектами. Я говорю про связь(соотвествие, соотношение) между моделируемыми объектами(с одной стороны) и переменными отношений хранящими данные про эти объекты(с другой стороны). И наасчет нормализации это верно в любом случае. Даже когда схема РБД будет совсен ненормализована то и в этом каждому объекту будет соответсвовоать множество значений отношений. Здесь просто надо понимать, что одно знанчние - это тоже множество, и что это значение может быть подмножеством другого значнеия, описываещего предметную область в целом. Но то же самое верно и при любой степени нормализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2005, 10:08 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Я, конечно, понимаю, что в цитируемом абзаце речь идет о "связи" (точнее было бы сказать "соответствии", чтобы не путаться) между объектами реального мира и значениями отношений РМД. И подчеркиваю, что говорить о таком соответствии, не принимая во внимание связи между объектами реального мира и технологию нормализации, не корректно. Короче говоря, я продолжаю утверждать, что каждое отношение представляет либо объект, либо связь между объектами. Конечно, Вы можете, например, хранить каждое свойство (атрибут, характеристику) объекта в отдельном отношении. Но, во-первых, не ради же доказательства правильности своего взгляда на "соответствие". А, во-вторых, и в этом случае можно было бы сказать, что свойство (атрибут, характеристика), на самом деле, - cамостоятельный объект... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2005, 18:12 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Я не собираюсь впадать в дискусии по поводу объектов, сущностей, связей и т.п субъективных вещей. Как показывает опыт, в спорах по этому поводу мало смысла. По большому счету, все что я делаю в НРМ, так это... 1)...предлагаю достаточно простую систему типов.(С одной стороны, она ИМХО достаточно выразительная и сравнима в этом с традиционными ОО-языками. С другой стороны она сохраняет черты систем базирующихся на РМД.) 2) ...предлагаю способ ее реализации Причем (специально для вас ув.АЛ!) говоря про РМД, я говорю про рел модель данных , а не предметной области!. Другими словами я воспринимаю РМД как модель некого ассоциативного устройства хранения данных, как модель памяти, если угодно. Ни о какой предметной области на данном этапе речи ни идет. Но тот факт, что мы помещаем данные в эту память, означает, что мы должны так или иначе принять законы, по которым эта память работает. А тот факт, что мы манипулируем этими данными, означает что мы должны принять операции РМД. Вопрос в том, как все это принимать. Можно принимать их напрямую. Это начальный этап. Такой же этап был в начале использования ОЗУ(это другой вид памяти - адресуемый). Данные, хранящиеся в памяти копьютера, описывались в том же виде в каком они хранились - то есть как отдельные переменные простейших типов. Потом появились структуры, потом объекты - т.е то, что позволило "поднять уровень абстракции". Но ОЗУ то при этом не изменилоть! Все эти структуры, обьекты, "высокий уровень абстракции" реализуются програмно, их описание транслируется в описание данных всё в тех же терминах ОЗУ. Сейчас с РСУБД дела обстоят похожим образом. Есть система хранения данных, где они организованы в виде, задаваемом РМД, и эта система используем напрямую. Однако (и я это показываю) на ее основе можно построить систему с еще более высоким "уровнем абстракции", при этом сохранив возможности базовой системы хранения. Насколько этот уровень абстракции высок? Позволит ли он адекватно отобразить все ваши "объекты", "сущности", "связи" и т.п? Я не знаю - это Вам решать. Поэтому я прошу - воспринимайте это как описание системы (этакий теоретический user manual) и решайте, насколько она соответсвует Вашим конкретным задачам. При этом я прошу учесть, что речь идет о соотвествии в таких труднообъяснимых вещах как выразительность, адекватность и т.п. Ни о каких библиотеках, "настройках, типа ejb, hibernate, jdo итп", быстродействиях, протоколах и платформах речи пока не идет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 13:14 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Пытаюсь понять, чем НРМ отличается от объектной надстройки в стандарте SQL, и реализованных в ORACLE (для примера)? Кортежные типы ~~ object type. В НРМ разрешены только скаляры (включая OID) как элементы кортежа. Типы-отношения ~~ nested table Классы ~~ таблицы с соответсвующими компонентами. 1) В SQL нет понятия Локальный ключ, 2) SQL не требует обязательного OID для таблицы. Что еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 16:58 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ModelR Да ну не смешите. Я буквально во введении говорю о том, что НРМ поддерживает "Третий манифест" в его критике подхода, ставящего в соответсвие классам таблицы таблицы и, следственно, объектам кортежи - то есть этот вариант не канает из принципиальных, озвученных Дейтом, соображений. ИМХО беда SQL3 в том, что он продолжает настаивать на явном использовании таблиц, и пытается опять же явно привязывать описание данных(сложных данных) к таблицам. В НРМ есть две части - в первой я предлагаю некий подход к описанию данных (как это выглядит, когда мы это будем использовать), во второй я предлагаю способ реализации этого подхода. В первой части вообще нет таблиц и пользователю не нужно даже этим словом заморачиваться. Таблицы РСУБД появляются во второй части, но они являются частью реализации. Пользователь R*O-системы не думает о них (точно также как программист С++ не думает об детальной организации данных в ОЗУ).Если Вы про эти таблицы, то в них один и тож же OID может присутсвовать во многих кортежах многих разных таблиц, причем это натуральные таблицы со многими аргументами. Подразумевается, что R*O-система собирает эти кортежи и представляет их для пользователя в виде сложного объекта. Например, объект отгрузка будет собираться из кортежа одной таблицы, содержащего заголовок, и многих кортежей другой таблицы, содержащих данные об отгружаемом товаре... конечно если компоненты этого объектного типа реализованы как хранимые, а они могут быть реализован и по другому, и в этом случае всё будет еще интересней (один кортеж может хранится а другой вычисляться или как то еще). Понимаете в чем ситуация? Отгрузка - это сложный объект. Идя на всякие ухищрения SQL3 по сути задается вопросом - как такого рода сложные объекты можно запихнуть в одну единственную таблицу (или привязать к этой таблице, или сделать видимость, что он в таблице)? В общем то я их понимаю: им кажется, что это может быть удобным для пользователя (например, не нужно собирать данные их разных таблиц). С другой стороны, им кажется, что это позволяет называться системе реляционной ("бла-бла, таблицы, РМД"... хотя реально эти ухищрения идут вразрез с основными положениями РМД - именно про это и говорит Дейт). Но НРМ задается другим вопросом - а нужно ли вообще такой сложный объект в одну таблицу запихивать? И получается, что для того , что бы использовать РМД, явно определяемые таблицы (переменные отношения) вообще не нужны. И пользователю удобно - он просто описыват моделируемые объекты. ...Кстати, классов в НРМ тоже нет (это даже явно указывается) Есть типы (объектные и значимые), а объектным типам соответсвует набор глобальных переменных. Здесь можно провести аналогию с моделью ODMG, где тоже нет классов, а есть есть типы (объектные и литеральные) и у объектных типов могут быть экстенты (множество ссылок на объекты данного класса). Однако глобальные переменные НРМ являются реляционными (R-переменные - т.е. переменные отношений) и, в отличии от экстентов, содержат не только OID(т.е. ссылки) но и значения компонентов объектов. Кроме того, для каждого без исключения объектного типа может существовать много разных R-переменных (хотя бы одна). Наконец экстенты - это некое необязательное програмное образование, а R-переменные они ...ммм...достаточно обоснованны. Это все кажется сложным, но..... посмотрите примеры. Дело в том, что (в отличии от той же модели ODMG) не смотря на разделение типов(объектных) и переменных, для них используются одни и те же имена (и это одна из фишек НРМ). То есть, когда пользователь определил структуру объектов, ему уже не надо отдельно взятым образом париться с какими-то коллекциями, экстентами и т.п. вещами - они уже есть система создала их и пользователь может их юзать. На самом деле там все это написано. Если что то не понятно, попытайтесь смотреть примеры и спрашивайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 18:45 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Хорошо, я буду воспринимать "это как описание системы"... И когда разберусь как на уровне ассоциативного устройства хранения данных поддерживаются "связи" между "данными" (и как они соответствуют "связям" между ??? на более высоком "уровне абстракции") задам, конечно, дополнительные вопросы (если не пойму), или прокомментирую (если пойму, или подумаю, что понял...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 20:00 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene ставящего в соответсвие классам таблицы таблицы и, следственно, объектам кортежи - то есть этот вариант не канает Зачем же и не канает? Поди плохо? Если смотреть через Сущность Реального мира: В РМД она в виде кортежа. В ОО в виде Объекта + кое-что(идетификатор, методы). Теперь в ОРМД тоже кортеж, но тоже теперь с тем же что у ОО. схема отношения - сложный тип. Я не отрицаю и втрого - по Дейту (тип атрибута - объектный тип). В Оракле оба варианта. U-gene И получается, что для того , что бы использовать РМД, явно определяемые таблицы (переменные отношения) вообще не нужны. Вы уверены, что это все-таки РМД, а не что-то другое? U-gene Кстати, классов в НРМ тоже нет (это даже явно указывается) Почему Вы думаете, что это кстати? U-gene Есть типы (объектные и значимые), а объектным типам соответсвует набор глобальных переменных Чем объектные типы отличаются от классов? А как же локальные переменные? Вы им не придаете совсем значения? И что это за набор такой? U-gene Это все кажется сложным Не то слово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 22:35 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 vadiminfo Перед тем как задавать столько вопросов, я таки попрошу Вас прочитать хотя бы первые пятнадцать страниц. А то по самому тексту ни одной мысли или вопроса. Ув. АЛ это понял. Чего и Вам желаю. А то Ваша фраза... vadiminfoЕсли смотреть через Сущность Реального мира: В РМД она в виде кортежа. В ОО в виде Объекта + кое-что(идетификатор, методы....выдает, что Вы не то что текст, но даже мои посты здесь не очень внимательно читаете. Я еще раз(специально для Вас) повторяю - я не хочу рассуждать о "сущностях реального мира". Четырьмя постами ранее я выдал достаточно большой пост на эту тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 10:31 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
ModelR Классы ~~ таблицы с соответсвующими компонентами. автор...Кстати, классов в НРМ тоже нет (это даже явно указывается) Есть типы (объектные и значимые), а объектным типам соответсвует набор глобальных переменных. Здесь можно провести аналогию с моделью ODMG, где тоже нет классов, а есть есть типы (объектные и литеральные) и у объектных типов могут быть экстенты (множество ссылок на объекты данного класса). Однако глобальные переменные НРМ являются реляционными (R-переменные - т.е. переменные отношений) и, в отличии от экстентов, содержат не только OID(т.е. ссылки) но и значения компонентов объектов. Кроме того, для каждого без исключения объектного типа может существовать много разных R-переменных (хотя бы одна). Наконец экстенты - это некое необязательное програмное образование, а R-переменные они ...ммм...достаточно обоснованны. Да, точнее конечно сказать R-переменные НРМ ~~ relvar РМД ~~ таблицы SQL. Существенно однако, что R-переменные НРМ, могущие принимать значения, объявляются именно предложением CREATE CLASS (Кстати если нет классов то почему CREATE CLASS? ) аналогично CREATE TABLE в SQL, а не объявлением кортежных типов и типов-отношений. В этом аналогия. Далее, "запихнуть в одну таблицу" - нет, ORACLE nested table физически размещается в отдельной таблице. Object type - да, в той же таблице, однако учитывая, что это ровно одна строка для объекта НРМ, то разница также не существенная. Поскольку DML описан очень скупо, то реально сравнить тяжело. Декларации и ссылки на манифесты помогают слабо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 10:48 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ModelR Вы напрасно пытаетесь сравнить R-переменные с таблицыми SQL3. Если уж вам так приспичило сравнивать , то это не таблица а, скорее, вид причем то, как этот вид вычисляется, определяется реализацией компонентов о-типа. Например, если в процессе наследования о-типа реализация компонента была изменена, то значение R-переменной будет вычислятся по новому. Однако весь ранее определнный функционал, который так или иначе манипулировал с этой R-переменной, изменений не потребует(что подразумевает позднее связывание). ИМХО это средствами SQL3 никак не сделать. Посмотрите еще раз пример в первой части от начала до конца. Там есть все - от описания типов, до наследования с переопрелделением компонентов. Побробуйте сделайте то же на SQL3 - это было бы очень интересно, но мне кажется у Вас это не получится (это будет как преобразование С++ программы на язык С). Насчет CREATE CLASS? Есть какая то устоявшаяся терминология, а поскольку пользователь, объявив и описав объектный тип, сразу же может манипулирвать его R-переменными, то для него это выглядит в точности как класс. Поэтому я оставил CREATE CLASS. авторДалее, "запихнуть в одну таблицу" - нет, ORACLE nested table физически размещается в отдельной таблице Физически то да, но нафига это логически впихивать в одну таблицу? Нафига это таблица вообще нужна? Можно без нее - ИМХО даже нужно. авторПоскольку DML описан очень скупо, то реально сравнить тяжело. Я абсолютно согласен. DML в НРМ гораздо менне сложен ,чем DML в SQL3. Однако я готов спорить, что в выразительных способностях НРМ мощнее SQL3. Насколько я понял, DDL вам более-менее понятен. А DML ИМХО действительно прост: *Cоздать/изменить/уничтожить класс, *Cоздать объект, уничтожить объект/множество объектов *Изменить объект/множество объектов, что подрузамевает --вызов методов(в том числе для множества объектов) --прямое использование INSERT|UDEATE|DELETE(использую термины SQL) применительно к компонентам-атрибутам объектов *Групповой доступ - фактически тот же SELECT по к R-переменным + операции выборки объектов и раскрытия ссылок. Наверное все. Опять же - в примерах практически все это есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 12:44 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Может быть я недостаточно внимательно прочел, но я не заметил - почему вы выбрали в качестве основы именно РМД (так как по-сути такой транслятор можно сделать и вокруг другой модели данных). Т.е. какие черты РМД вы считаете полезными и в НРМ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 14:08 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene ....выдает, что Вы не то что текст, но даже мои посты здесь не очень внимательно читаете. Я еще раз(специально для Вас) повторяю - я не хочу рассуждать о "сущностях реального мира". Четырьмя постами ранее я выдал достаточно большой пост на эту тему. Так я тоже не о них. Речь шла о том, что соответствие объекта кортежу может быть оправдана тоже. Лучше перекрывает возможности ООСУБД в конкуренции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 15:14 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
авторРечь шла о том, что соответствие объекта кортежу может быть оправдана тоже. Я не вижу проблемы. Может здесь просто термнологическая путаница? ИМХО кортеж так или иначе подразумевает значение отношение, частью которого он является. Мне же, как я сказал, попытки привязать данные к таблицам кажутся определнно избыточными. ЧТо яздесь подразумеваю под избыточностью. Напрмер, как это сделано в ORACLE. Там определяешь тип, а потом для типа создаешь таблицу, строки котрой являются экземплярами этого типа. Я уж не говорю про то, что подход "строка = объект" является ущербным, но, позвольте, а что, описав тип, мы разве уже не подразумеваем, что в системе будет сущекствовать множество экземпляров этого типа? Нафига нам это множество еще раз явно оформлять? И, конечно же, структура объектов может быть достаточно проста, что бы в точности соответсвовать структуре кортежей. Кстати, в этом случае, классу будет соответсвовать всего одна R-переменная (в НРМ, в примере это класс Article). То есть этот простой частный случай является фактически полноой калькой кортежей, которые соответсвуют объектам, и таблицам, служащим для их хранения. Просто мы явно таблицу не определяем, пользуемся R-переменной данного объекного типа, и, что немаловажно, ИМХО называем вещи своими именами (объект-объектом). Но это только частный, самый простой случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 16:23 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 funikovyuri авторТ.е. какие черты РМД вы считаете полезными и в НРМ? Если рассматривать РМД как модель данных (а не предметной области) то наверное все. Теперь бы определимтся что такое черты РМД:) В любом случае, ничего такого в РМД, что было бы вредным, я не нахожу. автортак как по-сути такой транслятор можно сделать и вокруг другой модели данных Транслятор можно сделать вообще вокруг всего, что имеет язык управление. РМД - она формальная и работает с множествами. Соответсвенно, к некоторым аспектам этой самой трансляции можно подойти также формально, и показать, что операцию(или последовательность операций) определённую для одного объекта, можно преобразовать в операцию (последовательность операций) выполняемую сразу для множества объектов, чему собственно первая половина второй части и посвящена. И потом. Какая-такая другая модель? Я,конечно ,имею в виде формальную модель? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 16:39 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Если рассматривать РМД как модель данных (а не предметной области) то наверное все. Т.е. не как основу для проектирования? И потом. Какая-такая другая модель? Я,конечно ,имею в виде формальную модель? Формальных конечно же нет, зато неформальных хоть... PS> пока изучаю и привыкаю к терминологии, поэтому ногами сильно не пинать... интересно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 17:28 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Напрмер, как это сделано в ORACLE. Там определяешь тип, а потом для типа создаешь таблицу, строки котрой являются экземплярами этого типа. Я уж не говорю про то, что подход "строка = объект" является ущербным, но, позвольте, а что, описав тип, мы разве уже не подразумеваем, что в системе будет сущекствовать множество экземпляров этого типа? Нафига нам это множество еще раз явно оформлять? Не оформлять, а организовать (реализовать) в структуре БД. Этот определенный ранее тип можно реализовать в "ущербный", а можно в тип столбца. У Оракло первый - строковый объект, второй объекты столбцов. И первый "почти" соответствует тому, что есть в ООСУБД. Тока там коллекции, а тут неупорядоченное множество (рел. таблица). В частности, принудительно генерится OID и индексируется. Т.е. получаетеся строго идентифицированная сущность с поведением = объект. Потому этот первый вариант пракичеки направлен на максимальное повторениее ООМД, и тем самым снижает ее какие-то преимущества, которые могли бы нарисоваться, если был бы тока Дейтовский вариант - объекты столбцов. В частности, если в ходе дальнейшего развития ООМД они надыбают что-то, что плохо проходит в Дейтовском варианте, много шансов, что пройдет в "ущербном". Зато те преимущества, что есть за счет Дейтовского, ООМД сложнее надыбать. Да и вообще больше вариантов для развития. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 19:06 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Если рассматривать РМД как модель данных (а не предметной области) Иногда, под моделью данных понимают именно модель предметной области. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 19:13 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
авторУ Оракло первый - строковый объект, второй - объекты столбцов. Не понял. Объекты столбцов подразумевают, что для их хранения используется своя таблица, соотвествующая типу этих объектов? то есть реально там ссылка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 19:27 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
авторИногда, под моделью данных понимают именно модель предметной области. И что? Что эта фраза значит в контексте данного обсуждения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 19:33 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
vadiminfo U-geneНапрмер, как это сделано в ORACLE. Там определяешь тип, а потом для типа создаешь таблицу, строки котрой являются экземплярами этого типа. Я уж не говорю про то, что подход "строка = объект" является ущербным, но, позвольте, а что, описав тип, мы разве уже не подразумеваем, что в системе будет сущекствовать множество экземпляров этого типа? Нафига нам это множество еще раз явно оформлять? Не оформлять, а организовать (реализовать) в структуре БД. А что эта фраза занчит? Хорошо, я буду использовать другое слово: Нафига нам это множество еще раз явно организовать? Уважаемый vadiminfo . Я намекаю, что мыслью по древу можно растекаться очень далеко и многословно. Однако мне не хотелось бы делать это здесь - в данном топике. Все же было бы очень неплохо если бы Вы таки прочитали и попытались бы понять то, что я предлагаю. Потому как Ваши топики кажутся мне несколько рефлексивными и не совсем относящимися к предложенной теме. Я еще раз гворю - забудьте про эти явно определяемые таблицы. Попытайтесь понять, что для РМД в общем то пофигу, как определены переменные отношений - явно или неявно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 19:44 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
funikovyuri Если рассматривать РМД как модель данных (а не предметной области) то наверное все. Т.е. не как основу для проектирования? Я не знаю, что Вы здесь имеете в виде под словом "проектирование". В этом топике в пятом посте я объясняю, что я имею в виде говоря о модели данных (а не предметной области). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 19:48 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Нафига нам это множество еще раз явно организовать? Обыкновенно, по разным причинам. Некоторые пытался указать. U-gene Попытайтесь понять, что для РМД в общем то пофигу, как определены переменные отношений - явно или неявно Этого пытаться понять даже не буду. Для меня есть большая разница. Спецификация имеет значение, имя табы, ее свойства имеют значение (хорошее дело, как манипулировать не зная имя таблы?). Можно тада и тип не определять? Он неявно определится? Хотя я и не про это в общем-то писал. Ведь определена она явно или нет - она есть, и Вы ее не взяли. Ведь у Вас ее по любому нет? Думаю, Вы слишком расточительны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 20:34 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Уважаемый vadiminfo Я больше Вам отвечать не буду. Вы кажетесь мне большим мастером раздувать флейм, не потрудившись даже ознакомится с предложенной работой. Если Вы не пытаетесь понять как это работает, нафига Вы это обсуждаете? Я уверен в том что НРМ является достаточно читабельным и понятным документом(конечно, если поднапрячься). Я делал его около двух лет и это уже третья крупная редакция(не говоря о постоянных мелких правках). Все это рецензировалось известным спецом в области БД (ИМХО ведущим в России) и, судя по его отзыву, он считает это полезным подходом и не может припомнить аналоги. Я и сам абсолютно уверен в простоте(по сравнению с тем же SQL3) и работоспособности предлагаемого подхода и, поэтому, меня просто убивают фразы типа... vadiminfo...хорошее дело, как манипулировать не зная имя таблы?....Ведь у Вас ее по любому нет? Думаю, Вы слишком расточительны Это все описано - R-переменными и их именование являются буквально основными вопросами НРМ. Уважаемый vadininfo Если Вы не пытаетесь это понять, если Вы не удосужились это прочитать, то зачем я буду засорять это топик бисером для Вас? Зачем мне пересказывать то, что я уже подробно описал? Вы делаете многогозначительные(как Вам кажется) но на самом деле абсолютно неверные и идиотские выводы только из поверхностного просмотра моих топиков, и на их основании отпускаете замечания, которые выглядят для меня абсолютно дебильными (типа "лощадью ходи"). Пожалуста, перестаньте мусорить в этом топике. Я таки надеюсь прочитать здесь что-либо умное :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 21:15 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Ну Вы уж так сильно-то не кипятитесь, U-gene. Я, например, стараюсь, прочитал текст два раза - действительно не легко понять суть, чтобы уловить новизну. Вот сейчас буду читать в третий раз... То, что связи на объектном уровне представляются с помощью ключей (как в РМД) - это настораживает (в классической объектной модели связи между сущностями поддерживаются с помощью связей между идентификаторами, и там совсем другой смысл "ссылочной целостности")... Попытаюсь разобраться на "сквозном примере", хотя в целостном виде "сквозного примера", по моему, нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 23:11 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Я больше Вам отвечать не буду. Да я и не предполагаю ответ от конкретного лица, када пишу. Это же форум, а не личная переписка. Мож кто другой ответит, на интересующий вопрос. Вопрос Дейта о том с чем в РМД соотносится объект мне представляется достаточно интересным. Тока и всего. U-gene Если Вы не пытаетесь понять как это работает, нафига Вы это обсуждаете? Так я само это и не обсуждаю, а тока некоторые тезисы, упомянутые в топике, представляющие для меня интерес. Или все что Вы здесь говорите не считается? Тока надо там что-то левое - не на форуме написанное читать? U-gene Это все описано Это был ответ на текст Ваш текст Нафига нам это множество еще раз явно организовать? U-gene деле абсолютно неверные и идиотские выводы ... Я таки надеюсь прочитать здесь что-либо умное :). Неужели Вы верите, что Ваши выводы непременно заставляют тока восхищаться правильностью, и отсутствием в них даже намека на идиотизм? Кто бы мог подумать? Впрочем, Вам виднее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 23:28 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 vadiminfo автор...я само это и не обсуждаю, а тока некоторые тезисы, упомянутые в топике, представляющие для меня интерес... Эти некоторые тезисы(правильные они или неправильные и идиотские) имеют смысл только в контексте предложенной статьи. Обсуждение их без ее прочтения ни имеет никакого смысла. Что я до Вас попытался в очередной раз донести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 09:48 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene имеют смысл только в контексте предложенной статьи. Кто знает. Они могут оказать важней самой предложенной статьи. Ведь Дейт поднял вопрос. И эти подходы реально использутся в ОРСУБД. Статья, к примеру, может кануть в лету, а этот вопрос остаться. Кроме того, он может перечеркнуть, либо нет значение данной статьи. Так как она так или иначе пытается соотносить объекты со структурами РМД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 11:41 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Андрей Леонидович Андрей ЛеонидовичТо, что связи на объектном уровне представляются с помощью ключей (как в РМД) - это настораживает В НРМ ключи декларируются как ограничение целостности (этим, кстати, НРМ отличается от модели ODMG, где ключи декларируются исключительно как срество ассоциативного доступа). И конечно же там есть внешние ключи, и их можно импользовать для обозначения связей. Однако НРМ не в коем случае не связывает внешние ключи и связи напрямую. То есть внешний ключ - это просто внешний ключ. Как вы будете использовать этот механизм, какой смысл Вы в него вложите - я не знаю. Однако заметьте, что НРМ позволяет определять и использовать самые натуральные ссылки . Ссылки - это тоже механизм. Но ИМХО они гораздо ближе вашим любимым:) "связям". К тому же они позволяют организовывать групповой доступ к данным как по ссылке, так и навстречу ей. 2 vadiminfo Тьфу на Вас :). Когда же Вы перестанете мусорить здесь прописными истинами? Я же Вас об этом просил четыре раза! Это же такое занудство.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 13:04 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Когда же Вы перестанете мусорить здесь прописными истинами? Хорошо. Вот Вам последняя прописная истина - переименуйте НРМ в дореляционную ОМД, выкиньте на радость коллеге ЧАЛу ключи - все равно они уже не помогут исправить положение дел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 14:56 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 vadiminfo Посколку статью Вы не читали, я даже не буду спрашивать, как хорошо Вас понимаете то, что говорите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 15:36 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene 2 ModelR Вы напрасно пытаетесь сравнить R-переменные с таблицыми SQL3. Если уж вам так приспичило сравнивать , Приспичило. Сравнение - метод познания, а также описания изобретений, а не отрицание. U-gene то это не таблица а, скорее, вид причем то, как этот вид вычисляется, определяется реализацией компонентов о-типа. Согласен, вычисляемость присуща в SQL3 только полям VIEW, а не базовых таблиц. Методы пользовательских типов также не являются прямой аналогией. U-gene Например, если в процессе наследования о-типа реализация компонента была изменена, то значение R-переменной будет вычислятся по новому. Однако весь ранее определнный функционал, который так или иначе манипулировал с этой R-переменной, изменений не потребует(что подразумевает позднее связывание). Правила наследования очень важны. Например, базовый тип определяет компоненту как хранимую, а порожденный - как вычисляемую, что тогда? А если обратно? U-gene ИМХО это средствами SQL3 никак не сделать. Посмотрите еще раз пример в первой части от начала до конца. Там есть все - от описания типов, до наследования с переопрелделением компонентов. Побробуйте сделайте то же на SQL3 - это было бы очень интересно, но мне кажется у Вас это не получится (это будет как преобразование С++ программы на язык С).). Ну, я верю в программистов, особенно если за пиво...:) U-gene Насчет CREATE CLASS? Есть какая то устоявшаяся терминология, а поскольку пользователь, объявив и описав объектный тип, сразу же может манипулирвать его R-переменными, то для него это выглядит в точности как класс. Поэтому я оставил CREATE CLASS. С термином понятно. Замечу только, что разделение определения типа и декларации переменных просто позволяет один тип использовать многократно. И в SQL и в НРМ это решено не использовать для CREATE TABLE / CREATE CLASS (хотя в SQL можно извернуться - CREATE TABLE AS SELECT...) U-gene авторДалее, "запихнуть в одну таблицу" - нет, ORACLE nested table физически размещается в отдельной таблице Физически то да, но нафига это логически впихивать в одну таблицу? Нафига это таблица вообще нужна? Можно без нее - ИМХО даже нужно. На логическом уровне мне в общем то все равно, впихивает или нет. Важно, что есть некоторый агрегат с полезными свойствами. Вы очень облегчили бы понимание вашего труда если бы провели предлагаемое сравнение, а также может сравнение с какой-то ОБД. Насчет простоты DML - не уверен что все так просто. Например, какова семантика присвоения вычисляемым полям, или это должно отрезаться на уровне синтаксиса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 15:57 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ModelR Ну раз приспичило, значит интересно :) Я буду цитировать исходный текст - ИМХО там все ответы есть. ModelR Например, какова семантика присвоения вычисляемым полям, или это должно отрезаться на уровне синтаксиса? Я не знаю, насколько я этим отвечу на этот Ваш воррос, но вот следующая цитата ..точнее связка цитат (только учтите, что это все же манифест, который некоторые вещи просто требует:) ) НРМ(стр5,9)...Мы рассматриваем и атрибуты, и методы объектных типов как компоненты, содержащие или возвращающие значения - т.е. имеющие значимый тип. Спецификация метода может рассматриваться как спецификация компонента, имя которого совпадает с именем метода, а тип - с типом значения, возвращаемого методом (спецификация метода включает также описание параметров значимых типов). Таким образом, спецификация объектного типа представляет собой набор спецификаций значимых компонентов. Совокупность значений компонентов объекта определяет состояние объекта. Любой компонент может быть реализован либо как хранящий значение, либо как вычисляющий его, однако важно понимать, что в спецификации компонента не определяется, является ли это значение хранимым или вычисляемым. Замечание. Конечно, спецификация в определённом смысле определяет реализацию. Например, наличие параметров у метода позволяет предположить, что значение, возвращаемое методом, должно быть вычисляемым. Однако эта зависимость все же не очевидна. Вполне возможна такая реализация, что значение, возвращаемое методом, не требует вычислений (например, при наследовании одна из реализаций метода использует параметры, а другая может их не использовать). Более того, это значение может быть реализовано вообще как хранимое. С другой стороны, реализации атрибутов, не имеющих параметров, может содержать вычисляющие выражения. .... Все компоненты допускают операцию чтения. Компоненты, не имеющие параметров (т.е. атрибуты), допускают также операцию присваивания. Естественно, что значение, присваиваемое атрибуту, должно иметь тип этого компонента. Для атрибутов типов отношений возможны обычные для РСУБД операции над значениями отношений, том числе операции, изменяющие число кортежей (INSERT, DELETE) и состояние существующих кортежей (UPDATE). Замечание. Мы осознаем трудности, которые могут возникнуть при реализации операций, явно изменяющих значение атрибута, в случае, когда эти атрибуты реализованы как вычисляемые. Однако мы предполагаем, что в реальных системах такие трудности можно преодолеть (например, с помощью триггеров). Еще вопрос. 2 ModelR U-geneНапример, если в процессе наследования о-типа реализация компонента была изменена, то значение R-переменной будет вычислятся по новому. Однако весь ранее определнный функционал, который так или иначе манипулировал с этой R-переменной, изменений не потребует(что подразумевает позднее связывание). Правила наследования очень важны. Например, базовый тип определяет компоненту как хранимую, а порожденный - как вычисляемую, что тогда? А если обратно? Ответ. НРМ(стр14-15)....Как указывалось ранее, в спецификации объектного типа не определяется, являются ли значения его компонентов хранимыми или вычисляемыми. Компонент, реализованный в родительском типе как хранимый, может быть переопределен в классе-наследнике как вычисляемый (и наоборот). Соответственно, когда речь идет о полиморфном наследуемом объектном типе, любая из R-переменных его компонентов может содержать одновременно как хранимые, так и вычисляемые разными способами значения. Говоря строго, значение R-переменной компонента, конечно же, вычисляется и представляет собой объединение UNION нескольких значений, одни из которых могут быть реализованы как хранимые, а другие являются вычисляемыми (прим для modelR - это и есть тот самый вид, о котором я говорю). Для R-переменных типов картина еще более сложна. Поскольку значение R-переменной типа определяется как декартово произведения значений компонентов, возможен случай, когда в некоторых кортежах только несколько атрибутов являются хранимыми. А из-за того, что в процессе наследования типа реализация компонентов, содержащих эти атрибуты, может измениться, в других кортежах указанные атрибуты могут вычисляться (т.е. R-переменная типа, говоря образно, хранится мозаично ). Но в любом случае вычисления значений любых R-переменных должны выполняется системой неявно для пользователя (на основании информации о наследовании типов и реализации компонентов этих типов). Для использования R-переменных необходима только спецификация типа. Можно провести следующую аналогию. Полиморфные OO-языки программирования делают ненужными использование громоздких и чувствительных к изменениям программы селекторных конструкций, необходимых для выполнения близких по смыслу действий для структур, хранящих близкие по смыслу данные, например if s.f=1 then function1(s) elseif s.f =2 then function2(s), заменяя их вызовом полиморфного метода s.function().. Точно так же полиморфные компоненты делают ненужным явное использование оператора UNION для получения значения отношения, объединяющего близкие по смыслу данные в том случае, когда эти данные хранятся и/или вычисляются разными способами. При этом подразумевается, что объектный тип является наследуемым и что полиморфный компонент может менять свою реализацию. Таким образом, если имеется объектный тип t, в котором определён компонент a, и соответствующие этому типу R-переменные используются в запросах и методах, то создание типа t*, наследующего тип t и переопределяющего реализацию компонента a, не ведет к необходимости менять эти запросы и методы. .... ....Далее идет часть общего примера, демонстрирующего эту мысль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 16:28 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ModelR ModelRЗамечу только, что разделение определения типа и декларации переменных просто позволяет один тип использовать многократно. А зачем это нужно? Для чего это требуется? Может быть эти потребности можно удовлетворить механизмами, предлагаемыми НМР? авторВы очень облегчили бы понимание вашего труда если бы провели предлагаемое сравнение, а также может сравнение с какой-то ОБД. С ОСУБД сравнивать не хочу. Все, что я видел - это не столько СУБД, сколько системы, позволяющие хранить объекты программы постоянно - то есть это даже и не СУБД. Настоящих ОСУБД я как то даже и не припомню. То, что предлагает НРМ ближе скорей SQL3.... НРМ (стр34)Предлагаемый НРМ подход может служить основой для создания системы, которая позволяет создать адекватную, активную и долговременно существующую модель предметной области, управляемую пользователем и предоставляющую пользователю данные о своем состоянии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 16:58 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
авторЯ не знаю, насколько я этим отвечу на этот Ваш воррос, но вот следующая цитата ..точнее связка цитат (только учтите, что это все же манифест, который некоторые вещи просто требует:) ) В этом все дело. Изложенные требования весьма сильные, одна возможность присвоения значений вычисляемым переменным компонент чего стоит. Кстати причем тут триггеры? Вопрос не как программировать, а что это присвоение должно значить. Например, в вашем примере остатки товара на складе определены как вычисляемые, теперь я присваиваю им некоторое значение, например пустое. Что это значит? Отныне они перестают вычисляться? Из приведенной цитаты про наследование (мозаичное представление одного атрибута), а также из рассуждений о единстве спецификации объектного типа и объявления переменной соответствующего типа возникает подозрение, что наследование включает в себя и копирование значения родительской переменной в наследующую переменную. Так ли это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 17:18 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene 2 ModelR [quot ModelR]Замечу только, что разделение определения типа и декларации переменных просто позволяет один тип использовать многократно. А зачем это нужно? Для чего это требуется? Может быть эти потребности можно удовлетворить механизмами, предлагаемыми НМР? Если мне нужно две переменные идентичного типа, удобнее написать Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 17:26 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ModelR Давайте разбираться. ModelRНапример, в вашем примере остатки товара на складе определены как вычисляемые, теперь я присваиваю им некоторое значение, например пустое. Что это значит? Отныне они перестают вычисляться? Нет, вычисляться они не перестанут. Такое присваивание не изменит реализации и, соответственно, при следующем чтении мы опять получим вычисленное значение. НРМ говорит, что... НРМ(стр9)...Компоненты, не имеющие параметров (т.е. атрибуты), допускают также операцию присваивания.Должна ли эта операция обязательно изменять значение этих компонентов НРМ не оговаривает. ИМХО ваш же пример демонстрирует возможную обоснованность такого подхода. Раз остатки на складе не хранятся, а определяются многими поставками и отгрузками, то система попросту не должна обращать внимание на попытки прямого изменения значения соответсвующего компонента. Если конечно иное не оговорено в реализации этого компонета специально (например, тем же триггером). Замечу, НРМ оговаривается, что... НРМ(стр8)Мы не рассматриваем иные характерные для языков программирования возможности спецификации объектных типов (например, модификаторы видимости private и public, модификаторы обновляемости readonly, и т.д.), однако допускаем, что такие возможности могут существовать и быть полезными. Другими словами, если нужно явно запретить такое присваивание, то может быть стоит специфицировать такой компонент как readonly? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 18:02 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ModelR ModelRЕсли мне нужно две переменные идентичного типа, удобнее написать Код: plaintext 1. 2. 3. больше ничего. Тогда я не понял. W1 - это отдельно взятая переменная? то есть это объект? Так у меня можно создать сколько угодно объектов одного класса. Или я где то вопрос не догоняю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 18:07 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Предлагаю не вводить в модель данных такое понятие как триггер. Триггер - это значит все, о чем раньше писали - наплевать и забыть, ибо при вставке записи в справочник единиц измерения теперь на самом деле будет считаны наши финансовые планы и отправлены в 15 популярных форумов:). Нужно зафиксировать непосредственную, 'безтриггерную' семантику. Думаю, модель не сильно пострадает, если просто запретить присвоение значений вычисляемым переменным, либо считать это пустой операцией. авторW1 - это отдельно взятая переменная? то есть это объект? Так у меня можно создать сколько угодно объектов одного класса. Или я где то вопрос не догоняю? Именно - в смысле сколько угодно. А что про наследование/копирование? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 18:29 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
ModelR Из приведенной цитаты про наследование (мозаичное представление одного атрибута), а также из рассуждений о единстве спецификации объектного типа и объявления переменной соответствующего типа возникает подозрение, что наследование включает в себя и копирование значения родительской переменной в наследующую переменную. Так ли это? Давайте таки отделять мух от котлет. Есть объекты (то, что создается командой new имя_о_типа ) и есть R-переменные. Я пока не понял, о каких перменных речь. Однако на всякий случай скажу, что если речь идет о R-переменных, то ни о каком копировании речи нет. Аналог R-переменных- это не таблицы, а виды. Они вычисляется. Их значения не могут куда либо копироваться, потому что эти перменные определяются(неявно!) один раз - когда определяется их класс. Попробуйте читать внимательней. Мозаичное представление - это про R-переменную класса, а не компонента. И я хочу донести, что все эти рассуждения про R-переменные есть не более чем обоснование . Пользователь может этого не знать, точно так же как пользователь SQL систем может не знать РМД. Смотрите пример. Он представляет собой достаточно полную модель оговоренной предметной области, которой можно пользоваться - создавать объекты, делать запросы и т.д. Рассматривая пример попробуйте абстрагироваться от обоснования : тогда Вы увидите, что это достаточно просто использовать - описали классы, задали их реализацию и после этого сразу же можно создавать объекты и делать запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 18:56 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ModelR Про наследование и R-переменные по другому. Объекты класса наследника, естественно, принадлежат и базовому классу. Спецификация класса наследника включает спецификацию базового класса. Поэтому класс наследнимк наследуют R-переменные базового класса. Никакие значение никуда не копируются(точнее нет даже обснований для того, что бы подозревать это). ModelR Именно - в смысле сколько угодно. Ну так сколько угодно и создавайте. ModelR Предлагаю не вводить в модель данных такое понятие как триггер Хорошо. Вместо фразы U-geneЕсли конечно иное не оговорено в реализации этого компонета специально (например, тем же триггером). Следует читать: "Если конечно иное не оговорено в реализации этого компонета специально.". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 19:07 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Может быть, в научной статье не стоит "опускаться" до "сквозного примера", который начинался бы с КОНЦЕПТУАЛЬНОЙ схемы. Но, надеюсь, в рамках обсуждения мы могли бы это сделать... Раз уж Вам лень было рисовать, мне - тем более. Поэтому пишу... Список объектов (в терминах ОМД - это объекты, в ER-терминах - сущности, в OO-терминах - классы, в НРМ-терминах - точнее скажете Вы) -------------------------------------------------------------- Товар Торговая марка Склад Документ: накладная на перемещение Документ: товарная накладная Документ: приходный ордер Операция перемещения Операция отгрузки Операция разгрузки Список связей --------------- Товар <-*- Хранится на/Хранит ---> Склад Товар <--- Имеет/Принадлежит --- Торговая марка Документ: накладная на перемещение --- Состоит из/Входит в ---> Операция перемещения Документ: накладная на перемещение <--- Имеет в качестве источника/Источник для --- Склад Документ: накладная на перемещение <--- Имеет в качестве получателя/Получатель для --- Склад Операция перемещения <--- Для/Имеет --- Товар Документ: товарная накладная --- Состоит из/Входит в ---> Операция отгрузки Документ: товарная накладная <--- Для отгрузки со/На котором оформлена --- Склад Операция отгрузки <--- Для/Имеет --- Товар Документ: приходный ордер --- Состоит из/Входит в ---> Операция разгрузки Документ: приходный ордер <--- Для разгрузки на/На котором оформлена --- Склад Операция разгрузки <--- Для/Имеет --- Товар ------------------------------------------------ здесь: <--- ---> многие-ко-многим --------> один-ко-многим <-*- ---> наличие характеристик связи (у связи товара и склада есть характеристика связи - количество товара на складе) ------------------------------------------------ Пока 2 замечания: 1) Эта концептуальная схема в ОСУБД представляется на ЛОГИЧЕСКОМ уровне точно в таком же виде, и, следовательно, точно в таком же виде поддерживается объектным навигатором (который должен быть в любой ОБЪЕКТНОЙ системе). 2) Поэтому, во-первых, связь многие-ко-многим поддерживается и отражается в навигаторе явно, и, во-вторых, мы можем просто (в навигаторе) получить, например, перемещения (или отгрузки, или разгрузки) ДАННОГО товара. В НРМ (точнее в Вашем "варианте" примера) ни того, ни другого нет ни в "объектном", ни в "реляционном" "слоях". Видимо с многие-ко-многим проблема не преодолима ? А вот по второму вопросу Вы можете сказать, что концептуальная схема может быть представлена и так (не встраивая операции "внутрь" документа). Но ! Зачем их вообще представлять не так (встраивать) ? То есть я Вас "критикую" по двум разным направлениям: 1) с одной стороны, поддерживая "объектный подход", Вы игнорируете возможность явного представления связей многие-ко-многим; 2) а с другой стороны, Вы допускаете (непонятно зачем) денормализацию (встраивание объектов), противоречащую "реляционному духу" (но, впрочем, не Манифесту Дейта), и осложняющую (мягко говоря) прямой доступ к встроенным объектам (в данном случае - к операциям). Пока у меня складывается впечатление, что НРМ остается "реляционным" даже в объектном "слое". В этой связи было бы интересно услышать, в концентрированном виде, отличительные черты НРМ в сравнении с Манифестом Дейта, например, ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 22:38 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene 2 ModelR Про наследование и R-переменные по другому. Объекты класса наследника, естественно, принадлежат и базовому классу. Спецификация класса наследника включает спецификацию базового класса. Поэтому класс наследнимк наследуют R-переменные базового класса. Никакие значение никуда не копируются(точнее нет даже обснований для того, что бы подозревать это). ModelR Именно - в смысле сколько угодно. Ну так сколько угодно и создавайте. ok, про объекты понятно. Я пытался спросить про коллекции объектов. Если мне нужно две переменные-коллекции идентичного типа, удобнее написать CREATE CLASS Warehouse ... ; W1 Collection of Warehouse ; W2 Collection of Warehouse; ALTER CLASS Warehouse ... ; Вообще по-моему трактовка множеств объектов (коллекций) - одно из принципиальных отличий РМД и ООБД. Что по этому поводу говорит НРМ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 10:51 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Андрей Леонидович Какой такой навигатор? Язык и только язык. И никаких рисованных схем. То есть я не против такого рода интерфейса в реальных системах, но в манифесте языка вполне достаточно. Андрей Леонидович1) Эта концептуальная схема в ОСУБД представляется на ЛОГИЧЕСКОМ уровне точно в таком же виде, и, следовательно, точно в таком же виде поддерживается объектным навигатором (который должен быть в любой ОБЪЕКТНОЙ системе). И что? Вы, создвая концептуальную схему, утверждаете, что операция отгрузки - это "объект"(т.е. объект предметной области). А я говорю - это нифига не "объект". Это факт, это значение которое относится к данной накладной (или содержится в ней). Причем значением(фактом) является даже не одна операция отгрузки, а множество таких операций. Соответсвенно, мы должны описать значимый тип со схемой {товар, количество} и, описывая объектный тип "накладная", ууказать, что объекты этого типа характеризуются множеством таких значений(фактов). Понимете, когда я говорю, что было отгружено 20 штук артикула "а" и было отгружено 20 штук артикула "а" (это сознательное повторение), как Вы определите - это я два раза про один и тот же факт я сказал или про разные? Никак! Сами по себе эти значения (факты) абсолютно одинаковы! Отличить их можно только в контексте объектов, которые этими фактами описываются. Уникальность этих значений(фактов) определяется не в них самим, но только в содеражащих их объектах. Поэтому не надо изо всего делать объекты. Есть просто значения(факты), которые объектами не являются и НМР отражает это. И какой-такой навигатор? Андрей Леонидович2) а с другой стороны, Вы допускаете (непонятно зачем) денормализацию (встраивание объектов), противоречащую "реляционному духу" (но, впрочем, не Манифесту Дейта), и осложняющую (мягко говоря) прямой доступ к встроенным объектам (в данном случае - к операциям). Что значит - непонятно зачем? Вы же сами забодали тут всех ребят :)утверждением, что ключи - это дескать плохо, и я подумал - раз Андрею Леонидовичу это не нравится, надо изобазить что-то подобное ссылкам в ОО-языках (может так понравиться?). :) А насчет ненормализованности это самый интересный вопрос. Да, объекты ненормализованы. Однако... НРМ(стр13)Предполагается, что данные, хранящиеся в R-переменных, всегда актуальны – любое изменение состояний объектов приводит к изменению значений соответствующих R-переменных. Другими словами, данные, представленные в виде значений компонентов объектов, и данные, представленные в виде значений R-переменных - это одни и те же данные (в дальнейшем мы будем говорить о двояком представлении данных). Любому объектному типу с ненормализованнйо структурой соответсвует несколько R-переменных, структура которых однозначно нормализована. При этом система организована таким образом, что пользователю не приходится даже задумываться, с каким именно представлением он работает. Прочитайте еще раз внимательн раздел "R-переменные" - там все это описано Я еще раз говорю - В НРМ нормализованные переменные отношений явно не описыаются. Однако это не значит, что их нет вообще. Их существование, их имена, имена их атрибутов - все это задается описанием значимых и объектных типов (структура последних ненормализована). Например для о-типа "документ" будет существовать аж три R-переменные 1)R-переменная собственного компонента (что это такое - см. НМР) содержашая данные из заголовка документа 2)R-переменная компопнента описывающего отгрузки поэлементно 3)общая R-переменная типа Все эти пременные являются нормализованными переменными отношений: первые две навскидку в >=3НФ, третья в 1НФ. (Замечу, что фактически тоже самое получилось бы и в традиционных SQL системах две таблицы для хранения заголовков и строк, + постоянное использования JOINа, связывающего их вместе(R-перменаая типа и есть этот JOIN). По сути в НРМ то же самое, просто описано и представлено абсолютно по-другому) Андрей Леонидовичво-вторых, мы можем просто (в навигаторе) получить, например, перемещения (или отгрузки, или разгрузки) ДАННОГО товара. В НРМ (точнее в Вашем "варианте" примера) ни того, ни другого нет ни в "объектном", ни в "реляционном" "слоях". Абсолютно никакой проблемы - делаете(я использую термины SQL) SELECT...WHERE.... . И что это за слои? Все, с чем работает пользователь, существует....мммм....в одном и том же месте. Никаких слоев. И потом...:)... Какой-такой навигатор? Еще раз указыаю на ошибочность фразы Андрей ЛеонидовичВы допускаете (непонятно зачем) денормализацию (встраивание объектов) Я не допускаю встаиания объектов. Где Вы это нашли?На всякий случай связка цитат. НРМ стр3,10 1)скалярные – включая базовые (числовые, символьные, булевские и т.п. типы) и ссылочные типы (о них - далее). 2)конструируемые кортежные типы. Кортежем называется множество пар "имя атрибута, значение атрибута скалярного типа". Соответственно, кортежный тип определяется как множество пар "имя атрибута, скалярный тип атрибута". 3)конструируемые типы отношений, определяемые как типы множеств значений заданного кортежного типа. (прим - До сих пор, как видите, все что есть это ссылочный тип. Что же это такое?) ... Операция сравнения объектов (один и тот же объект – разные объекты) основывается на непосредственном сравнении их объектных идентификаторов. Именно поэтому объектные идентификаторы (сами по себе) рассматриваются как генерируемые системой значения ссылочного скалярного типа (домена) DOID. Входящие в компоненты объектов поля ссылочного типа позволяют описывать связи, существующие между объектами моделируемой предметной области. Для переменных ссылочного типа определены операции присваивания, сравнивания и неявного разыменования. Последнее подразумевает, что любая операция, отличная от операций присваивания и сравнивания, выполняется не над ссылкой, а над объектом, на который эта ссылка указывает (Вот видите как я для Вас старался :) - даже написал, что ссылки позволяют описывать связи (наверное это надо убрать)) Далее вопрос Андрей ЛеонидовичВидимо с многие-ко-многим проблема не преодолима ? Как не преодолима? Например. Определяем кортежный значимый тип, содержащий ссылку на объектный тип А. Создаем объектный тип В, содержащй компнент ref_comp, представляющий множество кортежей указанного значимого типа. При этом в ключ этого компонента ссылочное поле не входит. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Создаем объектный тип B, содержащй компнент ref_c, представляющий множество кортежей указанного значимого типа. Теперь каждый объект класса В может ссылаться на многие объекты класса А, и на каждый объект класса А могут ссылаться многие объекты класса В. Это разве не связь многие ко многим. При этом учтите - ссылки в НРМ допускают доступ к данным в обе стороны. А если учесть, что НРМ(стр10)В системе могут существовать переменные, представляющие собой группу ссылок на объекты заданного типа (групповые ссылки). Значение, хранящееся в такой переменной можно рассматривать как значение отношения с одним единственным атрибутом OID, определенным на одном из ссылочных типов. Отметим, что такая переменная не требует явного определения ключа – подразумевается, что ключом однозначно является единственный атрибут. Одиночную ссылку (т.е. ссылку на один-единственный объект) можно рассматривать как частный случай групповой ссылки. То такая связь может быть задане еще более просто. Код: plaintext 1. 2. 3. 4. 5. Андрей ЛеонидовичПока у меня складывается впечатление, что НРМ остается "реляционным" даже в объектном "слое". Какие-такие слои? :) Да он остается реляционным - я этого и добивался Однако описание данных - объектное, и я этого тоже добивался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 11:46 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ModelR ModelR Вообще по-моему трактовка множеств объектов (коллекций) - одно из принципиальных отличий РМД и ООБД. Что по этому поводу говорит НРМ? Определив о-тип мы (благодаря его R-переменным) сразу же можем работать с множеством, содержащим все существующие в системе объекты этого типа. Например CREATE CLASS A{}; SELECT ... FROM A ...; Опять же НРМ(стр10)В системе могут существовать переменные, представляющие собой группу ссылок на объекты заданного типа (групповые ссылки). Таким образом мы можем явно задать некое подмножество существующих в системе объектов. Далее, в разделе "R-переменные и ссылки." показано, что... НРМ(стр19)...Таким образом, имя ссылки, подобно имени объектного типа, является многозначным именем, которое должно интерпретироваться в зависимости от операции, в которой это имя используется (конечно, в групповых операциях оно интерпретируется как имя R-переменной). По большому счету единственное отличие между R-переменной t и R-переменной reft заключается в том, что первая определена глобально, а вторая – только там, где определена соответствующая ссылочная переменная (т.е. в типе или в методе типа). То есть мы может работать с подмножеством, определяемым групповой ссылкой, точно так же, как и с множеством, определяемым о-типом Единственный вопрос может быть в том, что такого рода подмножества не определены глобально, что не позволяет обращаться к ним используя непроцедурные команды управления системой. Да, наверное это было бы полезно. Спасибо, буду думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 12:06 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Многие-ко-многим демонстрирует GoodsMotion, проекция его на (FromWarehouse,ToWarehouse) задает все пары складов поставщик-получатель чего-либо. Не вижу проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 12:18 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Привет! А как в НРМ обстоят дела с - множественным наследованием классов - множественным наследованием интерфейсов - полиморфизмом и в некоторых случаях уникальный OID для объекта, генерируемый системой - слишком сильное ограничение. Мне от этого пришлось отказаться. Многие алгоритмы пролетают мимо такой модели данных (( Дмитрий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 16:12 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 shuklin Интерфейсов нет как понятия (интерфейсы - изобретение, которое я впервые увидел в Java - появляется только потому, что язык не допускает множественное наследование классов. Это мое ИМХО которое даже обсуждения не стоит. Онпять же ИМХО можно обойтись одними классами). Классы мноджественное наследованиеидопускают. За исключением одного места... НРМ(стр20)В команде, создающей новый объектный тип (и соответствующий ссылочный тип), необходимо указывать имя этого типа, перечислить базовые типы (прим - во множественном числе), спецификацию компонентов и определить ключи....НРМ это специальным образом не оговоаривает. Однако надо понимать, что для двойственного представления данных (объекты <=> R-перменные) число предков у класса в общем-то не имеет значения. В предыдущих редакциях это, кстати, рассматривалось подробно. shuklinв некоторых случаях уникальный OID для объекта, генерируемый системой - слишком сильное ограничение...Многие алгоритмы пролетают мимо такой модели данных В каких это случаях? И потом, я же иду не от алгоритмов а от ...ммм... некой идей, а там, наоборот, пролетает как раз случай объекта без OID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 16:38 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Сбили меня тут своим классами :) В НРМ есть, конечно же, объектные типы, и они допускают множественное наследовангие. Вс екомпоененты этих типов можно переопрелелять при наследовании. То есть и компоненты и, следовательно, сами эти типы являются полиморфными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 16:45 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneСбили меня тут своим классами :) В НРМ есть, конечно же, объектные типы, и они допускают множественное наследовангие. И каковы тогда правила разрешения конфликтов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 17:26 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Хороший вопрос. Насчет спецификаций - это ИМХО связано с тем же отображением (объекты <=> R-переменные). Если у о-типа А есть много наследников, и от них от всех мы потом множественно наследуем о-тип B, то в спецификации этого типа все равно будет только по одному компопненту из спецификации типа А. Можно объяснит так. Спецификации компонентов можно рассматривать как элементы некого множества. Спецификация типа - это множество. Множественное наследование (применительно к спецификации о-типа) - это, фактически, объединение нескольких множеств. Естественно, объединение нескольких, содержащих одинаковые элементы множеств в точности повторяет любое из исходных множеств - элементы (т.е. спецификации компонентов) дублироваться не могут. Я не уверен, но насколько я помню , это называется виртуальным множественным наследованием. Или я не тот термин употребляю? Конечно же будет конфликт реализаций. Но ИМХО данные момент не является принципиальным. Этот конфликт в любом случае можно как-то можно разрешить. Аутоматично (например, брать реализацию из первого типа в списке базовых типов ... ГЫ-ГЫ) или руками (например, в случае конфликто явно указывать, какая реализация нужна - вплоть до требования явного преопределения). Т.е. это дело не НРМ, а конкретной системы, реализующей НМР. В НРМ это могло бы прозвучать как "В системе должен существовать механизм разрешения возможных в случае множественного наследования конфликтов реализаций компонентов" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 18:45 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ModelR Второй раз счасибо. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 18:47 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Почему "язык и только язык" ? И при чем здесь "рисование схем" ? Речь идет именно об интерфейсе "низкого уровня". Об интерфейсе "к концептуальной схеме". Не следует (и не получится) при использовании "объектных технологий" уходить от концептуальных схем и навигаторов... Что значит "нифига" ??? По-моему, Вы серьезно заблуждаетесь. И слово "факт" ничего не меняет. "Факт" любой из этих операций, "входящих" в один документ, после его совершения КОНЕЧНО ЖЕ ЯВЛЯЕТСЯ САМОСТОЯТЕЛЬНЫМ ОБЪЕКТОМ, к которому должен быть прямой доступ, как к самостоятельному объекту. Он не чуть не хуже ни товара, ни склада... Что значит "изобразить что-то подобное ссылкам" ??? При чем здесь встраивание объектов в другие объекты, о чем я Вас спрашивал ? Зачем встраивать ? Используйте, на здоровье, "что-то подобное ссылкам". В ОМД есть именно связи Документ: товарная накладная --- Состоит из/Входит в ---> Операция отгрузки Операция отгрузки <--- Для/Имеет --- Товар а у Вас будет "что-то подобное ссылкам", чтобы от товара можно было бы получить операции его отгрузки. Только и всего... Что значит "абсолютно никакой проблемы ... делаете SELECT... WHERE" ??? И после этого Вы не понимаете, что за слои ??? Так сделайте, пожалуйста, этот SELECT на объектном (концептуальном) уровне, чтобы было понятно... Нет, НЕ ПОНЯТНО про многие-ко-многим. Я же старательно изобразил Ваш же пример. Есть связь многие-ко-многим Товар <-*- Хранится на/Хранит ---> Склад с характеристиками связи (!) (например, количество товара на складе). Вот этот пример и приведите, пожалуйста, в НРМ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 22:31 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Плохо, ModelR, что Вы "не видите проблем". При чем здесь GoodsMotion ? В примере, который я подробно описал на концептуальном и, одновременно, на логическом уровне, есть только одна связь многие-ко-многим Товар <-*- Хранится на/Хранит ---> Склад причем, у нее есть свои собственные характеристики... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 22:36 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Уважаемый Андрей Леонидович. Во первых, я не понимаю Ваших терминов. У Вас в голове какая то своя, сложная система (нам, гагарам, сие недоступно). Я же во вступлении не пишу, что целью НРМ является реализация сложной системы, существующей в голве у Андрея Леонидовича. Цель гораздо более простая - совмещение манипуляционных возможностей РСУБД с выразительными возможностями, присущими ОО-языкам. Всего то. И потом - я же Вас просил не перетаскивать меня на "концептуальный уровень". Ну я слегка повелся, но больше ни-ни. Не буду больше об этом. Тьфу-тьфу - зарекаюсь. :) Ну не подходт Вам предложенная система типов - ну что я могу сделать. Ну нет там явно определяемых связей, что с этим делать то?. Ну не кажется Вам она более выразительной, что набор явно определяемых таблиц, а я Вам обратное доказывать и не собираюсь. В общем в отношении Ваших схем и стрелочек я посыпаю голову пеплом и умываю руки. Только я прошу - не надо раздувать здесь флейм по этому поводу. И наверное в отношений связей Вы правы. ;) Вот взять вес в килограммах! Вроде бы казалось, чистой воды "атрибут" "объекта". Ан нет - приглядишся, и оказывается, что это очень абстрактное представление "связи" между этим объектом, эталонной гирей в Париже и земным шаром. А там глядь! ...кругом то одни связи!! а от объектов вообще ничего не осталось!!! Что делать, что делать??? Караул..... Еще раз прошу - не надо раздувать здесь флейм. Если приспичит (сорри, но понравилось мне это слово:) ) зовите меня в топик называемый "Вопрос". Ведь все равно никто уже и не помнит, что это был за вопрос.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 23:28 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Андей Леонидович Ах да! Я забыл - Вы же просили показать, " чтобы от товара можно было бы получить операции его отгрузки". Посколку в примере я использую внешний ключ, то эта выборка будет выглядеть до обидного просто Код: plaintext Кстати, если бы я использовал ссылку - то есть вместо поля ArtNo, явно содержащее строку-товарный артикул (внешний ключ), было бы поле ArtRef, ссылающееся на объект о-типа Goods - это выглядело бы так Код: plaintext Хотя... может Быть вам нужно отгужаемое количество? Код: plaintext Или Вам нужны даты, когда товар был отгужен? Код: plaintext В общем не стесняйтесь - спрашивайте, чтоВам из схемы в примере нужно достать. Только не надо срашивать как это или почему это так - находите объяснение в тексте сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 00:30 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичПлохо, ModelR, что Вы "не видите проблем".Мне нет Андрей Леонидович При чем здесь GoodsMotion ?Оккам так советовал Андрей Леонидович В примере, который я подробно описал на концептуальном и, одновременно, на логическом уровне, есть только одна связь многие-ко-многим Товар <-*- Хранится на/Хранит ---> Склад причем, у нее есть свои собственные характеристики...Хорошо, бог с Оккамом, возьмем ваш новый пример. ИМХО НРМ допускает все три способа представления количества Kij товара ti на складе sj: Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 11:01 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Есть, Ugene ! Не буду, конечно же, "раздувать здесь флейм" про "концептуальный уровень", хотя цель (моя, во всяком случае) - чтобы он не отличался от лигического... Вы НЕ ПОКАЗАЛИ КАК ОТ ТОВАРА ПОЛУЧИТЬ ОПЕРАЦИИ ! Вы показали как в реляционной системе получить множество операций с необходимостью использования оптимизатора ! Неужели не понимаете разницу ? Но ведь это я опять "флейм раздуваю"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2005, 22:56 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Вы, ModelR, так совсем запутаетесь. Выберите уж какой-нибудь один способ, чтобы связи многие-ко-многим поддерживались бы на уровне СУБД. Второй способ понятен. Это "Р"СУБД. А вот ни первый, ни третий способы связь на уровне СУБД не представляют. Это разве не очевидно ? Вот U-gene в ироничной форме (предупредив, чтобы я не "раздувал флейм") намекнул, что связи вообще не нужно представлять на логическом уровне (а про концептуальный говорить нельзя)... Может Вы тоже так считаете ?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2005, 23:01 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Эта... Андрей Леонидович... тогда я вообще ничего не понял. Я описал отгузки и товары. В моей "концептуальной" схеме отгрузка характеризуется отгужаемыми в ней товарами, что успешно могу представить в схеме "логической" как с помощью ключа, так и с помощью ссылки. Далее Вы просите показать дословно " чтобы от товара можно было бы получить операции его отгрузки". Я показываю как это можно сделать. Оказывается - это не то! А что тогда? Вы подробно объясните!!! Только давайте Вы будете использовать мою "концептуальную" и мою абсолютно соотвествующуу ей "логическую" схему. Или, по крайней мере, поставте себя на мето кладовщика или логиста, представте себе какие данные им нужны (это ИМХО не зависит от всяких схем) и попробуте сформулировать вопрос так, как задали бы его они. Ну а если ничто из предложенног Вам не подходит, то я опять таки посыпаю голову пеплом и умываю руки. "Концептуализировать" по Вашему я не буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2005, 00:24 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Да, U-gene, "это не то". И я очень четко объяснил что именно "не то". Вы показали как в РЕЛЯЦИОННОЙ системе получить множество операций с НЕОБХОДИМОСТЬЮ использования оптимизатора ! Неужели не понимаете разницу ??? Извините, что приходится напоминать Вам и ModelR элементы теории баз данных. Они касаются представления любых связей - и "нашей с Вами" один-ко-многим, и "нашей с Вами и ModelR" многие-ко-многим. (Кстати "вариант 2" ModelR так же не полноценно представляет, на самом деле, связь двух объектов. Мое "одобрение и понимание" - это всего лишь "реверанс" в сторону "реляционных традиций", так сказать.) Связь между n объектами может быть ПОЛНОЦЕННО ПРЕДСТАВЛЕНА только с помощью n! перестановок идентификаторов ("внешних ключей" в "Р"СУБД). "К счастью" при n=2 n! так же, опять же извините, =2. Так что, ModelR, не 1-ый или 3-ий, а что-то типа "1-ый И 3-ий" ! Но это криво получается, и не на уровне СУБД... Теперь, надеюсь, понятно, что к идентификатору товара "привязаны" (в ОСУБД) идентификаторы соответствующих операций... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2005, 23:35 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Ув Андрей Леонидович! Я в прошлый раз забыл спростиь - а что такое "оптимизатор"? Откуда Вы его взыли? Опять из головы? У меня нет оптимизатора. У меня есть операции рел алгебры. Откуда в Вашей голове ВДРУГ появился оптимизатор??? Его нет, аллё, расслабтесь!!! Давайте не будем махать факториалами, выдавая это за элементы теории баз данных. Я, нагло ссылаясь на собственный текст, не пытаюсь выдать это за элементы теории, Если Вы пишите "элементы теории" дайте ссылку. Я таких "элементов теории" явно нигде не видел. Но даже не в этом дело. Я просто не нахожу глобальной разницы, между тем, что говорю я и тем что говорите Вы. Андрей Леонидович. На протяжении 3 разворотов сего топика я пытался донести простую идею - для того, что бы работать с переменными отношений необязательно их явно определять. Некоторые не поняли и ушли. Надеюсь, что некоторый процент людей это понял. Теперь, специально для Вас :) я попытаюсь донести такую же простую мысль - для того, что бы работать с той информацией, которую Вы пытаетеся представить в виде связи. её так же не обязательно явно (как связь) описывать. Итак, когда я говорю про ссылки, я имею в виде конечно ссылки, которые определны в спецификации типа. То есть это НРМ(стр4) ... декларативный перечень внешних свойств (атрибутов и методов), который можно рассматривать как интерфейс, по которому можно организовывать взаимодействия с объектом. Из того, что он декларативный, следует то, что он доступен для чтения всеми пользователями системы. Естественно мы можен определить все типы, на которые ссылается данный тип (это определно в спецификации этого типа), однако я так же хорошо представляю себе операцию, которая возвраoftn нам все компопнеты всех классов, содеражащие ссылки на данный тип. Эта операция не описана в НМР, но ей богу это будет всего лишь простая выборка по каталогу значимых типов. То есть информацию о том, что ссылки существуют(мета данные) можно получить в любом случае - и том случае ссылки из объекта наружу, и в случае ссылки снаружи на объект. Далее автор...Операция раскрытия ссылки позволяет организовывать ассоциативный доступ к данным объектов любого типа, связанного с объектами данного типа по ссылке. При этом доступ к данным возможен как по ссылке, так и в противоположном направлении (конечно, на самом деле используемое при этом отношение, являющееся результатом операции EXPAND, не подразумевает каких-либо направлений, поскольку поля, содержащие OID объектов, ссылочные поля, содержащие OID связанных объектов, и поля данных в них абсолютно равнозначны ). Это я специально для Вас выделил. Понимаете ли в R-переменные - они так и построены. Схема R-переменной может содержать любое число равнозначных атрибутов-ссылок среди любого числа других атрибутов. Конечно , среди этого любого числа атрибутов-ссылок один (OID) будет обязательнным: в каждом кортеже эта ссылка на объект, данные о котором в этом кортеже представлены. Но эта "обязательность" - единственная черта, которая отличает его от всех остальных ссылок. То есть если в о-типе специфицирован компопнет, содержащий ссылку ..., refOID, ... . то в соотвествующей R-переменной мы получаем пору ссылок авторOID, ... , refOID, ... , что в точности представляет вашу связь (все это в НМР прописано). Может быть оно по другому называется, может быть эти чвязи и не и не заданы явно , но в принципе это абсолютно тоже самое. Но все таки, Андрей Леонидович..... Вы меня попросили дословно чтобы от товара можно было бы получить операции его отгрузки". Я Вам это показал. Я показал, как в НМР можно получить доступ к набору объектов типа "Отгрузки" или информацию о этих отгрузках, используя как критерий поиска данные объектов, на которые ссылаются объекты типа "Отгрузка". Скажите, я Вам требуемуемую информацию достал? все равно - с использованием "ортимзатора" (но все же......что это? в модели нет никаких оптимизаторов, я в предложенных опрециях я , явно или неяно, пользовался только рел. алгеброй... откуда он взялся?) или без использования оного - результат то достигнут??? Или Вы думаете, что пользователь, проанализирует какой-нить там план исполнения этого простого запроса, и увидев, что использовался пресловутый "оптимизатор" (ГЫ-ГЫ), в сердцах выбростит результат вне зависимотсти от его правильнсоти? Думаю вряд ли. Он "же не индиот" (с)Лем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 01:38 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичВторой способ понятен. Это "Р"СУБД. А вот ни первый, ни третий способы связь на уровне СУБД не представляют. Это разве не очевидно ? Не понимаю.... В моем понимании связь как термин (в рамках тематики форума) - категория семантического моделирования, применяемая в методологии "Сущность-связь". Плз: 1) что вы называете связью? 2) что означает "представлять связь на уровне СУБД" и чем первый и третий способы не представления? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 10:15 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Без оптимизатора, в Вашем случае, никуда, даже есди я расслаблюсь. Это "сердце" любой "Р"СУБД, и при реализации НРМ никуда от него не денешься. И упоминание о нем в моем сообщении более четко конкретизирует простую мысль: Вам придется перебирать ВСЕ операции ради того, чтобы найти те, которые сделаны с ЭТИМ товаром... Так что не следует критиковать меня за упоминание про оптимизатор... Зря Вы так стараетесь донести до меня "простую мысль". Ее уже донес Кодд. Точнее - Дейт, так как у Кодда были сомнения относительно способов представления связей. А вот "моя" "простая мысль" о естественном (явном) представлении связей все еще нуждается в "донесении"... Информацию Вы ДОСТАЛИ. РЕЗУЛЬТАТ ДОСТИГНУТ ! Но не от товара Вы получили операции его отгрузки, а от операций отгрузок. Как и "полагается" в реляционной системе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 00:48 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Я рассказал, ModelR, о представлении связей в сообщении 1731027. См. так же тему "Вопрос". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 00:50 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичБез оптимизатора, в Вашем случае, никуда, даже есди я расслаблюсь. Это "сердце" любой "Р"СУБД, и при реализации НРМ никуда от него не денешься. И упоминание о нем в моем сообщении более четко конкретизирует простую мысль: Вам придется перебирать ВСЕ операции ради того, чтобы найти те, которые сделаны с ЭТИМ товаром... Тюююю, Андрей Леонидович, очевидно мне еще раз придется повторить простую мысль - я работал с формальной моделью и с формальными операциями. Как оно реализовано (есть оптимизатор или их нет) - меня не касается. По мне так любая РСУБД выполняет любую операцию мгновенно... или с задержкой... в общем меня это не касается. Вдруг кто-нить через ...цать лет реализует в железе какую-нить супер-пупер ассоциативную реляционную память, где любые операции над любым подмножеством выполняются с одной и той же скоростью? мои построения от этого никак не изменяться. Еще раз говорю, что моей задачей было показать принципиальную возможность совмещения манипуляционных возможностей РСУБД с выразительными возможностями, присущими ОО-языкам (безотносительно того, как это может быть реализовано в некой конкретной РСУБД и того, какие в этой конкретной РСУБД имеются или отсутсвуют оптимизаторы). Ваш последний пост прямо-таки убеждает меня в том, что результат достигнут. Андрей ЛеонидовичИнформацию Вы ДОСТАЛИ. РЕЗУЛЬТАТ ДОСТИГНУТ ! Но не от товара Вы получили операции его отгрузки, а от операций отгрузок. Как и "полагается" в реляционной системе... Нам гагарам этот Ваш дзэн - "результат ничто, путь все" - не ясен. "РЕЗУЛЬТАТ ДОСТИГНУТ!"(с) Андрей Леонидович ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 01:37 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичСвязь между n объектами может быть ПОЛНОЦЕННО ПРЕДСТАВЛЕНА только с помощью n! перестановок идентификаторов ("внешних ключей" в "Р"СУБД). "К счастью" при n=2 n! так же, опять же извините, =2. Так что, ModelR, не 1-ый или 3-ий, а что-то типа "1-ый И 3-ий" ! Но это криво получается, и не на уровне СУБД... Да, если это навигационная СУБД, то есть n! вариантов навигации. Или, если это индекс к реляционной таблице по n полям, то есть n! вариантов индекса. Вы утверждаете, что только то представление (схема индексирования) полноценна, которое хранит все навигационные пути (все индексы)? И к чему такая крутизна? Для оптимизатора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 11:39 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneПо мне так любая РСУБД выполняет любую операцию мгновенно... или с задержкой... в общем меня это не касается. Однако практика показала, что распространение получают эффективные а не формальные реализации. Тот же SQL в качетве примера взять. IBM его РЕАЛИЗОВАЛА ЕФФЕКТИВНЕЕ по сравнению с имеющимися на то время другими реализациями других подходов! И это определило развитие СУБД на десятилетия в перед. Мало того, формальные подходы не учитывающие потребности практики рискуют остаться оторванными от жизни, тоесть не полными в формальном смысле ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 12:05 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
shuklin ...Однако практика показала, что распространение получают эффективные а не формальные реализации... ИМХО не надо вот так прямо противопоставлять эффектифность и обоснование. То есть Системы баз данных третьего поколения: Манифест...Предложение 2.4: Показатели производительности не имеют почти ничего общего с моделями данных и не должны в них проявляться... Это не я придумал. Так написано в "Манифесте БД третьего поколения" - в манифесте, так или иначе реализуемым СУБД, которые называют себя объектно-реляционными. Тем же Oracle. То есть можно бороться за эффективность соблюдая при этом достаточный формализм. Я не говорю, что реализация должна быть абсолютно формальной. Но она называется реализацией именно потому что что то реализует. Какую то идею, какие то принципы. Например, SQL не реализует в чистом виде то, что написал Кодд. Однако основные то идеи в нем как то(хорошо или плохо) выражены. Но если бы не было статьи Кодда, то сегоднящнего SQL не было бы вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 12:29 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Еще вопросец. Ничего не сказано о функциональных зависимостях и нормализации, хотя допускается у объектного типа несколько глобальных ключей. Кстати, в каком смысле понимается ключ - как РМД (минимальный набор атрибутов) или как в SQL (суперключ - то же ключ)? Считается ли что нормализация просто не актуальна - типа при должном семантическом проектировании все и так будет хорошо? Или проработка отложена на будущее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 13:52 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
автор...Ничего не сказано о функциональных зависимостях и нормализации, хотя допускается у объектного типа несколько глобальных ключей. ..... Считается ли что нормализация просто не актуальна - типа при должном семантическом проектировании все и так будет хорошо? Или проработка отложена на будущее? Да не то что бы на будущее. У меня уже были некоторые мысли по этому поводу . Наверное, их стоит переписать используя термины НРМ и пример из него. авторКстати, в каком смысле понимается ключ - как РМД (минимальный набор атрибутов) или как в SQL (суперключ - то же ключ)? Я нашел в сети формулировку для "суперключа" - "сложный ключ с большим числом столбцов, чем необходимо для того, чтобы быть уникальным идентификатором." То есть суперключ включат ключ - может это кому то потребуется. В НРМ требование минимальности отсутсвует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 14:22 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
В конструкции R переменной типа должна учитываться структура локальных ключей. Для краткости опущены типы скаляров не ссылочного типа и определения кортежей даны ин-лайн. Код: plaintext 1. 2. 3. ФЗ: Склад.Остатки.( Ячейка->Товар ) Декомпозиция Код: plaintext 1. 2. 3. 4. 5. Либо вместо декомпозиции - "объективизация" ячейки или остатка. Как я понимаю вложение: Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 16:52 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Или лучше Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Вообще при объектном подходе критерии выбора весьма не однозначны. По какой причине можно из приведенных вариантов предпочесть один? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 17:03 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Вот я и стараюсь вас, гагар, информировать об элементах теории баз данных, о которых вы не знаете... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 01:20 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
В моделях данных (как правило) НЕТ понятия индексов, ModelR. Поэтому я ничего не утверждаю про "схемы индексирования". Пока... Я утверждаю только вполне очевидные вещи про связи вообще, и про связи многие-ко-многим, в частности... Полезно напомнить Вам (в связи с Вашими вариантами примера) высказывание Дейта: "... вся прежняя критика иерархического подхода ... относилась именно к иерархиям вложения... основным доводом такой критики было ОТСУТСТВИЕ СИММЕТРИИ. В частности, иерархии не совсем удобны для представления отношений типа "многие-ко многим". Например, для рассматриваемого ранее отношения поставщиков и деталей может возникнуть вопрос, содержатся ли объекты-поставщики в объектах-деталях или НАОБОРОТ. А может, верно и то и другое ?" В ОМД никаких мучений и двухсмысленностей нет. Связь многие-ко-многим представляется явно как связь многие-ко-многим, без всяких "вложений" одних объектов в другие... В НРМ мне было не понятно как представляется связь многие-ко-многим. Теперь понятно - как и в РМД... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 01:33 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Ну да, потому как ссылка в общепринятом понимании позволяет организовать доступ к данным только в одном напрвлении. Например в ОDMG для того, что бы оргизовать двунаправленную связь требуется определить ссылку и обратную ссылку (backref). При этом ИМХО не очень ясно, что делать когда в связи учавтсвует более двух объектов. Я немного отвлекусь, но ИМХО такое взгляд на ссылку ссылки так или иначе с указателями в адресуемой линенйной памяти. То есть можно если ячейка указывает на какой то кусок памяти (содержит ее адрес), то мы с легкостю идем по этому указателю - но обратн никогда. Так уж устроена эта самая адесуемая линейная память В НРМ все немного по другому. Ссылки задаюся направленно, но доступ по ним симметричен - то есть во всех направления. Я это уже задолбался повторять Андрею Леонидовичу. Вернемся к нашему простому примеру. Существует класса А и класс В. Класс А содержит ссылку(ки) на класс В. Случай первый... Код: plaintext 1. 2. 3. 4. 5. Случай второй... Код: plaintext 1. 2. 3. 4. 5. Случай третий.... Код: plaintext 1. 2. 3. 4. 5. 6. Наконец, четвертый случай... Код: plaintext 1. 2. 3. 4. 5. 6. В любом случае R-переменная компонента ref_comp представляет собой двуарное отношение с аатрибутами (OID, refOID), и в любом случае мы можем оперировать обеими атрибутами по отделности или вместе. Далее. Когда я говорю, что мы можем ходить по ссылке во всех направлениях, я в том числе подразумеваю, что можно определить компоент, содержащий не одну, но любое число ссылок . Это будет множественная связь. И для любого объекта мы можем найти все объекты, состоящие с ним данной связи. Андрей Леонидович требует, что бы связь была бы определна явно. Что же если приспичит :), то можно создать такой класс, назвав его "LinkBetween...". Но это идет против идей НРМ и мы ничего от этого не выиграем. И дело даже не в этом. Ув. АЛ предлагает для описания предметной области использовать по крайне мере четыре понятиями - "объект", "атрибут объекта", "связь", "атрибут связи". НРМ, не теряя в в функциональности, использует только два - "объект" и "компонент объекта". И как то не получается у Андрея Леонидовича доказать, что его навороты чем то выигрывают у предлагаемого в НРМ крайне простого подхода к описания данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 02:58 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей Леонидович. давайте больше к связям не возвращатся. Я даже готов согласен, что НРМ не смог выразить Ваши чаяния. В двадцатые раз повторяю, что такая цель даже не стояла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 03:04 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene В НРМ все немного по другому. Ссылки задаюся направленно, но доступ по ним симметричен - то есть во всех направления. Ну, не совсем симметричен - ведь ссылочная компонента принадлежит только одному из классов. U-gene Вернемся к нашему простому примеру. Существует класса А и класс В. Класс А содержит ссылку(ки) на класс В. Случай первый...я уже объснил. Каждый объект класса В может ссылаться на многие объекты класса А, и на каждый объект класса А могут ссылаться многие объекты класса В. Связь многие ко многим. А как сказать должен? NOT EMPTY SET OF ? Код: plaintext 1. 2. 3. 4. 5. Кстати, ассиметрия и в том, что описывая ссылки в B невозможно сказать, что на каждый А должен ссылаться один или более B. [quot U-gene] Случай третий.... Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 10:28 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
ModelR Ну, не совсем симметричен - ведь ссылочная компонента принадлежит только одному из классов. Ну так я и сказал - заданы направленно, Но доступ возможен в обоих направлениях. Вот связь многие ко многим Код: plaintext 1. 2. 3. 4. 5. Здесь задана нарправленная ссылка. Примеры доступ по ссылке Код: plaintext Код: plaintext Примеры доступа против ссылки Код: plaintext Код: plaintext 1. 2. Когда мы используем такого рода операциями, мы работаем по большому счету не со схемой одного из о-типов , а со общей и общедоступной схемой БД. Для того что бы пользовать явно определяемую связь(такую, какую хочет но не может ув.АЛ) надо либо знать,что такая связь есть, либо иметь возможность получить из системы связи в которых учавствуют объекты данного класса. Но ведь в НМР точно так же! Мы можем либо знать, что на объекты этого о-типа есть ссылки, либо получить эту информацию из каталога (и в любом случае мы знаем, на что ссылаются объекты данного о-типа ). В общем я еще раз повторяю, что ссылки только определяются направленными. Их дальнейшее использование ничем не отличается от симметричных связей. Давайте закроем вопрос [о b]явно определяемых, симметричных связях. Таких в НРМ нет. В онце концов речь шла о соединения РМД и ОО-языков, Поскольку ни в одном из исходных компонентов их тоже нет, не стоит ждать их и от НРМ. авторА как сказать должен? Я не знаю как сказать "должен". Речь идет о переменной, которая по определнию может содержать какие-то значения. Как сказать, что она должна это делать - я не знаю. ИМХО - это дело реализации. Поэтому фраза авторКстати, ассиметрия и в том, что описывая ссылки в B невозможно сказать, что на каждый А должен ссылаться один или более B. мне не понятна. авторО, интересно. Т.е. уникальность определяется уже на R-переменной, а не на классе. В НРМ есть такое ограничение целостности - глобальный ключ. Если поле в о-типе объявлено как глобальный ключ, то его значения уникакльны во всех объектах этого типа. Какой смысл оно может нести - не мое дело. Разный. Самый простой пример использование этого ограничения - поле содержащее номер документа, должно быть объявнего как глобальный ключ. Это гарантирует, что во всех объектах, описывающих документы, значение этого поля не может повторяться и будет гарантировано уникальным. Тот факт, что я использовал этот ключ, что бы объявить связь многие к одному - это всего лишь следствие из смысла это ключа. По сути тоже самое, что и с номерами документов - только здесь определяется уникальность не номеров, а ссылок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 12:09 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 U-gene ИМХО, вы слишком часто ссылаетесь на реализацию. Есть простой вопрос: данная реализация правильная или нет? Соответсвует НРМ или нет? Если достаточно, чтобы соблюдался синтаксис, то получается не модель данных а язык с открытой моделью. Модель данных все-таки должна быть замкнутой и позволять изображать и данные и формулировать результат операции. Упомянутый Должен... - это ограничение целостности, которое можно выразить в РМД как собственный предикат отношения (но не всегда в SQL DDL). Поэтому естественно этого ожидать и от НРМ. В целом мне нравится идея, но как именно модель данных по-моему требует более детального описания операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 16:41 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
авторУпомянутый Должен... - это ограничение целостности, которое можно выразить в РМД как собственный предикат отношения (но не всегда в SQL DDL). Поэтому естественно этого ожидать и от НРМ. ИМХО как собственный предикат отношения в РМД можно описать все , что угодно, а не только должен. Вспомник, как в примере описывается продажа. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Мы не поменяли схему, мы не изменили ключи - иначе о R-переменной компонента речи идти не могло. Предикат ограничивает значения некоторыми условиями и не влияет на такие важнейшии для определния вещи как схема и ключи. Предикат может быть переопределён. То есть предикаты - это дело реализации (типа). ИМХО они должны опрелеляться в реализации типа. Более того, система не реализующая поддержку таких условий все равно может быть R*O системой, хотя конечно такие возможности необходимы жизненно(но не формально). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 17:17 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Тьфу!ну почему здесь посты не редактируются? Предпоследний абзац читать так: Мы не поменяли схему, мы не изменили ключи - иначе о существовании R-переменной компонента речи идти не могло бы. Предикат ограничивает значения некоторыми условиями, однако он не влияет на такие важнейшии для определения R-перменной вещи как схема и ключи Он не может их изменить. Благодоря этому предикат может быть переопределён, из чего следует что предикат - это дело реализации типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 17:23 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Опять про ограничения... Если допускаются произвольные ограничения целостности базы, то видимо они не должны быть частью определения класса. Например что-то типа, Код: plaintext 1. 2. 3. 4. 5. 6. == означает сравнение групповых ссылок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 12:47 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
авторОпять про ограничения... Я повторяю, что такого рода ограничения целостности могут быть необходимы жизненно, но они не являются необходимиыми с формальной точки зрения. Но если вам так хочется... автор Код: plaintext Говоря про ограничения целолстноти данных, я имею в виду условия на значения лежащие в каких-то переменных. Мы здесь значения какой переменной ограничиваем? Давайте вернмся к обычным РСУБД. Есть две таблицы и мы хотим, что бы на все записи из первой таблицы, существовал бы FOREIGN KEY из второй таблицы. Мы как это сделаем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 14:26 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Но если вам так хочется... автор Код: plaintext Говоря про ограничения целолстноти данных, я имею в виду условия на значения лежащие в каких-то переменных. Мы здесь значения какой переменной ограничиваем? РМД предусматривает таже ограничения базы данных - согласованное состояние двух или более отношений, причем не только FK. (для примера см. Дейт 7е издание глава 8.5) U-gene Давайте вернмся к обычным РСУБД. Есть две таблицы и мы хотим, что бы на все записи из первой таблицы, существовал бы FOREIGN KEY из второй таблицы. Мы как это сделаем? Обычные РСУБД это ORACLE, ASA и др.? Насколько я знаю, декларативно они этого не умеют. Скорее всего напишем процедурный код, специфический для СУБД. Но причем здесь СУБД? Мы же обсуждаем модель. То что производители СУБД сочли некоторые свойства РМД тяжелыми для реализации или мало полезными не значит, что они должны исчезнуть из РМД. Кстати в стандарте SQL есть Assertion. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 17:41 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
ModelR РМД предусматривает таже ограничения базы данных - согласованное состояние двух или более отношений, причем не только FK. (для примера см. Дейт 7е издание глава 8.5) Ну да! состояние(значение) первой переменной отношения мы ограничиваем состоянием(значением) второй переменной, или наоборот (но не одновременно оба случая - см.дальше). В вашем примере мы состояние(значение) какой конкретно переменной ограничиваем? Кстати, как называется глава 8.5 в 7-м издании (у меня 6-е - буду искать)? Если "мы обсуждаем" модель, то я в третий раз повторяю, что такого рода ограничения целостности могут быть необходимы жизненно, но они не являются необходимиыми с формальной точки зрения. автор U-geneДавайте вернмся к обычным РСУБД. Есть две таблицы и мы хотим, что бы на все записи из первой таблицы, существовал бы FOREIGN KEY из второй таблицы. Мы как это сделаем? Обычные РСУБД это ORACLE, ASA и др.? Насколько я знаю, декларативно они этого не умеют. Они этого и не сумеют. Я же этот вопрос недаром задал. Просто если бы такое ограничение существовало, мы бы во вторую таблицу не смогли бы вставить не одной записи . Нет такой операции в РМД - добавить кортеж в одну таблицу и одновременно изменить кортеж другой таблицы - а без такой операции это ваше ограничение не выполнить!!! И то же будет с вашим автор Код: plaintext И здесь самое время вернуться к согласованному состоянию двух переменных отношений. Если первая зависит от второй, и, лодновременно, вторая от первой, то ИМХО возможны варианты, когда их вообще изменить нельзя будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 18:17 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Про связь "более двух объектов" говорить, пока, не стоит. Это, действительно, интереснейшая проблема, но Дейт и другие сторонники РМД только спекулируют на ней, намекая, что в РМД эта проблема будто-бы решена. Напоминаю, что просто совокупность n внешних ключей НЕ ПРЕДСТАВЛЯЕТ связь между n объектами (более того, сама эта совокупность ВООБЩЕ не нужна для представления связи) ! [Кстати, еще одна интересная фраза Дейта (опять про роль ключей в РМД), касающаяся связей (8-е издание, стр. 1051): "Термин СВЯЗЬ используется в объектно-ориентированных продуктах и в соответствующей литературе в основном для связей, представленных в реляционной системе внешними ключами." Вот как !] ... А я "не задолбался", и никогда "не задолбаюсь", повторять, что явно связь должна определяться: а) вне описания самих объектов (по Вашему - классов); б) и без создания класса "Link Between" !!! Это, во-первых. А, во-вторых, Вы опять забыли про собственные характеристики связи (количество товара на складе и т.п.). Какие навороты !? Не является количество товара на складе ни характеристикой товара, ни характеристикой склада. Это у Вас "завороты" (наверное, из хороших побуждений "минимализма"), а не у меня "навороты"... P.S. Давайте, давайте "к связям больше не возвращаться". Любопытно посмотреть как это получится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2005, 22:55 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Вы Андрей Леонидович, видимо, других аргументов окромя несвязной связки "Дейт сказал ..... а я считаю что нужны!" в оправдание необходимости явного определения связей найти не можете. На ваше "во-вторых" повторяю, что в компонентне моржет быть любое число атрибутов, и среди них - любое число атрибутов ссылочных типов и, соответсвенно любое число атрбутов нессылочных типов. Последние и представляют эти ваши харатеристики связи. В том же примере из НРМ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Вернемся к Вашему "во-первых". Является ли "количество товара на складе характеристикой товара", или не является - этому я доводов, кроме Вашего "да я зуб даю" так и не увидел. Вы эту мантру можете десять раз повторить, как и любую другую. Пропаганда. авторНапоминаю, что просто совокупность n внешних ключей НЕ ПРЕДСТАВЛЯЕТ связь между n объектами (более того, сама эта совокупность ВООБЩЕ не нужна для представления связи) ! А совокупнось n ссылок? И откуда Вы это напоминаете? И, кстати, если три восклицательных знака поставить, то будет куда убедительней!!! автор... А я "не задолбался", и никогда "не задолбаюсь", повторять, что явно связь должна определяться: а) вне описания самих объектов (по Вашему - классов); б) и без создания класса "Link Between" !!!Этот факт(чтоВы не задолбаетесь это повторять) я понял давно. Но нам гагарам не понятно другое - а почему? И вот мы гагары, задолбались Вас спрашивать "почему же она должна определяться явно?" А Вы снова "что тут неясного! я не задолбаюсь повторять, что должна!" Однако хочется чего то нового - например аргументов, отличных от лозугов. А то снова получается, что Вы сказочник про белого бычка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 02:33 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Андрей Леонидович еще Все таки интерсно, Вы специально мысли выворачиваете или у Вас просто мозг с логикой не дружит? автор[Кстати, еще одна интересная фраза Дейта (опять про роль ключей в РМД), касающаяся связей (8-е издание, стр. 1051): "Термин СВЯЗЬ используется в объектно-ориентированных продуктах и в соответствующей литературе в основном для связей, представленных в реляционной системе внешними ключами." Здесь нет про роль ключей. Здесь про вариант их использования. Здесь не сказано, что "внешние ключи использутся для представления связей"(тогда бы это было их "роль"). Здесь сказано, "связи представлены с помощью внешних ключей". Чувствуете разницу? Если не понятно, попробуйте сравнить две фразы "карандаши используются для рисования линий" и "линии нарисованы с помощью карандашей". Если использовать первую трактовку, то единственная "роль" карандашей - это рисование линий (карандаши должны рисовать линии). Если вторую, то ривование линий - всего лишь вариант использования карандашей(карандаши могут рисовать линии, а еще карандашами можно рисовать точки, птиц, писать буквы, ковыряться в носу и тп). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 03:31 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene ModelR РМД предусматривает таже ограничения базы данных - согласованное состояние двух или более отношений, причем не только FK. (для примера см. Дейт 7е издание глава 8.5) Ну да! состояние(значение) первой переменной отношения мы ограничиваем состоянием(значением) второй переменной, или наоборот (но не одновременно оба случая - см.дальше). В вашем примере мы состояние(значение) какой конкретно переменной ограничиваем? Кстати, как называется глава 8.5 в 7-м издании (у меня 6-е - буду искать)? "8.Целостность данных","8.5Ограничения баз данных" U-gene Если "мы обсуждаем" модель, то я в третий раз повторяю, что такого рода ограничения целостности могут быть необходимы жизненно, но они не являются необходимиыми с формальной точки зрения. Необходимо наличие способа их задать. U-gene автор U-geneДавайте вернмся к обычным РСУБД. Есть две таблицы и мы хотим, что бы на все записи из первой таблицы, существовал бы FOREIGN KEY из второй таблицы. Мы как это сделаем? Обычные РСУБД это ORACLE, ASA и др.? Насколько я знаю, декларативно они этого не умеют. Они этого и не сумеют. Я же этот вопрос недаром задал. Просто если бы такое ограничение существовало, мы бы во вторую таблицу не смогли бы вставить не одной записи . Нет такой операции в РМД - добавить кортеж в одну таблицу и одновременно изменить кортеж другой таблицы - а без такой операции это ваше ограничение не выполнить!!! И то же будет с вашим автор Код: plaintext И здесь самое время вернуться к согласованному состоянию двух переменных отношений. Если первая зависит от второй, и, лодновременно, вторая от первой, то ИМХО возможны варианты, когда их вообще изменить нельзя будет.Так на это и существуют транзакции. Целостность ограничений базы должна естественно проверяться для транзакции, а не отдельной операции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 11:11 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
1. Скажите, U-gene, если это не "раздувание флейма": Вы к чему склоняетесь: - мир "состоит" из не связанных объектов, или - "только из объектов"; ИЛИ - мио состоит из взаимосвязанных объектов, или - "из объектов и связей между ними" ? Предположим, что "объекты" ЕСТЬ. Следует ли их явно представлять в базе данных, если ЭТО ПОЛУЧАЕТСЯ ? Или не стоит, даже если получается !? То есть лучше для чего-то исказить представление окружающего мира в базе данных ? А теперь, если предположить, что связи между объектами тоже ЕСТЬ, зададим себе тот же вопрос. Следует ли их явно представлять в базе данных, если ЭТО ПОЛУЧАЕТСЯ ? Или не стоит, даже если получается !? То есть лучше для чего-то исказить представление окружающего мира в базе данных ? 2. Итак, Ваше предположение, что "количество товара на складе является характеристикой товара" - это не пропаганда, а убеждение ? Своеобразное представление об окружающем мире. Но я, конечно, уважаю любое своеобразное представление... 3. И совокупность n ссылок тоже не представляет ! Жаль, если Вы этого не понимаете... 4. Ведь Ваш мозг с логикой дружит ! Не могли бы Вы перечислить ДРУГИЕ ВАРИАНТЫ использования внешних ключей, у которых, как Вы опять настаиваете, только ОДНА РОЛЬ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2005, 20:53 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ModelR автор"8.Целостность данных","8.5Ограничения баз данных"В 6-м издании я это аж в 16-й главе нашел. Последенее издание что ли купить? Там, как мне показалость, все достаточно четко расписано, а именно "Ограничение целостноти БД является правилом, которое задается для двух или более связанных между собой отношений". То есть существует операция, связывающая между собой несколько отношений (замечу, что ранее Дейт оговаривается, что используя слово "отношение" он подразумевает "переменную отношения"). На результат этой операции наложено условие. По большому счету это все тот же предикат отношения, однако указанное отношение является вычисляемым. Соответсвенно, я не выделяю ограничения целостности РБД в отдельную кучку. Для меня сущечтвовуют ограничения на возможные значения отношений, которые могут быть и хранимыми, и вычисляемыми. Далее (в 6-м издании) Дейт говорит, что "ограничения БД не проверяются незамедлительно" и ведет речь о откатах, COMMITах и т.п. Только я хочу заметить, что транзакции, являясь крайне полезной фишкой, не являются частью РМД. Да собственно и Дейт говорит здесь(в 6-м издании!) про целостность прменительно не к модели данных, а к СУБД (т.е. к системам реализующим эту модель). Во всяком случае там именно так это все звучит. Про целостность данных, как это понимается в РМД (т.е. про ключи), он в этом издании в отдельной 5-й главе пишет. Почему так издание оговариваю? Просто я посмотрел где то тут оглавление нового издания и немножко пришел в ужас. Я конечно понимаю что Дейт - крутой дядька. Однако ИМХО раньше оно как то понятней было. Поясню. Отдельно существует формальная РМД (отношения, операции, ограничения). Отдельно сущетсвуют концепции, которые могут применяться в общем то к любым системам хранения данных - например те же транзакции. Отдельно имеются некие языковые фишки - генераторы типов и .т.п.вещи. Соответсвенно РМД в таком "классическом" виде, например, не требует понимания транзакций. А у Дейта, судя по оглавлению 8-го издания (сегодня же покупаю), все это свалено в кучу (в отличии от 6-го). Например в 6-м издании транзакции появляются аж на 354-й станице (гораздо позже объяснения РМД) а в 8-м они появляются аж в 3-й главе ("Введение в РБД"). Почему? Потому что без них "ограничения БД" не объяснить? Неужели BEGIN TRANSACTION стало операцией РМД? В общем куплю книжку - буду разбираться. К чему я так растекся мыслью? автор...Так на это и существуют транзакции. Целостность ограничений базы должна естественно проверяться для транзакции, а не отдельной операции. Вобщем в НРМ я не словом про транзакции не упоминаю (кроме как в одном примере, где они к основному излождения никак не относятся). Соотвественно, я такого рода ограничения вводить не могу. Да и не хочу. Может быть потому, что У НРМ нет цели "дать подробное описание операций, требующееся именно как для модели данных". Цель другая - продемонстрировать возможный подход к объекдинения свойств ОО и рел. систем в рамках единой системы.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2005, 14:47 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
автор1.......Вы к чему склоняетесь: - мир "состоит" из не связанных объектов, или - "только из объектов"; ИЛИ - мио состоит из взаимосвязанных объектов, или - "из объектов и связей между ними" ? Предположим, что "объекты" ЕСТЬ. Следует ли их явно представлять в базе данных, если ЭТО ПОЛУЧАЕТСЯ ? Или не стоит, даже если получается !? То есть лучше для чего-то исказить представление окружающего мира в базе данных ? А теперь, если предположить, что связи между объектами тоже ЕСТЬ, зададим себе тот же вопрос. Следует ли их явно представлять в базе данных, если ЭТО ПОЛУЧАЕТСЯ ? Или не стоит, даже если получается !? То есть лучше для чего-то исказить представление окружающего мира в базе данных ?Я не к чему не склоняюсь - я даю систему типов. Кстати - Вы бы заморочились тем же! С вашими тараками только в путь!!!Как нибудь формализовали бы Вашу ОМД, чтоб появилось хоть что то , что можно хоть как-то предметно обсуждать? Вашы формулы я так и не нашел и, видимо, (раз Вы сами не помните где они есть) они не являют собой особую ценность. автор2. Итак, Ваше предположение, что "количество товара на складе является характеристикой товара" - это не пропаганда, а убеждение ? Своеобразное представление об окружающем мире. Но я, конечно, уважаю любое своеобразное представление... Ну вот - Вы опять путаете. В НРМ в примере "количество товара на складе" рассматоривается как информация характеризующая склад. По отношению к товарам, это можно было бы описать как "размещение товара по складам". Но дело не в этом. Все это не предположение, не пропаганда и не убеждение - это способ , которым данная связь может быть в этой системе типов выражена. Когда я увижу Вашу систему типов, тогда можно будет о чем то говорить и что то сравнивать. А иначе Вы можете просто сказать "а хочу что бы ВСЁ! и СРАЗУ! - что у вас не так? ну и дураки вы все". Чем собственно Вы и знимаетесь. Например... автор3. И совокупность n ссылок тоже не представляет ! Жаль, если Вы этого не понимаете... Куда уж нам, гагарам, до таинств полета Вашей мысли (это жжжжж неспроста)... Вы еще не задолбались доказывать свою правоту, путем повторения мантры "я прав и все тут"? автор4. Ведь Ваш мозг с логикой дружит ! Не могли бы Вы перечислить ДРУГИЕ ВАРИАНТЫ использования внешних ключей, , у которых, как Вы опять настаиваете, только ОДНА РОЛЬ...ГЫ-ГЫ. А я их не хочу перечислять. Я рассматриваю ключи как равенство 2+2=4. А Вы пытаетесь мне задать вопрос "Не могли бы Вы перечислить ДРУГИЕ ВАРИАНТЫ использования этого равенства, кроме как для сложения количеств и расстояний?" Дык меня то интересует само равенство, а не то, как Вы будете его "использовать". Используйте как хотите. Какую "РОЛЬ" дадите, ту они и будут "ИГРАТЬ". А изначально нет у ключей "РОЛЕЙ". Ни одной, ни двух, ни десяти. Я на этом настаиваю.... В общем резюмирую - Вы так и не смогли показать, что связь, описанная явно, хоть чем-то лучще, чем связи представленная в том виде, как это предложено в НРМ. Никаких аргументов, окромя "я точно знаю" и "это же очевидно" обществу не представлено. Были "какие-то" формулы но и они сгинули во мгле веков. И эти люди запре...тьфу, приглашают меня на семинар? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2005, 15:32 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Транзакции конечно не часть РМД. Про то, как и когда проверять ограничение типа 1:1 , которое требует одновременного изменения двух таблиц, РМД отвечать не призвана, равно как и про порядок проверки любых других ограничений. Однако если СУБД претендует на соответствие РМД, она должна уметь работать со всеми допускаемыми РМД ограничениями. Т.е. необходимость транзакций в СУБД следует из требования соответствия РМД, хотя и не является частью РМД. Воля автора как поступить со своим творением :), однако ничего невозможного в ограничении Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2005, 15:43 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Однако если долго долбить, можно что-то выдолбить. Вот здесь я предположил, что было бы неплохо объявлять глобально видимые группоывые ссылки. На самом деле групповая ссылка - всего лишь один из простейших случаев переменной значимого типа. Но раз я сказал "а" имеет смысл сказать и "б"? Может быть имеет смысл в глобальных перменных с более сложной структурой? Например Код: plaintext На выходе получаем глобально определнную переменную типа-отношения varA2B , возможная РОЛЬ которой будет заключаться в явном представлении связи между объектами класса A и класса B. В общем если ув. АЛ это устроит :), то я буду думать, а если не устроит, то буду думать все равно ;). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2005, 15:49 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ModelR Дык я про то и говорю! У Дейта в 6-м издании ограничение для БД не являлось ограничением РМД! Оно в таком виде появилось только в 8-м!!!А меня пока и 6-е устраивает :).... В конце концов, нельзя же всем на слово верить, хоть это и Дейт - НРМ этот факт буквально во введении отмечает.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2005, 15:56 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Какие уж "формулы", если Вы не обращаете внимания даже на самые элементарные текущие высказывания, причем, что очень важно, хорошо известные и без меня. Например, про n! перестановок... Зря Вы надеетесь, что связь должна быть ВЫРАЖЕНА В СИСТЕМЕ ТИПОВ. Мне "заморачиваться" не нужно. И объекты, и связи между ними существуют независимо от "систем типов". И я "склоняюсь" к отражению этой, по моему очень простой мысли (при чем здесь "дураки вы все" ?), в базе данных... Меня устроит, на данном этапе: а) идентификация сущностей идентификаторами, которые не являются одной из характеристик сущности; б) явное представление связей между сущностями путем "связывания идентификаторов"; раз идентификаторы не интегрируются в объект, в "один ряд с характеристиками", то и связи ТЕМ БОЛЕЕ не следует интегрировать в объекты (в "один ряд с характеристиками объектов")... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2005, 23:10 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Андрей Леонидович Да!... Какие уж "формулы"...(с)ув.А.Л. если их попросту нет. авторЗря Вы надеетесь, что связь должна быть ВЫРАЖЕНА В СИСТЕМЕ ТИПОВ. А в чем она должна быть выражена? Словами? Мы тут "Войну и Мир" пишем? Такие весчи, как "тип", "значение" и "переменная" для Вас роли не играют? Мы что, данные будем через "жжжжж" из Вашей головы описывать? И этот человек запрещает мне ковы...тьфу, приглашают меня на семинар? авторМеня устроит, на данном этапе: а) идентификация сущностей идентификаторами, которые не являются одной из характеристик сущности; б) явное представление связей между сущностями путем "связывания идентификаторов"; раз идентификаторы не интегрируются в объект, в "один ряд с характеристиками", то и связи ТЕМ БОЛЕЕ не следует интегрировать в объекты (в "один ряд с характеристиками объектов")... Значит НРМ (с учетом некоторых дополнений ) Вас должно, как это не печально, устроить... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 09:58 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичМеня устроит, на данном этапе: а) идентификация сущностей идентификаторами, которые не являются одной из характеристик сущности; б) явное представление связей между сущностями путем "связывания идентификаторов"; раз идентификаторы не интегрируются в объект, в "один ряд с характеристиками", то и связи ТЕМ БОЛЕЕ не следует интегрировать в объекты (в "один ряд с характеристиками объектов")... С формальной точки зрения а)Идентитфикаторы и даже адреса - тоже характеристики. Как только мы нечто связали с сущностью, это нечто стало ее характеризовать, а пока не связали -оно не способно эту сущность идентифицировать. б)Агрегат из идентификаторов и даже только из идентификаторов - тоже сущность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 15:54 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Вы, U-gene, меня вынуждаете делать то, за что (как, впрочем, и за все остальное) меня здесь обзывают "нехорошими словами" - "копипастить" (даже Вы периодически скатываетесь на "иронию", когда чего-то не понимаете)... Итак, не "Зря Вы надеетесь, что связь должна быть ВЫРАЖЕНА В СИСТЕМЕ ТИПОВ." а "Зря Вы надеетесь, что связь должна быть ВЫРАЖЕНА В СИСТЕМЕ ТИПОВ. Мне "заморачиваться" не нужно. И объекты, и связи между ними существуют независимо от "систем типов". И я "склоняюсь" к отражению этой, по моему очень простой мысли (при чем здесь "дураки вы все" ?), в базе данных..." А на Ваше "нововведение" я, конечно, обратил внимание. Но ! Чем "глобально определенная переменная типа-отношения varA2B, возможная [???-А.Л.] РОЛЬ которой будет заключаться в явном [???-А.Л.] представлении связи между объектами класса A и класса B" лучше класса A2B ??? И в том, и в другом случае система (НРМ в том числе) НЕ ЗНАЕТ, что это связь... Кодд (в начале "реляционного пути") много работал в этом направлении (представления связей между сущностями каким-то специальным типом отношения)... Может у Вас что-нибудь получится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 22:41 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Именно с формальной точки зрения я Вам и возражаю, ModelR: 1) идентификаторы - это не характеристики объектов; 2) "агрегат из идентификаторов" - не сущность. Кстати, вспомнил где я, по просьбе Мимо пробегал, приводил хорошо известные "формулы" для ОМД: раздел "Проектирование БД", тема "вопрос по парадигмам БД" (где-то в апреле или мае этого года)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 22:47 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Очевидно в Ващей голове они и существуют независимо от системы типов. Но когда мы говорим о системе хранения данных . без системы типов не обойтись. Понимете, данные - это и есть значения. Для хранения значений в системе существуют переменные. И то и другое относится к некторому типу (в полиморфных системах - к нескольким типам). Интересно,кк Вы описшете перменную содержащую данные о связи(связях)? Или может Вы собираетесть в своей системе, реализующей ОМД, и без переменных обойтись? Или как-то еще, да так, что мы все равно не поймем, а Вы, дабы не вводить нас в комплексы, озвучивать не будете? Вы же сами говорите, что Кодд , пытался "представить связь между сущностями каким то специальным типом отношения" и советуете мне занятся тем же! Так что, неопределённый Вы наш, все же определитесь раз и навсегда(хотя бы для себя) - нужно заниматься типами, или не нужно? Конечно Вам "заморачиваться типами" не нужно. Легче сидеть и пускать мыльные пузыри квазигениальных мыслей, которые лопаются при малейшем касании. А Вам то что? Лонул - Вы новый надуете. Например... Именно с формальной точки зрения я Вам и возражаю, ModelR: 1) идентификаторы - это не характеристики объектов; 2) "агрегат из идентификаторов" - не сущность. И?... сколько раз Вы этот псевдо"формальный" пузырь опять надуете? Сколько еще раз Вы пукнете в мутную мыльную воду? Очевидно Ваши "формулы" такие же "псевдо", раз Вы стесняетесь о них вспомнить.... Пукнули, надули, и сами не помните где и о чем. Чем "глобально определенная переменная типа-отношения varA2B, возможная [???-А.Л.] РОЛЬ которой будет заключаться в явном [???-А.Л.] представлении связи между объектами класса A и класса B" лучше класса A2B ??? А где Вы видели класс А2В? Опишите этот класс и я скажу Вам, чем такая переменная лучше.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 23:30 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneСударь, умоляю, не хамите, не переходите на личности, ей-Богу, не украшает, лучше не отвечайте... P.S. Надеялся, что хоть здесь останутся в рамках, тема-то вполне достойная... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2005, 23:49 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
В системе, РЕАЛИЗУЮЩЕЙ ОМД, без "переменных" не обойтись. А в ОМД - обойтись. Совершенно не имеет значения какой ТИП Вы ПРИДУМАЕТЕ для ИДЕНТИФИКАТОРОВ при реализации ОМД. Суть (если Вы ее поняли) от этого не изменится. Я давно определился. Вы вынуждены заниматься типами, а для меня - это вторично. Я уже "докладывал" о своем отношении к "пользовательским типам", и даже рассказывал про реализацию типа "габаритные размеры" a*b*c - где a,b,c - ... и т.д. Поэтому успокойтесь, посмотрите "на формулы" раз "на словах" что-то не понятно, и продолжим... Итак, не "Зря Вы надеетесь, что связь должна быть ВЫРАЖЕНА В СИСТЕМЕ ТИПОВ." а "Зря Вы надеетесь, что связь должна быть ВЫРАЖЕНА В СИСТЕМЕ ТИПОВ. Мне "заморачиваться" не нужно. И объекты, и связи между ними существуют независимо от "систем типов". И я "склоняюсь" к отражению этой, по моему очень простой мысли (при чем здесь "дураки вы все" ?), в базе данных..." А на Ваше "нововведение" я, конечно, обратил внимание. Но ! Чем "глобально определенная переменная типа-отношения varA2B, возможная [???-А.Л.] РОЛЬ которой будет заключаться в явном [???-А.Л.] представлении связи между объектами класса A и класса B" лучше класса A2B ??? И в том, и в другом случае система (НРМ в том числе) НЕ ЗНАЕТ, что это связь... Кодд (в начале "реляционного пути") много работал в этом направлении (представления связей между сущностями каким-то специальным типом отношения)... Может у Вас что-нибудь получится... P.S. Неужели не поняли про класс A2B, и не можете сказать чем он хуже ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 00:57 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
To U-gene Я тут начал читать Вашу работу. Правильно ли я понял, что основной её пафос заключён в том, что в ответ на ворос "Чем является объектный класс - доменом или отношением?" Вы воскликнули "И тем и другим!"? И пытаетесь найти подход к решению этой дилеммы? Я просто проверяю свои ощущения. Пока без критики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 08:49 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Всё же рискну ещё раз вступить. Андрей Леонидович1) идентификаторы - это не характеристики объектов; 2) "агрегат из идентификаторов" - не сущность.Объясните мне, почему это так важно? Ну вот не понимаю я, почему это столь необходимо, чтобы идентификатор не являлся характеристикой объекта? Ну почему? Почему Вы отказываете идентификатору в прерогативе быть атрибутом, характеристикой объекта? Что это даёт, какие преимущества? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 08:54 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Павел Воронцов Нет. Как раз отношением класс не является. ИМХО Вы перечислили те же два подхода к решению, какими исходно ограничивается Дейт в "Третьем Манифесте". Один подход правильный (класс = домен), другой неправильный (класс = отношение). Тут Вы меня не ущучите :). То что я предлагаю, это не то и не другое. Вообще. Так что Ваши ощущения не совсем верны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 09:55 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene 2 Павел Воронцов Нет. Как раз отношением класс не является. ИМХО Вы перечислили те же два подхода к решению, какими исходно ограничивается Дейт в "Третьем Манифесте". Один подход правильный (класс = домен), другой неправильный (класс = отношение). Тут Вы меня не ущучите :). То что я предлагаю, это не то и не другое. Вообще. Так что Ваши ощущения не совсем верны.Ок, Вас понял, пойду медитировать над текстом дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 11:15 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ChA Я не, то что бы хамлю. Это просто иной способ выбить из ув.А.Л. что-то, что отличалось бы от его " я формально заявляю, что (1) очевидно что (2) широко известно что (3) я еще раз это повторяю (4) я об этом неоднократно писал (5) как жаль что Вы это не понимаете (6) см. (1) (2) (3) (4) (5)" и так много раз. 2 ув.А.Л. В системе, РЕАЛИЗУЮЩЕЙ ОМД, без "переменных" не обойтись. А в ОМД - обойтись. Совершенно не имеет значения какой ТИП Вы ПРИДУМАЕТЕ для ИДЕНТИФИКАТОРОВ при реализации ОМД. Суть (если Вы ее поняли) от этого не изменится. Я давно определился. Вы вынуждены заниматься типами, а для меня - это вторично. Я уже "докладывал" о своем отношении к "пользовательским типам", и даже рассказывал про реализацию типа "габаритные размеры" a*b*c - где a,b,c - ... и т.д. Поэтому успокойтесь, посмотрите "на формулы" раз "на словах" что-то не понятно, и продолжим... Ну тогда Вы занимаетесь исключительно концептуальным моделированием. А про это я продолжать не буду. Я же Вам сказал заявил , что U-geneПозволит ли он (уровень астракции, реализуемой системой) адекватно отобразить все ваши "объекты", "сущности", "связи" и т.п? Я не знаю - это Вам решать. Поэтому я прошу - воспринимайте это как описание системы (этакий теоретический user manual) и решайте, насколько она соответсвует Вашим конкретным задачам. При этом я прошу учесть, что речь идет о соотвествии в таких труднообъяснимых вещах как выразительность, адекватность и т.п. Далее Вы заморочилисмь связями. В конечном итоге для Вас было предложено аж три спосособа выражения связи - с помощью ключей, с помощью содержащих ссылки компонентов объектов и, наконец, с помощью глобальных переменных значимых типов, причем последний способ в точности выражает вашу связь. Я давно определился. Вы вынуждены заниматься типами, а для меня - это вторично. Я уже "докладывал" о своем отношении к "пользовательским типам", и даже рассказывал про реализацию типа "габаритные размеры" a*b*c - где a,b,c - ... и т.д. А для меня вторично то, чем Вы занимаетесь. Точнее Вы про это так и не удосужились внятно рассказать(опус с "объект vs субъект", я в рассчет не беру). ИМХО Вы занимаетесь висящим в воздухе описанием предметной области и говорите, что бы было бы неплохо что бы система это Ваше описание выразила. Но эта деятельность непосредственно к системам хранения данных так или иначе оперирующим значениями , переменными и типами , имеет мало отношения (Это как творчество Жюля Верна соотгносится с современными технологиями). И опять же! Вы можете описать хоть что то? Я уж не говорю про систему типов (хотя почему бы, не существовать типу, который бы обзывался как связь?), или про операции! Но хоть какие нибудь приблизительные команды этой Вашей мифической ОМД системы? Как туда данные заносить, как доставать (или оно само все будет работать)? (у Жюля Верна с этим посильнее было) А иначе все Ваши мысли по поводу - просто фантазии и "жжжжжж". Опять же - если Вы занимаетесь концептуальными моделями, непонятно, какого фига Вы докопались к таковой не являющейся РМД, зачем Вы сравниваете ее с ващей ОМД? Поэтому успокойтесь, посмотрите "на формулы"...Иных уж нет и те далече... Так где же они - эти формулы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 11:22 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Павел ВоронцовВсё же рискну ещё раз вступить. Андрей Леонидович1) идентификаторы - это не характеристики объектов; 2) "агрегат из идентификаторов" - не сущность.Объясните мне, почему это так важно? Ну вот не понимаю я, почему это столь необходимо, чтобы идентификатор не являлся характеристикой объекта? Ну почему? Почему Вы отказываете идентификатору в прерогативе быть атрибутом, характеристикой объекта? Что это даёт, какие преимущества? Возможно АЛ опять говорит об объектах реального мира. В реальных объектах действительно нет никаких характеристик-идентификаторов. Идентификаторы появляются на этапе реализации СУБД, где хранятся описания объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 14:38 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
serg99Возможно АЛ опять говорит об объектах реального мира. В реальных объектах действительно нет никаких характеристик-идентификаторов. Идентификаторы появляются на этапе реализации СУБД, где хранятся описания объектов.Так, хорошо... И что из этого следует? Их там действительно нету, но вот чтобы как-то в этом обилии ориентироваться, люди придумали имена, клички, инвентарные и каталожные номера, штрих-коды и прочая и прочя и прочая. И с радостью этими идентификаторами пользуются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 15:02 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Павел Воронцов serg99Возможно АЛ опять говорит об объектах реального мира. В реальных объектах действительно нет никаких характеристик-идентификаторов. Идентификаторы появляются на этапе реализации СУБД, где хранятся описания объектов.Так, хорошо... И что из этого следует? Их там действительно нету, но вот чтобы как-то в этом обилии ориентироваться, люди придумали имена, клички, инвентарные и каталожные номера, штрих-коды и прочая и прочя и прочая. И с радостью этими идентификаторами пользуются. Я просто отметил, что часто люди смешивают объекты реального мира с описаниями объектов в БД (как впрочем ООП и объектный подход к хранению данных). Что хотел сказать автор высказывания лучше спросить у самого автора. В общем то АЛ в разных топиках высказывал несколько вполне здравых мыслей, просто похоже эти мысли у него не сложились в полную систему, а самое главное что он не желает свои мысли сколько нибудь внятно изложить. Ну а форма в какой он ведет полемику просто обескураживает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 16:05 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Вообще то идентификаторы - это такая скользкая тема....Однако я ,удучи тут, рискну на нее немножко ступить. Взять например большую библиотеку. У нее унутри есть каталожные номера, полки, шкафы. Однако читатель, который снаружи, всего этого не знает. Он приходит и говорит "Дайте мне Горе от Ума". Библиотекарь находит каталожный номер и по нему определяет где искать книгу. Каталожный номер (ID) есть , однако он находиться внутри библиотеки (системы). Читателю (пользователю программисту) про этот номер (ID) знать не нужно. С другой стороны OID можно воспринимать ИМХО как выраженное в системе такое свойство любого объекта( не очень осознаваемое!) как сам факт его существования, а так же тот факт, что, существуя, он как то отличается от любых других объектов. Но это настолько абстракная абстракция, что ее никакими явно задаваемыми значениями не опишешь. И, что самое важное, этого и не надо делать. Главное, что бы система как-то(!) отражала тот факт существования объектов и их различния. Для этого она может использовать OID..... и снова получается, что OID дело системы. Пользователю им заморачиваться не нужно. Люди конечно же придумали "имена, клички, инвентарные и каталожные номера, штрих-коды и прочая и прочая и прочая". Но вот требуется мне создать модель мешка с яблоками, причем каждое яблоко надо замоделировать по отдельности. Никаких кличек, номеров и штрих-кодов у этих яблок нет (есть разве что координаты в пространсве, но я же ими пользоваться не буду?). Яблоки могут иметь одинаковые цвет вес и форму. Но система как то эти значения должна отличать? Ведь какая то информация , отражающая факт существования каждого яблока в отдельности, в информационной системе должна присутсвовать? Но это дело системы и эта информация (идентификатор) не есть характеристика объекта предметной области. Это системное значение, которое система ставит в соответствие значению, описывающее состояние реально существующего объекта. Это может быть, например, адрес переменной, это может быть что-то еще и как-то еще(например, в НМР OID ассоциируется). И это не есть понятие, который нужно применять в концептуальном моделировании, поскольку смысл OID целиком и полностью выражается фразой "существует объект". Именно поэтому меня вопрос ув.А.Л. опять повергает в пучину тягостных раздумий :). Ежели для него типы а, следовательно, значения и переменные вторичны, если он ярый концептуалист, то зачем он слово "сущность"(т..е то, что существует) связывает со словом "идентификатор"? Его же, как концептуалиста, должно устроить "на данном этапе: а) сущности; б) явное представление связей между сущностями" и все!.... Хотя, я не удивлюсь, если ув.А.Л к сущностям и идентификаторам еще и индексы потребует... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 17:24 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneНо система как то эти значения должна отличать?Если объекты неразличимы, то никакие суррогатные идентификаторы не спасут ситуации, так как на уровне реальности Вы их все равно различить не можете и, следовательно, оперировать ими. Постановка кажется некорректной. В лучшем случае, пользоватся пространственными координатами :) В противном случае, сам по себе идентификатор не придает индивидуальности объекту, так как нельзя узнать какому объекту соотвествует конкретный идентификатор и наоборот. Впрочем, это очевидно, и не заслуживает особого внимания. P.S. Это как в термодинамике, отдельные молекулы не нумеруются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 17:55 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Нет, Павел Воронцов, не "с радостью". И не "скользкая тема" - идентификаторы, U-gene, а вполне нормальная. И я подробно об этом говорил. Одна только вечная морока с естественными и суррогатными ключами чего стоит. А идентификаторы просто и надежно эту мороку исключают. А так же мороку с "функциональными зависимостями" и "теорией нормализации". Все становится (и было до РМД) просто, надежно и эффективно. Потому что, заодно, получаем и семантику, и навигацию... Не могу поверить, честное слово, что Вы чего-то не поняли... ...Да, раз десять уже повторял, что индексы в ОСУБД - полноценная часть данных, к ним есть доступ в терминах модели данных; приводил банальный пример (с продажей железнодорожных билетов)... А Вы, U-gene, вдруг, говорите, "не удивлюсь, если" ?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 23:19 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Нет, U-gene, так дело не пойдет. Не хотите отвечать на вопрос, не отвечайте, но зачем "воду мутить" ? Я же четко выразил свою мысль (к тому же давно реализованную): даже "собственные идентификаторы" не следует смешивать с характеристиками экземпляра, и, тем более, идентификаторы экземпляров других объектов не следует смешивать с характеристиками экземпляра... Вы это, вроде, поняли, и предложили некий вариант будто бы "явного представления связей". Невольно возник вопрос: чем "глобально определенная переменная типа-отношения varA2B, возможная [???-А.Л.] РОЛЬ которой будет заключаться в явном [???-А.Л.] представлении связи между объектами класса A и класса B" лучше класса A2B ??? И в том, и в другом случае система (НРМ в том числе) НЕ ЗНАЕТ, что это связь ! Кроме того, я напомнил, что Кодд (в начале "реляционного пути") много работал в этом направлении (представления связей между сущностями каким-то специальным типом отношения). Но ничего в этом плане не получилось (с алгеброй, видимо, "не состыковалось"). Может у Вас что-нибудь получится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2005, 23:28 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
ChAЕсли объекты неразличимы, то никакие суррогатные идентификаторы не спасут ситуации, так как на уровне реальности Вы их все равно различить не можете и, следовательно, оперировать ими. Постановка кажется некорректной. В лучшем случае, пользоватся пространственными координатами :) В противном случае, сам по себе идентификатор не придает индивидуальности объекту, так как нельзя узнать какому объекту соотвествует конкретный идентификатор и наоборот. Впрочем, это очевидно, и не заслуживает особого внимания. Здесь мы просто переходим на уровень концептуальной модели предметной области. Если для решения практической задачи не важны различия между реальными объектами, то и не надо в модели предметной области заводить их как объекты. Например в вышеприведенном случае тогда не нужно вообще вводить объекты - "яблоки". Остаются объекты - "мешки" с атрибутом "количество яблок в мешке". То есть в реальности объекты "яблоки" существуют, но в модели предметной области - нет. U-gene правильно отметил что OID это не характеристика реального объекта, а характеристика ОПИСАНИЯ объекта хранимого в БД, которая вводится на уровне СУБД для облегчения манипуляции данными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 00:55 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
serg99Если для решения практической задачи не важны различия между реальными объектами, то и не надо в модели предметной области заводить их как объекты. Например в вышеприведенном случае тогда не нужно вообще вводить объекты - "яблоки". Остаются объекты - "мешки" с атрибутом "количество яблок в мешке". То есть в реальности объекты "яблоки" существуют, но в модели предметной области - нет.Собственно, отчасти, именно это и подразумевалось, но, кроме того, хотелось подчеркнуть, что если есть необходимость различать объекты, то помимо идентификатора обязательно должен присутствовать некий естественный ключ, позволяющий однозначно соотнести объекты модели с объектами реального мира. Иными словами, не может быть построена модель, оперирующая объектами, пока не будет способа их различить каким-либо иным способом, кроме суррогатного OID, например, те же пространственные координаты... P.S. Собственно, не оспариваю подход U-gene, просто момент показался любопытным... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 04:04 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
И, еще раз подчеркну - нужно осознать фундаментальную роль идентификации в БД. Вот и Ваш пример с яблоками, U-gene. Про идентификацию экземпляров Вы очень хорошо рассуждали. Но что значит "яблоко" ? А если "apple", то что ? НЕТ ИДЕНТИФИКАЦИИ - НЕТ СЕМАНТИКИ. Вспомните наш давний "спор", и мои разъяснения про АБСТРАКТНЫЕ объекты (объекты в ОМД) и КОНКРЕТНЫЕ объекты (экземпляры в ОМД). Так вот у объектов, а не только у экземпляров, тоже есть идентификаторы в ОМД, наряду с именами (семантикой). Как, впрочем, и у связей (наряду с семантикой в обоих направлениях), и у характеристик объектов и связей (наряду с именами)... А в НРМ ничего этого нет... P.S. Напоминаю, что в ОМД, конечно же, есть уникальные характеристики. И используются они на практике очень редко, в хорошо известных "мировых случаях", типа "идентификации личности" или "организации" для "связи с внешним миром". Я намеренно не называю их "ключами", чтобы не возникало ассоциаций, например, с "внешними ключами" - ведь уникальные характеристики не используются для связей между экземплярами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 08:19 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Во-первых, вызывает сомнение термин "реальный мир" в противопоставлении с БД. Я бы лучше сказал внешний мир, ибо по степени реальности что база данных, что бумажная накладная, что стандарт или ТУ на продукцию ничем не отличаются. К тому же все бОльшую часть внешнего мира составляю другие базы данных. Во-вторых, идентификаторы могут использоваться во внешнем мире, и не могут не использоваться в БД. В некоторых случаях, если повезет, идентификаторы внешнего мира и БД могут быть согласованы (бизнес-ключи БД): либо мы полагаемся на созданные во внешнем мире идентификаторы (естественные ключи БД), либо некто во внешнем мире считает нашу систему идентификации достаточно надежной (искусственные ключи БД). В большинстве же слуаев мы создаем в БД чисто внутреннюю систему идентификации (суррогатные ключи). РМД рассматривает все, в том числе суррогатные, идентификаторы как равноправные атриубты таблиц, как часть соответствующего предиката, типа "Существует человек с ИД..., фамилией ....", тем самым позволяя оперировать ими обычным SQL. Вряд ли нужно отказываться от этого преимущества. Для характеризации специфического поведения идентификаторов имеются понятия ключи и внешние ключи. Что касается связей между экземплярами, о которой РМД ничего не знает ибо таблица, представлюящая связь, действительно ничем не отличается от любой другой таблицы. Это вопрос может быть легко решен с помощью понятия домена: все атрибуты различных таблиц, определенные на домене "ИД человека" несомненно представляют некоторую связь с таблицей, где соответсвующий атрибут является ключом, даже если внешний ключ не объявлен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 10:54 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
авторпомимо идентификатора обязательно должен присутствовать некий естественный ключ, позволяющий однозначно соотнести объекты модели с объектами реального мира. Давайте предположим, что яблоки различаются по плотности (хоть немного). Ведь я могу различать яблоки по их средней плотности (вес делить на объем)? Причем само значение плотности мне не интересно - я использую его исключительно как критерий различия (как "некий естественный ключ")? Плотность же никто не назовет суррогатным значением? - хотя она и вычисляется. Замечу, что вес и объем мне вообще не интерсны - я их в системе хранить вообще не буду. Теперь, предположим у меня есть N параметров х (вес, плотность, размер, цвет, объем, имя, фамилия, год рождения, высота над уровнем моря, долгота широта и т.д. и т.п. и много еще чего) и некая универсальная формула F(xi), такая, что возвращаемое ею значение (назовем его kOID -типа концептуальный OID) позволет однозначно отличить один объект от другого . Само это значение не важно - это может быть целое число, строка, UID или что-то еще. Важно, что мы можем эти значения сравнить и получить результат "равно" или "не равно". Это значение я храню в системе, а остальные я могу и не хранить. Это значение - "суррогат"? Ведь оно скорее всего будет бессмысленным само по себе? Но, с другой стороны, оно не суррогат, потому что, подобно плотности, вычисляется на основании множества явно несуррогатных параметров. Повторяю, что это значение нужно лишь для сравнения, лишь для того, что бы отличить в системе один "объект"(в кавычках , потому что это объект системы) от другого. ИМХО ОО-системы позволяют идти наоборот. Мы не заморачиваемся всеми этими параметрами для определния kOID. На самом делемы их уже оценили(возможно неявно и неосознанно ) и пришли к выводу, что имеем дело с разными объектами предметной области. И этот факт - "объект другой, разный, новый" - мы сообщаем системе, а она генерит некое уникальное значение sOID (от слова системый). В конце концов это же объектно-ориентированная система - т.е. она под эти заморочки специально заточена. В том числе, она позволяет нам не заморачиваться kOID явно - надо просто указать ей (для ее же целей!) сделать sOID(которым мы явно пользоваться не будем). Вопрос - чем kOID отличается от sOID? Является ли sOID прямо уж таким суррогатным? В общем в случае с OID ИМХО надо различать суррогатность "смысла" ключа и сурргатность "значений" ключа. Если суррогатные значения позволяют передать естественный смысл - почему бы ими и не воспользоваться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 11:01 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Андрей Леонидович Не хотите отвечать на вопрос, не отвечайте, но зачем "воду мутить" ?.... .... ...Невольно возник вопрос: чем "глобально определенная переменная типа-отношения varA2B, возможная [???-А.Л.] РОЛЬ которой будет заключаться в явном [???-А.Л.] представлении связи между объектами класса A и класса B" лучше класса A2B ??? Я тоже буду копипастить U-geneА где Вы видели класс А2В? Опишите этот класс и я скажу Вам, чем такая переменная лучше.......Я повторяю для слепоглухонемых. Я не знаю о каком классе Вы говорите. Здесь была описана переменная с таким именем. Её структуру я знаю. Если Вы хотите что-то узнать об одноименном классе, опишите пожалуста структуру объектов этого класса, потому что это структура может быть совершенно произвольной. Только после и я Вам скажу, чем переменная, лучше чем класс. И в том, и в другом случае система (НРМ в том числе) НЕ ЗНАЕТ, что это связь Что значит "система будет знать"? Про типы вы говорить не хотите, считая себя выше этого. Однако "система должна знать". В нормальных системах "система знает" когда мы указываем ей тип. В вашей ОМД системе, где типов нет, а есть одно сплошное "жжжжжж", я не знаю, как она что-то , бедная, будет знать. Наверное Вы ей на ушко нашепчете. Для чего ей эти "знания"? Я предполагаю, что для того, что бы определнным образом манипулировать значением лежащей в переменной. То есть мы определяем тип, создаем перменную этого типа, кладем туда значение и после этого можем над ним выполнять некоторые операции, которые для этого типа определены (а другие, которые для этого типа не оопределены, мы выполнить не можем). Однако Вы за три года ни о каких типах, операциях, командах ни слова ни полслова. Одно сплошное "жжжжжж". Система "должна знать". Обращает на себя внимангие следующий вопрос Андрей Леонидович ...Но что значит "яблоко" ?... ...это сильный вопрос!!! Видимо про это тоже "система знает?" В общем ув.А.Л. ЕСли "система должна знать", то ОМД уже как бы и не концептуальная модель. Соответственно - давайте ка, гоните спецификацию вашей ОМД. Хоть какую. Даю заготовки "в ОМД есть типы для описания сущностей....... типы для описания связей между сущностями..... для для них определный операции....." или "в ОМД нет никаких типов и для них нет никаких операций а есть одно сплошное жжжжжжжжжжжжжж"...... А без спецификации я Вам больше не отвечаю и считаю Ваши попытки сравнить НРМ и ОМД маразматическим флудом..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 12:02 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
ChAСобственно, отчасти, именно это и подразумевалось, но, кроме того, хотелось подчеркнуть, что если есть необходимость различать объекты, то помимо идентификатора обязательно должен присутствовать некий естественный ключ, позволяющий однозначно соотнести объекты модели с объектами реального мира. Мне кажется это не нужно. Пусть у меня в предметной области есть зеленые яблоки и красные (другие свойства предположим нас не интересуют). Кладя яблоки в мешок я регистрирую каждое яблоко как объект в БД. Пусть в конкретном мешке у меня 2 красных и 4 зеленых яблока. Благодаря OID система отличает одно красное яблоко от другого (точнее различает описания яблок в БД), но при этом совершенно не важно какому конкретному реальному красному яблоку соответствует конкретное описание красного яблока в БД. Отсутствие возможности поставить в однозначное соответствие реальное яблоко и его "объект" в БД тем не менее не мешает решать практические задачи (скажем посчитать сколько у меня красных яблок в 10 мешках). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 13:17 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneТеперь, предположим у меня есть N параметров х (вес, плотность, размер, цвет, объем, имя, фамилия, год рождения, высота над уровнем моря, долгота широта и т.д. и т.п. и много еще чего) и некая универсальная формула F(xi), такая, что возвращаемое ею значение (назовем его kOID -типа концептуальный OID) позволет однозначно отличить один объект от другого . Это позволяет (и то при определенных требованиях к "универсальной формуле") отличить объекты с разными значениями параметров. Если параметры одинаковы, то и kOID получится одинаковым. В ООБД нет требований на какую либо функциональную связь OID "объекта" БД с параметрами этого объекта, но зато там есть требование уникальности этого OID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 13:27 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneЕсли суррогатные значения позволяют передать естественный смысл - почему бы ими и не воспользоваться?Да ради Бога, внутри, говоря Вашими словами, "системы", можно пользоваться любыми ключами. Но когда возникнет потребность соотнести "внутренний" объект с внешним, то все внутренне вычисляемые или создаваемые ключи идут лесом, так без "естественных" ключей нельзя будет зафиксировать состояние внешнего объекта, поскольку он не отличим от остальных, ему подобных. serg99 Пусть у меня в предметной области есть зеленые яблоки и красные (другие свойства предположим нас не интересуют).Вы уже говорили об этом. Не надо здесь ничего уже изобретать, бессмысленно в таком случае включать в описание системы яблоки, как индивидуальные объекты, тем более, для того, чтобы их посчитать. P.S. Sorry, что увел обсуждение в сторону от НРМ. На продолжении этой линии не настаиваю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 13:52 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
serg99Это позволяет (и то при определенных требованиях к "универсальной формуле") отличить объекты с разными значениями параметров. Если параметры одинаковы, то и kOID получится одинаковым. Я здесь гворю не про "объекты" системы, а про реальные объекты. "Объекы" - это образ реальных объектов, некая абстракция, в которой многие характеристики реальных объектов могут никак не учитываться. А двух РАЗНЫХ реальных объектов какие-нибудь характеристики обязательно будут разными - а иначе с чего это мы стали бы их воспринимать как разные объекты? авторНо когда возникнет потребность соотнести "внутренний" объект с внешним, то все внутренне вычисляемые или создаваемые ключи идут лесом, Абсолютно согласен. Могу даже подсунуть :) касающегося этого вопроса цитатку из НРМ... НРМ(стр12)...Замечание. Более того, очевидно, что для пользователя не представляет интереса собственно значение OID (оно генерируется системой и зависит от реализации). Соответственно, возможное представление значений ссылочного типа может вообще не зависеть от самих этих значений. Например, любое значение ссылочного типа может быть представлено для пользователя строкой "Object". …." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 14:38 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
ChAВы уже говорили об этом. Не надо здесь ничего уже изобретать, бессмысленно в таком случае включать в описание системы яблоки, как индивидуальные объекты, тем более, для того, чтобы их посчитать. Возможно пример не совсем удачный. Предположим меня еще интересует и вес каждого яблока (используется например при подсчете веса мешка). В этом случае может оказаться все таки удобно вводить яблоки как объекты. Теперь доставая яблоко из мешка, я могу его взвесить и соотнести с "объектом" в БД, который появился когда я это яблоко клал в мешок. Но предположим что пара яблок в мешке оказались одинакового цвета и веса. В результате мы не сможем однозначно идентифицировать какому "объекту" в БД соотвествует вытащенное яблоко даже если эти реальные яблоки как то отличаются по другим признакам (например у одного из них есть червоточина). То есть загрубив модель предметной области в БД мы не можем сказать что это ТО ЖЕ САМОЕ яблоко, а можем сказать только что это ТАКОЕ ЖЕ яблоко. Так как модель предметной области строится исходя из решаемой задачи, то можно сказать что для практического использования нашей БД не важно какой из двух "объектов" БД будет поставлен в соответсвие нашему вытащеному яблоку. То есть, не ставя под сомнение Ваши слова, о различимости объектов внешнего мира, я хотел подчеркнуть, что необходимая степень различимости (или соответствия реальных объектов "объектам" БД) опредляется моделью предметной области, которая строится разработчиком исходя из поставленной задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 15:59 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene А двух РАЗНЫХ реальных объектов какие-нибудь характеристики обязательно будут разными - а иначе с чего это мы стали бы их воспринимать как разные объекты? Единственно потому, что мы их видим, воспринимаем, оба одновременно. Один уже у меня в кармане, и тут еще один... Будучи предъявлены поодиночке они абсолютно не различимы (если только нам не удасться самим их как-нибудь раскрасить или спрятать в карман ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 16:31 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
ModelR ...Один уже у меня в кармане, и тут еще один... Если одно у Вас в кармане, а еще тут другое, значит у них разные ...мммм.... координаты в пространстве. Вы это знаете, что позволяет Вам однозначно утверждать, что это разные объекты:). Конечно, возможен случай, когда Вам показали яблоко, убрали, а потом показали точно такое же. Но ведь в этом случае Вы не вообще не сможете однозначно утверждать, что это разные объекты.... или один и тот же объект.... о чем это мы тут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 17:30 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Напомню, что меня интересовали не суррогатные ключи, а почему идентификатор не является атрибутом ? Польза от этого какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 17:34 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneЕсли одно у Вас в кармане, а еще тут другое, значит у них разные ...мммм.... координаты в пространстве. Вы это знаете, что позволяет Вам однозначно утверждать, что это разные объекты:).Ыот именно. Человек может отличить одно яблоко от другого, потому что у них есть отличные свойства - координаты. А если таких атрибутов нет - то однозначно ничего сказать нельзя. РМД - это просто применение мат. логики к хранению данных и манипулированию ими. Тут не может быть "наверно", возможно только "да" и "нет". Два неотличимых кортежа - один кортеж. Амба. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 17:39 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Павел Воронцов ...а почему идентификатор не является атрибутом? Если это ко мне, то я на этот вопрос не пытаюсь ответить Повторяю, что с точки зрения пользователя идентификаторов вообще нет - есть разные "объекты" системы. А разные они потому, что пользователь раньше так захотел. А как оно там внутри системы реализровано - его не интересует. И вообще - это вопрос к ув.А.Л. - пусть он и отвечает. :) Павел Воронцов Человек может отличить одно яблоко от другого, потому что у них есть отличные свойства - координаты... РМД - это просто применение мат. логики к хранению данных и манипулированию ими. Два неотличимых кортежа - один кортеж. Амба. Ну и слава богу. Но ведь тот факт, что "объекты" различаются - это тоже данные! Внутри системы эти данные тоже надо сохранять и ИМХО там они ничем не должны отличаться от данных о координатах или о цвете. Все это надо хранить и всем этим можно манипулировать. Два неразных объекта - это один и тот же объект. Амба.(с)П.В. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 18:13 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Ну и слава богу. Но ведь тот факт, что "объекты" различаются - это тоже данные! Внутри системы эти данные тоже надо сохранять и ИМХО там они ничем не должны отличаться от данных о координатах или о цвете. Все это надо хранить и всем этим можно манипулировать. Два неразных объекта - это один и тот же объект. Амба.(с)П.В. Уникальный OID "объекта" в ООБД - это как раз способ обеспечить различимость ОПИСАНИЙ внешних объектов в СУБД даже если с точки зрения вводимых в БД реальных характеристик внешних объектов эти объекты одинаковы. Независимо от того как хранится OID (аналогично характеристикам внешних объектов или нет) его можно рассматривать как характеристику внутреннего "объекта". Другими словами СУБД гарантирует что все внутренние "объекты" разные, даже если все введенные в БД "естественные характеристики" эквивалентных им внешних объектов - одинаковы. То есть в ООБД не может быть двух неразных "объектов". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 21:51 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
В номальных системах, U-gene, "система знает" о связи, так как мы объявляем именно связь, а не "тип", который "можно интерпретировать как связь". Так что Вы говорите о каких-то явно НЕ нормальных системах, это же очевидно. Теперь я догадываюсь почему Вы не хотите отвечать на столь простой вопрос... И банальную мысль про идентификаторы объектов (а не только экземпляров) Вы, значит, тоже не поняли ? Причем не поняли огромными буквами ! Печально... Таким образом НРМ постепенно превращается, как Вы верно заметили в "сплошное жжж" и "маразматический флуд"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 23:10 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Пошли по седьмому, примерно, кругу, Павел Воронцов, раз Вы так упорны. Идентификаторы НЕ НУЖНО объявлять в ОМД. А суррогатные ключи НУЖНО ОБЪЯВЛЯТЬ. Этот очевидный недостаток суррогатных ключей в РМД "проистекает" из того самого факта, что суррогатные ключи - это "такие же атрибуты". Вынужденно объявили суррогат, а потом (не сказал бы даже, что на физическом, скорее на логико-физическом уровне) система все равно "приделывает" какой-никакой "идентификатор" к кортежу. Но поскольку Р(без кавычек)СУБД ничего не может знать об этих "идентификаторах кортежей" (так как их нет в РМД), она не может их использовать (см., например, "спор" с U-gene про "получение операций отгрузки ОТ ТОВАРА" и т.п.). Это очевидное печальное следствие недостатка суррогатных ключей... А в ОМД естественным образом соединяется и все "концептуальное", и все "логическое", и все "физическое" (!), что касается идентификации, и о чем здесь весьма плодотворно все рассуждают. Моя цель - сделать концептуальную модель - логической. Стереть, так сказать, границу. А Ваша цель в чем заключается ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2005, 23:23 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
serg99 U-gene ...Два неразных объекта - это один и тот же объект. ... .... То есть в ООБД не может быть двух неразных "объектов". Дык я не понял - эта последняя фраза(я с нец полностью согласен) - она сказана pro или contra? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 00:55 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
авторВ номальных системах.... "система знает" о связи, так как мы объявляем именно связь, а не "тип"....Так что Вы говорите о каких-то явно НЕ нормальных системах, это же очевидно.... Вы это серьезно? То есть системы,где есть типы, являются ненормальны?....Ооооо.... Высоко.... Это явный прорыв....Советую срочно посылать заявку в Главную Комиссию по Выдачи "премий имени Тьюринга для чайников"! За Ваше "жжжж", прошептанное на ушко системе, этих премий Вам дадут сразу штук десять - не меньше..... авторТеперь я догадываюсь почему Вы не хотите отвечать на столь простой вопрос... Удивительно! Как это до Вас доперло, что на тупоумно-несвязное мычание очень трудно отвечать?... Я Вас уже в четвертый раз прощу - задайте этот вопрос до конца. Или что? мозгов не хватает простенькую структуру объектов описать? Ну так и скажите - у меня, Андрея Леонидовича, мозгов хватает только на квазигениальное блеянье. Ничего внятного и структурированного эти мозги сгенерить не могут...... автор...И банальную мысль про идентификаторы объектов.......И хде она - эта мысль? та же где Ваши формулы? В позапрошлом году на двенадцатом развороте??? В конце-концов я тоже так могу! Например - А помните, ув.А.Л., мы с вами спорили об экземплярах и объектах? К сожалению до Вас это так и не дошло.... Печально,очень печально.... А помните, ув.А.Л., Вас mir прищучил по поводу вашей идеи? Что неужели так ничего и не поняли? как печально!.... А помните, ув.А.Л., Вас Павел Воронцов к ногтя прижал, справедливо посчитав все, что Вы говорите, бредом? Что же, Вы так и не поняли, почему это все бред??? Ой-ей как это печально и грустно.... А помните, ув.А.Л., все тут хохотали над Вашей фразой "субъект - это то, что противопоставлено объекту" (ну что-то типа того)... К сожалению, Вы так ине поняли идиотизма этой фразы....Знаете, это тоже не радует... Я мог бы продолжить, но видимо такого рода "формальные аргументы" надо приберечь для дальнейших с Вами споров. ....А в ОМД естественным образом соединяется и все "концептуальное", и все "логическое", и все "физическое"....Ага... а еще она про яблоки все знает...тоже естественным образом.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 01:26 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Уточняю - пред.пост целиком посвящен и адресован ув.А.Л-у. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 01:28 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичВынужденно объявили суррогат, а потом (не сказал бы даже, что на физическом, скорее на логико-физическом уровне) система все равно "приделывает" какой-никакой "идентификатор" к кортежу. Но поскольку Р(без кавычек)СУБД ничего не может знать об этих "идентификаторах кортежей" (так как их нет в РМД), она не может их использовать (см., например, "спор" с U-gene про "получение операций отгрузки ОТ ТОВАРА" и т.п.). Это очевидное печальное следствие недостатка суррогатных ключей... Странное дело - в Оракл (подождите перебивать, я знаю что у него Р в кавычках) есть возможность использовать "какой-никакой идентификатор кортежа", называется ROWID. Только мало кто использует. Потому что неэффективно, да и не нужно, если подумать о последствиях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 02:10 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneДык я не понял - эта последняя фраза(я с нец полностью согласен) - она сказана pro или contra? :) Я не за большевиков и не за коммунистов. Я за интернационал :-). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 02:32 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
авторАга... а еще она про яблоки все знает...тоже естественным образом.... Про спички... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 07:46 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичПошли по седьмому, примерно, кругу, Павел Воронцов, раз Вы так упорны. Идентификаторы НЕ НУЖНО объявлять в ОМД. А суррогатные ключи НУЖНО ОБЪЯВЛЯТЬ. Этот очевидный недостаток суррогатных ключей в РМД "проистекает" из того самого факта, что суррогатные ключи - это "такие же атрибуты". Если очень лень это делать вручную - механизируйте, быстрее написать скрипт чем спорить. Андрей Леонидович Вынужденно объявили суррогат, а потом (не сказал бы даже, что на физическом, скорее на логико-физическом уровне) система все равно "приделывает" какой-никакой "идентификатор" к кортежу. Но поскольку Р(без кавычек)СУБД ничего не может знать об этих "идентификаторах кортежей" (так как их нет в РМД), она не может их использовать (см., например, "спор" с U-gene про "получение операций отгрузки ОТ ТОВАРА" и т.п.). Это очевидное печальное следствие недостатка суррогатных ключей... Если про ROWID, то его действительно следует исключить из рассмотрения, ибо СУБД может менять его произвольно при изменении физических характеристик БД, и не к OID и не к суррогатам он отношения не имеет. Если про суррогаты, то еще раз: Это вопрос в РМД может быть легко решен с помощью понятия домена: все атрибуты различных таблиц, определенные на домене "ИД человека" несомненно представляют некоторую связь этих таблиц друг с другом, в частности с таблицей, где соответсвующий атрибут является ключом, даже если внешние ключи не объявлены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 11:24 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
А можна я сюда еще и своих тараканов добавлю? модельные класы vs абстрактные типы данных Похоже, что говоря об объектных классах и ООП иногда понимаются достаточно разные вещи: a) Модельные классы объектов: - иерархии уточняют свойства экземпляров подкласов через расширение; - наследование и полиморфизм - методы суперкласса могут быть применены для экземпляров подкласса, результат выполнения может зависеть от того, были ли методы перекрыты в подклассе ("виртуальные методы"); - методы могут изменять внутреннее состояние. б) Абстрактные типы данных: - иерархии уточняют свойства значений подтипов через ограничение; - нет методов (изменяющих значения), есть функции, которые порождают новые значения; - наследование - функции, заданные для супертипа могут быть применены к значениям подтипа, результат определяется функцией супертипа. 0. Уточнение о терминах АДТ ("значимые типы")- дальнейшее обобщение, тык скызать, "скалярных" типов данных, повседневные примеры - числа, строки, даты, сумма денег. Представляют сугубо абстрактные понятия, не обладающие поведением. Идентифицируются значением и только. Модельные классы - модели динамических структур ["объектов реального мира"] записанные на ОО-языке. Хранят (скрыто) внутреннее состояние и могут изменять его, не теряя "идентифицируемости". Могут быть в отношении "is_a" (является) с другими классами через реализацию общего поведения (набора методов с одинаковыми сигнатурами, aka интерфейсов), отношении "has_a" со скалярами (семантика - "имеет свойство") и экземплярами модельных классов (семантика - "связан", "содержит"). Идентифицируются по OID. 1. Наследование Пример - иерархия числовых классов a) в Ruby: Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 2. Изменение vs порождение. Пример - список как объектный класс и как АТД. а) Java-подобный класс и операции: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 3. Идентификация В реальном мире, на самом деле, "объекты", действительно, "противостоят субъекту" (c) (шутка, конечно ), и выражается это в том, что каким бы общим набором не обладали два одновременно существующих объекта, иначе не отличимых, всегда есть одно свойство, по которому они различаются - пространственные координаты (о чем выше уже было сказано). Для человека "реальные объекты" сохраняют самоидентичность себе в прошлом, несмотря на некоторые изменения в их состоянии, именно благодаря непрерывности истории их пространственно-временных координат. Некоторые разрывы, т.е. незнание, была ли эта история непрерывна, человеком устраняются либо дополнительными исследованиями ("Где вы были, когда старушку зарубили?" ), либо просто игнорируются в виду совпадения значений множества существенных характеристик. При построении ИС с использованием модельных классов, пожалуй единственной заменой является использование OID для идентификации хранимых состояний объектов. Но ищем-то мы объекты по набору значений существенных характеристик, посему и используются ключи и индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 11:24 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Мне кажется я понял наконец обоснование того, почему А.Л. так безапеляционно заявлял "идентификаторы - это не характеристики объектов". Но вот свою аргументацию он долго не мог выразить в нормальных словах. Итак, прозвучало следующее: А.Л.Идентификаторы НЕ НУЖНО объявлять в ОМД. А суррогатные ключи НУЖНО ОБЪЯВЛЯТЬ. Этот очевидный недостаток суррогатных ключей в РМД "проистекает" из того самого факта, что суррогатные ключи - это "такие же атрибуты". Вынужденно объявили суррогат, а потом (не сказал бы даже, что на физическом, скорее на логико-физическом уровне) система все равно "приделывает" какой-никакой "идентификатор" к кортежу. Но поскольку Р(без кавычек)СУБД ничего не может знать об этих "идентификаторах кортежей" (так как их нет в РМД), она не может их использовать (см., например, "спор" с U-gene про "получение операций отгрузки ОТ ТОВАРА" и т.п.). Это очевидное печальное следствие недостатка суррогатных ключей... Таким образом, когда идентификатор (OID) не является обычным атрибутом объекта (таким же, как и все остальные его атрибуты), т.е. отсутствует в логической модели, но предусмотрен в системе на физическом уровне, то сама система (СУБД) как бы "знает" о его наличии априори и может использовать этот идентификатор в своей работе более гибко и эффективно, чем любые "обычные" атрибуты. Казалось бы, что такие "внутренние" идентификаторы существуют и могут использоваться в "Р"СУБД ... AlexCzechСтранное дело - в Оракл (подождите перебивать, я знаю что у него Р в кавычках) есть возможность использовать "какой-никакой идентификатор кортежа", называется ROWID. Только мало кто использует. Потому что неэффективно, да и не нужно, если подумать о последствиях Однако в Oracle этот идентификатор виртуален (физически в базе его нет) и является по сути лишь "физическим адресом кортежа". Отсюда и возможности по его использованию существенно уже, чем для OID в ООСУБД (который физически присутствует в базе в явном виде). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 11:36 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Не забалтывайте суть, U-gene. Речь ведь идет именно о связях. В номальных системах, U-gene, "система знает" о связи, так как мы объявляем именно СВЯЗЬ, а не "ТИП", который "можно ИНТЕРПРЕТИРОВАТЬ как связь" (не верю, что не понимаете столь элементарную вещь). Так что Вы говорите о каких-то явно НЕ нормальных системах, это же ОЧЕВИДНО... ...Нет, банальная мысль про идентификаторы объектов (а не только экземпляров) прямо здесь, в этой теме. И Вы это прекрасно знаете. Вы, значит, ее тоже не поняли ? Причем не поняли огромными буквами ! Печально... Успокойтесь, и не игнорируйте умышленно ключевые предложения... Так и не хотите ответить на мой простой вопрос ? ...Павел Воронцов назвал, конечно, бредом все, что я говорю. А кто не назвал ? Вы что ли ? Ведь Вы так волнуетесь, и считаете меня демагогом и т.п. из-за того, что ПОНИМАЕТЕ (постепенно) что я Вам растолковываю, а не из-за того, что не понимаете. То есть понимаете свою слабую подготовку в общей теории баз данных (впрочем, и в реляционной теории далеко не все в порядке, как выясняется)... Видимо "формулы", которые Вы, конечно, нашли, тоже выбили Вас из колеи. Реляционной... Но это же хорошо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 23:00 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Очень хорошо, Alex Czech. Я не перебиваю, Вы ведь итак все хорошо поняли (и коллеги хорошо все объяснили). Видите, даже в "Р"СУБД, которые "знают" об "идентификаторах кортежей", их нельзя использовать. Ничего не получается. И в "Р"СУБД, как и в РСУБД, нет идентификации, а, следовательно, нет ни семантики, ни навигации. А я такие СУБД за СУБД не считаю. И удивляюсь - почему Вы считаете... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 23:05 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ChA Если Вы внимательно прочитаете наше в ув.А.Л-ем. общение в последних 50-и постах, Вы, наверое, поймете, что по другому с ним нельзя. Как не плюнь ему (ув. А.Л-у) в глаза, а ему все божья роса. Человечище. Глыба. Томас Мор от информатики. Иван Сусанин систем управления БД... 2 Андрей Леонидович. автор...Так и не хотите ответить на мой простой вопрос?... Не-а, не хочу. Сил нет просить Вас уточнить, что же именно Вы хотите сравнить, о чем конкретно спрашиваете. Да Вы и сами этого не понимаете. Иди делаете вид, потому как иначе пострадают все Ваши сверхценные идеи . А ведь этого никак нельзя допустить, правда? Влюбом случае, желаю Вам "благоприятных условий". Резюмирую. Идите Вы нафиг. Считайте, что Вы открыли всем глаза и все их напряженно протирают(не то плачут, не то смеются). Вы доказали свою упертую несгибаемость и победили в этом напряженном, исключительно психологическом противостоянии. Причем только силой Вашей воли - но больше ничем. Никакой логики в ваших высказываниях нет - это же общепризный факт. Это же так очевидно. Вам про это многие говорили. А что - Вы этого все еще не поняли??? Печально, очень печально.... У меня к Вам убедительная просьба. пользуйтесь Вашим излюбленным копипастем где-нить в другом месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2005, 00:41 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Если Вы уже успокоились, U-gene, и плюнули во все, во что хотели, то продолжим... Итак, чем "глобально определенная переменная типа-отношения varA2B, возможная [???-А.Л.] РОЛЬ которой будет заключаться в явном [???-А.Л.] представлении связи между объектами класса A и класса B" лучше класса A2B, возможная (опять возможная что ли ?) роль которого будет заключаться в явном (что Вы все-таки понимаете под "явным" ?) представлении связей между объектами класса A и класса B ? Ведь и в том, и в другом случае система (НРМ в том числе) НЕ ЗНАЕТ, что это связь (то есть Вы предлагаете поддерживать связи между объектами на уровне приложения ?)... Разве не очевидно, что в нормальных системах связи между объектами поддерживаются явно, именно как связи между объектами, а в не нормальных системах приходится "интерпретировать"... Ради АЛГЕБРЫ. P.S. А Вы задумайтесь все ли с алгеброй-то хорошо ? Подобно тому, как "ключи" и "сущности" (помните "entity integrity" ?) неизбежно "вмешиваются" в "модель абстрактых данных", "напоминая" об утраченных идентификации, семантики и навигации, с "алгеброй" и "замыканием" тоже не все гладко. Что собой представляет РБД ? Множество отношений, связанных "клеем" (механизм внешних ключей). Что же должен представлять собой "ответ на запрос" ? Да то же самое - множество отношений, связанных "клеем" (механизм внешних ключей). Вот это и есть логическое (и концептуальное, если поднапрячься) "замыкание". А математическое "замыкание" дает другой результат. Получаем некое внешнее представление результата запроса (в виде одного отношения), а не сам результат (в виде множества взаимосвязанных отношений)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2005, 20:04 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичP.S. А Вы задумайтесь все ли с алгеброй-то хорошо ? Подобно тому, как "ключи" и "сущности" (помните "entity integrity" ?) неизбежно "вмешиваются" в "модель абстрактых данных", "напоминая" об утраченных идентификации, семантики и навигации, с "алгеброй" и "замыканием" тоже не все гладко. Что собой представляет РБД ? Множество отношений, связанных "клеем" (механизм внешних ключей). Что же должен представлять собой "ответ на запрос" ? Да то же самое - множество отношений, связанных "клеем" (механизм внешних ключей). Вот это и есть логическое (и концептуальное, если поднапрячься) "замыкание". А математическое "замыкание" дает другой результат. Получаем некое внешнее представление результата запроса (в виде одного отношения), а не сам результат (в виде множества взаимосвязанных отношений)...Нифига-то Вы не поняли, любезный Андрей Леонидович... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2005, 20:52 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Андрей Леонидович Я намекаю уже в который раз. Если Вам хочется "продолжать", откройте свой топик и продолжайте там. Дайте ссылки на первоисточники, найдите наконец то Ваши формулы, и в путь!!!..... Но здесь "продолжать" не надо - тем более, что я уже признал свое полное моральное поражение. Не надо здесь флудить - неужели Вы этого до сих пор не поняли? Ай-яй-яй, как это печально.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2005, 12:08 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ModelR Не нашел Ваших координат (есть личный вопрос). Вы можете со мной связаться (_grg@comail.ru_)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2005, 12:11 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Прочел монументальный труд. Прав ли я кратко суммировав: 1. Простые таблицы расширяются возможностью хранить массивы и вложенные объекты, коллекции вложенных объектов (далее вложенные объекты) 2. Структура объектов может быть наследована и изменена. 3. Запросы полиморфны, если не указано обратное 4. Пункт 3 распостраняется и на вложенные объекты. 5. Запросы могут обращаться к вложенным объектам через точку типа customer.address[0].city. JOIN используется для связи к другими объектами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2005, 13:14 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Dimonische 1. Простые таблицы расширяются возможностью хранить массивы и вложенные объекты, коллекции вложенных объектов (далее вложенные объекты) Нет. Нет там ни массивов, ни вложенных объектов, ни тем более вложенных коллекций. Не понимаю о каких таблицах Вы говорите. Если речь идет о R-переменных, то эти переменные отношений определны на множестве скалярных атрибутов - никаких массивов, коллекций и объектов. Семантика сложных стурктур сохраняется только в именах R-переменных и в именах их атрибутах. Пример Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Каждый объект типа ot содержит комонент с атрибутами i и s.Соответсвенно, мы можем говорить о R-переменной компонента "ot.c" с атрибутами "i" и "s", ои о R-переменной типа "ot" с атрибутами "с.i" и "с.s". Я специально имена переменных и их атрибутов обозначил кавычками. Сами атрибуты скалярные(никаких вложенных коллекций!), но имена у них сложные. В НМР повторяется несколько раз, что РМД не накладывает никаких требований на имена переменных отношений и их атрибутов, за исключением требования уникальности. Соотвественно я могу написать имя атрибута как "с.s" или как "c . ref . comp_of_ref . scalarattr_of_comp_of_ref" - в любом случае за этим сложным именем атрибута, несущего в себе семантику ссылки, стоит некое скалярное значение. То есть когда мы описываем объекты - да представляем их как сложные связанные или вложенные структуры. Но когда мы переходим к R-переменным, вся эта сложность уходит в имена (кстати, интересующимся людям термин "потеря семантики" должен быть знаком.....но зачем ее терять?). А если отвечатьна это вопрос с точки зрения пользователя, который не задумывается о R-переменных (у него в голове есть некая сложная структура ) - да. Есть коллекции, вложенные объекты, коллекции вложенных объектов и т.п. (но! - явно определяемых таблиц нет). 2. Структура объектов может быть наследована и изменена.Да. 3. Запросы полиморфны, если не указано обратноеЯ бы сказал так - "В запросах используются данные из R-переменных полиморфных классов". Откуда беруться и как получаются эти данные, определяется системой на основании реализации этих классов. 4. Пункт 3 распостраняется и на вложенные объекты.С точки зрения пользователя, который не задумывается о R-переменных (у него в голове есть структура сосссылками) - Да. 5. Запросы могут обращаться к вложенным объектам через точку типа customer.address[0].city. JOIN используется для связи к другими объектамиДа. Опять - же с точки зрения этого пользователя. Формально, в терминах R-переменных работа со сслылочными структурами есть те же JOIN-ы, но пользоваетель не должен об этом не думать. ИМХО НРМ предлагает подход, позволяющий освободить пользователя от лишнего явного использования JOIN-ов. Например, вместо того, что бы каждый раз получая данные о продажах, делать " таблица_заголовков JOIN таблица_строк ON ..."? можно использовать просто "продажи". А если нужны данные только, например, по строкам, можно использовать те же "продажи.строки". А если учесть возможность переопределять компопненты, то я даже не берусь навскидку написать то, что в традиционном SQL будет соотвествовать простому обращению к полиморфным "продажам." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2005, 15:24 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Тьфу - не классов, а О-типов. Ну не класс это, не класс.... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2005, 15:26 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneТьфу - не классов, а О-типов. Ну не класс это, не класс.... :) Фигня прокололся ) Просто неохота заморачиваться на R переменные и пр. когда можно пользоваться имеющейся теминологией и ничего не терять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2005, 16:47 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Тьфу - не классов, а О-типов. Ну не класс это, не класс.... :)Это не Вам - это я сам себе сказал.... :) Тоже привык. Опять же, с точки зрения пользователя оно так и есть - он этой разницей заморачиваться не должен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2005, 16:52 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Я даже больше скажу. Тут очень часто народ влезает в математические дебри - кортежи, множества, операции над множествами... И воспаряют в небеса в только им сами понятных текстах. И, что главное, начинают отчаянно спорить друг с другом. Хотя есть простейшие термины - таблица, запись, поле записи. Как сказал кто-то из классиков: Если вы 6-ти летнему ребенку не можете объяснить чем занимаетесь, значит вы занимаетесь фигней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2005, 17:22 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Dimonische Тут очень часто народ влезает в математические дебри - кортежи, множества, операции над множествами... И воспаряют в небеса в только им сами понятных текстах. И, что главное, начинают отчаянно спорить друг с другом. Хотя есть простейшие термины - таблица, запись, поле записи. Уточнение: В РМД - отношение, кортеж, атрибут (эт, конечно, слишком абстрактно и на практике не реализовано). В SQL - таблица, запись, поле записи (эт, конечно, просто и понятно и используется на практике). Разница между понятиями есть и довольно существенная. SQL = извращение РМД ≠ РМД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2005, 17:48 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Dimonische А я еще и добавлю!... Про классиков есть разные версии Я тут в сети кое-что нашел из сети...Про это еще Эйнштейн сказал, что ученый, который не может объяснить теорию относительности 5-класснику, не ученый, а шарлатан... ...А. Эйнштейн говорил, что ученый, который не может объяснить пятилетнему ребенку теорию относительности - шарлатан… ...Альберт Эйнштейн: "Если вы не можете что-то объяснить шестилетнему ребенку, значит вы сами этого не понимаете"... ...Эйнштейн сказал: если вы не можете объяснить, что вы делаете, то не стоит этого делать... ...Эйнштейн сказал в свое время : "Если ученый не может 10 летнему ребенку объяснить суть своей работы - это не ученый, а шарлатан!" (или рядом с этим ...не дословно).. ...Как говорил Эйнштейн, ученый, который не может уборщице объяснить, чем он занимается, зря получает зарплату...Так что же все таки сказал Эйнштейн? Когда я зашел на сайт www.aphorism.ru я нашел там целую кучу афоризмов,приписывваемых А.Э. Но! среди них не было ничего про объяснение сложных вещей людям без соответсвующего образования. Вот если бы кто-то смог обяснить 6-ти летнему ребенку, что есть те же ООП, РМД и все, что с этим связано.... А то ведь и взрослые дяди всё норовят "простейшии термины" пользовать, считая, что при этом они ничего не теряют(что же, пользователь - он и есть пользователь). И на здоровье, и это все понятно.... Я помниться, давным-давно с С на С++ переходил, так все думал - и зачем это все? Можно пользоваться простым С и ничего не теряешь... И ведь действительно, пользуя С++ в сравнении с С я практически ничего не потерял. Зато сколько приобрел!...но это я потом понял.... В общем, как говорил все тот же Эйнштейн "Никакую проблему нельзя решить на том же уровне, на котором она возникла." Постейшие термины принадлежат уровню, где проблема возникла. Можно пользоваться ими и дальше - при этом ничего не будет потеряно. И точно остануться проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2005, 01:10 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Раз уж речь зашла о таблицах.... Вопрос к знатокам SQL. Я понимаю, что есть теория, а есть суровая практика. Я понимаю, что SQL очень развился, и порой возникает ощущение, что там можно сделать уже все. Правда, ИМХО там это все не совсем очевидно..... Но даже не в очевидности дело... Когда мой ...ммм.... назовем его рецензент.... прочитал одну из первых версий НРМ, он сказал, что ему кажется, что все эти возможности так или иначе уже есть в SQL в его последних редакциях (повторяю - ему так кажется). Собственно после этого и возник пример НМР, на который рецензент так и не нашел аналога (навскидку). Может кому нибудь из местных SQL гуру удасться это сделать? Вот выдержки из примера НРМ (незначимые куски я заменил на ) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 1. До сей поры ничего нового. Данные об отгрузках типа храняться и на их базе сделан вид. В SQL такое как два пальца.... Теперь я наследую и переопределяю о-тип GoodsMotion Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Я это все к тому, что "простейшии термины" "таблица" и "вид" таки не могут заменить R-переменные. Термины "таблица" или "вид" УЖЕ определz.n реализацию - подразумевается, что они сами по себе УЖЕ определяют, храняться эти данные или как-то вычисляются. R-переменная (подобно таблицам и видамв первом приближении) представляет данные в виде отношения, однако (в отличии от них) откуда эти данные беруться, храняться они или вычисляются - все это определяется реализацией класса. Эта реализация может быть 20 раз переопределна, и, соответсвеннол, R-переменная будет содержать данные полученные 20-ю разными способами. Но никаких изменений существующих запросов - просто переопределние типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2005, 10:52 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
To U-gene Мне кажется, Вам надо перечитать Третий манифест. Очень похоже, что то, что Вы предлагаете, там просто содержится. Реализацию Вашего примера на SQL на вскидку действительно придумать сложно, но, поднатужившись, вероятно можно. А вот на Tutorial D такое должно делаться довольно легко... Наверно... Но думать лень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2005, 11:18 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Павел Воронцов Реализацию Вашего примера на SQL на вскидку действительно придумать сложно, но, поднатужившись, вероятно можно. ИМХО это будет как переписывание программы С++ в использую plain C. Павел Воронцов А вот на Tutorial D такое должно делаться довольно легко... Наверно... Но думать лень. Ой как Вас ленивых много развелось ...:)... ИМХО конечно можно, но так же как см. выше про SQL... Как медитации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2005, 11:40 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneКак медитации?Плохо. Всё не до них. Недосуг. Руки-ноги не доходят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2005, 13:29 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Мне кажется, основная сила НРМ (если будет стандарт (например SQL 4) на основе HPM): ВМЕСТО ПОНЯТИЯ "ЗАПИСЬ" можно будет оперировать сложными по структуре КЛАССАМИ С ВЛОЖЕННЫМИ МАССИВАМИ, КЛАССАМИ и ПР. Это то что мне постоянно не хватает в реляционыых базах. А главное, это будет переносимо, реализованы JDBC, ODBC и пр. драйверы, EJB 4.0 сможет такие базы использовать и я наконец буду в шоколаде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2005, 15:46 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
DimonischeМне кажется, основная сила НРМ (если будет стандарт (например SQL 4) на основе HPM): ВМЕСТО ПОНЯТИЯ "ЗАПИСЬ" можно будет оперировать сложными по структуре КЛАССАМИ С ВЛОЖЕННЫМИ МАССИВАМИ, КЛАССАМИ и ПР. Это то что мне постоянно не хватает в реляционыых базах. Чудится мне что-то некорректное в этом. Похоже такое развитие приведет не к упрощению, а к усложнению проектирования БД. НРМ, как я понял, рассматривает достаточно "открытые" (подскажите антоним к "инкапсуляции" :)) классы, которые действительно могут быть развернуты в набор отношений. Эт ж, все-таки, не совсем классы (в ООП смысле), а скорее просто сложные структуры данных. Кроме этого придется еще и думать (ой, звыняюсь, не всем, конечно, многим это больно), когда использовать отношения, а когда вложенные массивы, классы и т.д., как и где задавать ограничения непротиворечивости данных и т.п. Где-то видел я высказывание Дейта, в духе, что можно, например, объект "крыло самолета" представить, хранить и обрабатывать в РБД как значение абстрактного типа данных (домена), но можно и описать множеством значений relvars, но это разные уровни абстракции, и смешивать их нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2005, 16:19 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
дураг с инецеативой Кроме этого придется еще и думать (ой, звыняюсь, не всем, конечно, многим это больно), когда использовать отношения, а когда вложенные массивы, классы и т.д., как и где задавать ограничения непротиворечивости данных и т.п. А я вот знаете-ли очень хочу этим заняться. Надоело мне, когда простенькую схему Портфолио->Мембер->SpreadBySecurity->Ratings надо постоянно выгребать кучей джойнов. А так, получил Портфолио и вуаля - никаких запросов. На самом деле - возможность выбора - отношение или встроенный объект, очень важна. Есть масса сложных объектов, для которых в 99% случаев надо получать сразу все уровни. Просто потому что эти уровни его неотемлемые характеристики в рамках данного софта. Я понимаю, что для кого-то не факт что нужны эти 4 уровня. Тогда проектируем простенький класс без кучи вложений и его наследника с кучей вложений. И вуаля - хотите - запрашивайте простенький класс (специфицируя - без наследников), хотиту, класс с 4-мя уровнями вложенности. СВОБОДА епрст ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2005, 16:31 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 U-gene и др. По поводу мультимножеств и идентификации , разговор о которых в этой теме шел довольно долго, можно еще почитать статьи и дискуссии Дейта: DOUBLE TROUBLE, DOUBLE TROUBLE PART 1 DOUBLE TROUBLE, DOUBLE TROUBLE PART 2 ON DUPLICATES More on Duplicates and Countability ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 09:24 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
авторНРМ, как я понял, рассматривает достаточно "открытые" (подскажите антоним к "инкапсуляции" :)) классы, которые действительно могут быть развернуты в набор отношений. Эт ж, все-таки, не совсем классы (в ООП смысле), а скорее просто сложные структуры данных. Это почему это? При описании о-типов имеется очень четкое деление на описание испецификации и описание реализации. Работа работы с объектами этих типов опирается исключительно на спецификацию. Реализация может быть изменена, переопределна и т.п. Соттветсвенно никакого "антонима к инкапсуляции" тут нет. Конечно НРМ явно не заморачивется проблемами доступа (типа модификаторов public и private, или разделением пользователей на группы, одни из которых имеют доступ только с спецификации типов, а другие - и к реализации тоже). Однако ИМХО четкое деление на спецификацию и реализацию есть основа инкапсуляции. авторКроме этого придется еще и думать (ой, звыняюсь, не всем, конечно, многим это больно), когда использовать отношения, а когда вложенные массивы, классы и т.д., как и где задавать ограничения непротиворечивости данных и т.п.Дык!..думать то не надо:)...Думаем исключительно в терминах сложных структур. Однако можем ипользовать операции РМД, обращаясь к данным про которые мы думаем как о сложных структурах. При этом мы продолжаем думать о данных как о сложнных структурах, что достигается благодоря тому, что в этих оперциях используются сложные имена переменных отношений и сложные же имена их атрибутов (то есть они сложные с нашей точки зрения, а с точки зрения РМД - это просто имена ). Однако эти переменные - являются б/п переменными отношений, определённых на множестве скалярных доменов. Думать не надо. Просто описываем объектный тип, создаем объекты этого типа, а потом можем выполнить например SELECT использующий сложные (с точки зрения пользователя, котырый, благодоря этому, продолжает думать про сложные структуры) имена. А почему мы можем его выполнить, и почему он остается реляционным - это НРМ и показывает. Где-то видел я высказывание Дейта, в духе, что можно, например, объект "крыло самолета" представить, хранить и обрабатывать в РБД как значение абстрактного типа данных (домена), но можно и описать множеством значений relvars, но это разные уровни абстракции, и смешивать их нельзя. Ну может Дейт так и думает :). У меня по поводу НРМ есть аналогия. Если вглянуть на бочку сверху - она круг. Если сбоку - она прямоугольник. Однако это одна и та же бочка. НРМ рассматривает данные как эту бочку. Они могут быть представлены как множество объектов и, одновременно, как множество отношений. НРМ(стр13)Другими словами, данные, представленные в виде значений компонентов объектов, и данные, представленные в виде значений R-переменных - это одни и те же данные (в дальнейшем мы будем говорить о двояком представлении данных). Но это одни и те же данные, и это один и тот же уровень абстракции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 12:40 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Пред. сообщ. было для дурага с инецеативой Добавлю Похоже такое развитие приведет не к упрощению, а к усложнению проектирования БД. Очень надеюсь, что предложения, звучащие в НРМ, может приблизить переход от баз данных (как пассивного хранилища данных) к активным, долговременным и централизованным моделям предметных областей. То есть НРМ предлагает иную ....ммм... наверное парадигму (ой не люблю я этих слов:). То есть система хранения рассматривается не как хранилище объектов, которые существуют в пользовательской, клиентской программе. Скорее, это среда существования объектов, которая позволяет клиентской программе получать данные о этих объектах (но не сами объекты). В первом приближении в таких системах вместо того, что бы проектировать объекты приложения, и, затем, под них проектировать БД, мы должны проектировать объекты предметной области и, уже затем, делать какой то интерфейс Получается типичная КС система (только используется уже не сервер данных а ...ммм... наверное можно сказать, что сервер моделей ПО), где С является соверщенно отдельной и независимой от К системой. Мы можем развивать модель ПО не трогая К, или мы можем делать любые К. Насколько это сложнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 14:53 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene При описании о-типов имеется очень четкое деление на описание испецификации и описание реализации. Работа работы с объектами этих типов опирается исключительно на спецификацию. Реализация может быть изменена, переопределна и т.п. ... Думаем исключительно в терминах сложных структур. ... Просто описываем объектный тип, создаем объекты этого типа, а потом можем выполнить например SELECT использующий сложные (с точки зрения пользователя, котырый, благодоря этому, продолжает думать про сложные структуры) имена. Т.е. НРМ - просто логический уровень представления данных (объекты, методы, полморфизм etc.), скрывающий свою реализацию, основанную на РМ? U-gene НРМ(стр13)Другими словами, данные, представленные в виде значений компонентов объектов, и данные, представленные в виде значений R-переменных - это одни и те же данные (в дальнейшем мы будем говорить о двояком представлении данных). Но это одни и те же данные, и это один и тот же уровень абстракции. Соглашусь, что данные-то те же, но уровни абстракции все-таки разные. Я имею в виду, что реализация НРМ должна не допускать запросов "пользователя-программиста" напрямую к отношениям РСУБД, реализующим "объектные типы НРМ" (допуская запросы к "простым" отношениям, не созданным как реализация объектных типов). И еще - может, я где-то недосмотрел, но не увидел решения "горячего" для адептов ООП вопроса - получение и сохранение в приложениях "объектов" целиком. BTW: Разложение хранимых компонентов объектных типов НРМ по рел.отношениям чем-то напоминает мне RM/T [Кодд, 1979] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 15:09 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Т.е. НРМ - просто логический уровень представления данных (объекты, методы, полморфизм etc.), скрывающий свою реализацию, основанную на РМ?Хочу у Вас уточнить... НРМ(стр24)...Слово "реализация" в данном изложении становиться явно перегруженным. Во-первых, мы используем это слово, когда говорим о реализации типов R*O системы. Во-вторых, мы используем его, когда говорим о реализации системы на базе существующих РСУБД. Естественно, это не одно и тоже. Говоря образно, понятие "реализация типов" принадлежит модели данных и, следовательно, относится только к уровню представления данных. Реализация же системы определяет взаимосвязи между уровнем представления и уровнем хранения... Задавая свой вопрос, Вы слово "реализация" в какой смысле имели в виду? На всякий случай - говоря о четком делении описания типов на реализацию и спецификацию имел в виду конечно первое. Соглашусь, что данные-то те же, но уровни абстракции все-таки разные. Я имею в виду, что реализация НРМ должна не допускать запросов "пользователя-программиста" напрямую к отношениям РСУБД, реализующим "объектные типы НРМ" (допуская запросы к "простым" отношениям, не созданным как реализация объектных типов). Я.тут таки не понял, о каких отношениях Вы говорите. На всякий случай скажу, что переменные отношения (R-пременные и явно-определяемые переменные значимых типов) создаются и существуют на том же уровне абстракции (в НРМ это называется уровегь представления), что и о-типы и сами объекты. Нафига к ним "не допускать" запросы, если пользователь сам их создал? Другое дело, что говоря о реализации системы я предполагаю, что она может быть создана на базе существующих РСУБД (уровень хранения). На этом уровне тоже есть отношения (используя "простые термины" это таблицы и виды). Естественно, предполагается, что система "не допускает напрямую" запросы к этому уровню. Т.е команды, манипулирующие с даннымы, которые представлены для пользователя как сложные так или иначе транслируются в команды выполняемые используемойц РСУБД. Конечно организация данных, так, как они представлены(уровень представления) и так, как они храняться (уровень хранения) может быть чень близкой. То есть когда компопнент является хранимым (это уровень представления) ему (на уровне хранения) буквально в лоб соответсвует таблица. Соответсвтенно, получив запрос на доступ к данным R-переменной этого компонента(уровень представления), система генерит очень простой SELECT к указанной таблице уровня хранения и получит необходимые данные. Однако мы можем переопределить компонент и, в следующий раз, выполняя тот же(на уровне представления) запрос пользхователя, система (на основании данных о реализации компонентов) сгенерит гораздо более сложный запрос. В общем вот цитат из НРМ... НРМ(стр23-24) ....НРМ утверждает, что системы управления реляционными БД могут эволюционно развиваться в направлении, определяемым в первую очередь необходимостью адекватно описывать сложные предметные области и предлагает путь этого развития. В этом утверждении мы исходим из описанного в первой части подхода, который подразумевает двоякое представление данных, когда одни и те же данные представлены одновременно и как значения компонентов объектов данных, и как значения R-переменных. В общих словах, предлагаемая далее реализация системы исходит из того, что, поскольку R-переменные есть не что иное, как переменные отношения, то в качестве основы можно использовать систему, в которой такие переменные уже так или иначе реализованы .... ... данные в реализуемой R*O системе, представлены значениями компонентов объектов и, одновременно, значениями R-переменных. Будем называть реализуемую совокупность объектов и R- переменных уровнем представления данных. Надо понимать, что уровень представления данных реализуется и, следовательно, является виртуальным. О существовании объектов и R-переменных уровня представления можно говорить лишь постольку, поскольку существует набор команд, которые манипулируют ими (в том числе хранящимися в них значениями), и программа, выполняющая эти команды. Получив команду, эта программа преобразует (транслирует) ее в команду или последовательность команд используемой РСУБД, выполняя которые последняя манипулирует данными, хранящимися в таблицах. Будем называть реализуемый РСУБД набор переменных отношений (т.е. таблиц) уровнем хранения данных. Отметим, что данные на уровне хранения представляют собой не что иное, как реляционную базу данных. ... Повторим, что основная идея, на которой основывается предлагаемая реализация R*O-системы, заключается в том, что R-переменные (уровень представления данных) являются переменными отношений. Важно, однако, понимать, что R-переменные уровня представления и переменные отношений уровня хранения не эквивалентны. Детальная организация данных на уровне хранения скрыта от пользователя. Сл.вопрос...И еще - может, я где-то недосмотрел, но не увидел решения "горячего" для адептов ООП вопроса - получение и сохранение в приложениях "объектов" целиком. Дык...я тут про парадигму(не люблю это слово :) ) уже написал... ИМХО "получение и сохрание объектов" фактически означает зависимость между К и С в КС системах. НРМ предлагает немножко вообще совсем не то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 17:05 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneТо есть НРМ предлагает иную ....ммм... наверное парадигму (ой не люблю я этих слов:). То есть система хранения рассматривается не как хранилище объектов, которые существуют в пользовательской, клиентской программе. Скорее, это среда существования объектов, которая позволяет клиентской программе получать данные о этих объектах (но не сами объекты). Направление мысли по моему правильное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 17:24 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Кстати! Вчера целый вечер потратил, но с Tutorial D у меня аналог моего примера пакамист не вырисовывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 17:42 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Хочу у Вас уточнить... Вот собственно я под реализацией и "простыми" отношениями имел в виду уровень используемой РСУБД (неважно, существующей или идеальной :) ), а под ограничениями - доступ к R-переменным, созданным как "CREATE CLASS", только средствами НРМ. U-gene Сл.вопрос... И еще - может, я где-то недосмотрел, но не увидел решения "горячего" для адептов ООП вопроса - получение и сохранение в приложениях "объектов" целиком. Дык...я тут про парадигму(не люблю это слово :) ) уже написал... ИМХО "получение и сохрание объектов" фактически означает зависимость между К и С в КС системах. НРМ предлагает немножко вообще совсем не то. U-gene это среда существования объектов, которая позволяет клиентской программе получать данные о этих объектах (но не сами объекты) Типа можем получить из БД что-то вроде "Вот дом, Который построил Джек. А это пшеница, Которая в темном чулане хранится...", но не Джека, чулан со всем содержимым или пшеницу отдельно т.е. чтобы в приложении иметь объект (структуру данных), с состоянием, соответсвующим сохраненному в БД (например, сложный документ), приложение должно выполнить запрос (возможно, несколько) и самостоятельно формировать эту структуру и заполнять ее, что не нравится адептам ООП. (но это тема для совсем другого флейма) НРМ стр.2 Напомним, что,отвечая на вопрос "какая концепция в реляционном мире является двойником концепции класса в мире объектном?", "Третий Манифест" рассматривает два возможных варианта 1) объектный класс = домен, 2) объектный класс = отношение. Третий манифест убедительно показывает, что второй вариант является ошибочным (НРМ полностью согласен с этим), и, далее, исходит в своих рассуждениях именно из первого варианта. Отметим, что НРМ не утверждает, что предложения, высказанные в "Третьем Манифесте", являются ошибочными. Однако НРМ не сомневается в том, что ответ (даже правильный!) на процитированный в предыдущем абзаце вопрос, не является полным ответом на вопрос, как можно соотнести "мир объектный" и "мир реляционный". Существует еще один подход, который не может быть описан ни одним из предложенных в "Третьем Манифесте" вариантов ответа, и, тем не менее, позволяет объединить свойства объектных и реляционных систем в рамках единой системы. Этот подход рассматривается далее. А далее рассматривается подход, основанный на представлении объектных типов как связанных отношений (R-переменных). Т.е. либо "НРМ не полностью согласен с этим" , либо изначально имеем некоторое логическое противоречие. Или надо просто вывернуть угол зрения : - НРМ частично скрывает на логическом уровне то, что термин "объектные типы", на самом деле - только ширма, просто способ представления множества связанных отношений (R->O mapping). - НРМ упрощает описание предметной области как множества связанных отношений, предоставляя средства задать эти описания в ООП-стиле а также ООП-фичи (например, полиморфизм); - НРМ упрощает получение информации, используя, с одной стороны, ненавигационный доступ к данным (эффективные рел. запросы к R-переменным), с другой ООП нотацию, наследование etc. ??? Или я где-то существенно туплю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 18:16 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
...что не нравится адептам ООП.Вот не надо тока адептов обижать :) Я в конце концов и сам адепт, иначе всем этим заморачиваться на стал бы. :) Это может не понравиться совершенно конкретным адептам - тем, 1) кто ставит знак равенства между ООП и каким-нибудь конкретным ОО-языком програмирования (например С++) 2) конкретно хочет иметь объекты, моделирующие ПО, в приложениях, написанных на этом языке, 3) конкретно хочет хранить эти объекты в БД 4) ни о чем другом слышать не хочет. ИМХО все это по большому счету к ООП не имеет никакого отношения. Следующий вопрос. Насколько я понимаю он сводится к тому, что НРМ...1) объектный класс = домен, 2) объектный класс = отношение. ... Третий манифест убедительно показывает, что второй вариант является ошибочным (НРМ полностью согласен с этим), ... Т.е. либо "НРМ не полностью согласен с этим", либо изначально имеем некоторое логическое противоречие. Нет, все же польностью не согласен, потому как НРМ в общем случае ставит каждому о-типу в соответсвие множество переменных отношений. Чувствуете разницу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 18:49 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Это может не понравиться совершенно конкретным адептам ... Вот именно таких типов я имел в виду. :) U-gene Нет, все же польностью не согласен, потому как НРМ в общем случае ставит каждому о-типу в соответсвие множество переменных отношений. Чувствуете разницу? А если сравнить с RM/T ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2005, 18:57 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
А если сравнить с RM/T ?Ну вы вопросы задаете :)... ИМХО RM/T есть попытка натянуть RMD на предметную область. Кодд говорит о сущностях и утвердает что каждой сущности должен соответсвовать суррогат. Суррогаты сущностей каждого типа храняться в соответсвующем Е-отношении.Далее он классифицирует типы сущностей. Далее для хранения собственно знчений вводятся P-отношения у которых сукррогат выступает в роли первичного ключа(то есть каждой сущности в каждом отношении может соответсвовать строго один кортеж) Далее появляются характеристические графовые отношения, ассоциативные отношения и т.п. и т.д....Это такой наворот!...В результате он выходит аж на 10 разновидностей отношений - каждая разновидность нагружается определённой семантичекой ролью. E.F. Codd. Extending the Database Relational Model to Capture More Meaning. ACM Transactions on Database Systems, Vol. 4, # 4, December 1979, p. 397-434. (p425)A associative entity type relation; C characteristic entity type relation; E E-relation; G graph relation; I inner kernel entity type relation; K kernel entity type relation; L edge-labeled; N nonentity association relation; P property relation; T event entity type relation. Для этих отношений предлагаются соответствующие операции и правила целостности..... Я эту статью многократно пытался читать, но ...теряюсь... Так и не проникся....Как это пользовать - я так и не понял...(Может потому что у каждого свои сущности в голове?) НРМ не пытается ввлодить какие либо классификации, как то разбираться в том, что существует в предметной области. Рабочим явлляется основное требование суть котрого абсолютно не нова - любая информация представлена в РБД как множество значений отношений. Соответсвенно информация о любом объекте (или о сущности, или о связи, или еще о чем то, что может выдумать воспаленное :) воображение некоторых пользователей) предметной области так же должно быть представлено как множество значений отношений. Далее вводится система типов суть которой заключается в том, что любой объект, отличается от любого другого объекта, и состояние любого объекта описывается как множество значений отношений. Замечу, что во этом во всех рассуждениях, возможная семантика хранимых данных (по умолчание предполагается, что она выражается исключительн именами) никак не анализируется (ну разве что в примерах проскальзывает) - она у каждого может быть своя (то есть никаких "типов сущностей"). Далее показано, что данные, представленные в такого множества таких объектов могут быть представлены также в виде множества отношений обычной РМД (при этом семантика данных - какой бы она не была - сохраняется благодоря использованию сложныхсточки зрения пользователя имен). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2005, 11:08 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
А мне почему-то показались достаточно похожими след. орг.пункты: НРМ RM/T почемуобъектный тип сущность oid E-аттрибут идентификация; ген. системой; значение скрыто от пользователя; связи м/компонентами и объектамиDOID E-доменКомпонент кортежного типа P-отношение однозначное свойствоКомпонент типа-отношения characteristic entity многозначные свойстванаследование generalization; property inheritanceтаблица каталога SPEC PG-отношение; CG-отношение состав компонентов сущности ("объекта")таблица каталога IS_T UGI-отношение описание наследования Вот вычисляемых полей и полиморфизма в RM/T, конечно, нет. U-geneВ результате он выходит аж на 10 разновидностей отношений - каждая разновидность нагружается определённой семантичекой ролью. Приведенные в НРМ-статье примеры содержат объектные типы и описания компонент, которые вполне можно отнести к A, С, K, P категориям (по Кодду) отношений. U-gene НРМ не пытается ввлодить какие либо классификации,.... во всех рассуждениях, возможная семантика хранимых данных (по умолчание предполагается, что она выражается исключительн именами) никак не анализируется (ну разве что в примерах проскальзывает) - она у каждого может быть своя (то есть никаких "типов сущностей"). (хорошая опечатка "ввлодить" - можно читать как "плодить и вводить" :) Семантика должна быть в голове проектировщика :), а явное хранение таких метаданных может быть использовано для построения более user-friendly интерфейса генерации запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2005, 12:55 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Канешна:) детали те же , а ахрегат в целом иной. Например Вы находите сходство ...Компонент типа-отношения = characteristic entity(многозначные свойства)Да, похоже. Однако в НРМ многозначное свойсва есть часть объекта, а в RM/T это другая, отдельная сущность. Например, есть человек и у него может быть нексолько кредиток. Насколькоя понимаю, в RM/T появится сущность "человек", сущность "кредитки" (в которую мы запихнем номера этих кредиток), и еще потребуется характеристичекое графовое отношение между "человеком" и "кредитками". А НРМ будет о-тип "человек", у которого компопнент "кредитки" имеет значимый тип отношение. Разница есть? И зачем "кредиткам" (или адресам, или записям о истории зарплаты) нужны собственные суррогаты? ведь они полностью идентифицируются своим номером (сиречь значением ). Но RM/T не может иначе. Еще раз повторю, что в ней каждой сущности в каждом отношении может соответсвовать только один кортеж. Следуя используемой базовой РМД, атрибут кртежа не може быть многозначным (коллекцией, группой повторения) - он всегда скаляр. Соответсвенно RM/T не может выразить множественнозначные свойства, которые у реальных объектов есть сплошь и рядом и, поэтому, вынуждена описывать эти свойства как некие отдельные сущности(появляются ненужные идентификаторы и ненужные связи). В связи со всем вышессказанным Ваше утверждениеобъектный тип = сущность тоже оказывается не совсем верным. А насчет Е-атрибутов (=OID) и таблиц каталога - это те самые одинаковые детали из которых складываются разные механизмы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2005, 15:21 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Так почему же не получается ответить на столь простой вопрос по существу темы без всякого "флуда" и "других топиков": чем "глобально определенная переменная типа-отношения varA2B, возможная [???-А.Л.] РОЛЬ которой будет заключаться в явном [???-А.Л.] представлении связи между объектами класса A и класса B" лучше класса A2B, возможная (?) роль которого будет заключаться в явном (что Вы все-таки понимаете под "явным" ?) представлении связей между объектами класса A и класса B ? Ведь и в том, и в другом случае система (НРМ в том числе) НЕ ЗНАЕТ, что это связь (то есть Вы предлагаете поддерживать связи между объектами на уровне приложения ?)... Думаю это связано, в первую очередь, с состоянием РМД. Действительно, в чем причина неудач ? Почему через столько лет "развития", и с такой армией специалистов "Р"СУБД "управляют" лишь 15%-ми компьютерных данных ? Вот что известно (и не изменилось) с 1970 года (некоторые узнали об этом только в 2004 !): 1. В РМД нет идентификации. "Отделять сущность от атрибутов сущности" (хороший "афоризм" одного из участников обсуждений) с помощью самих атрибутов сущности - серьезная ошибка (Кодд, кстати, хорошо это понимал). И, что очень важно, это ВЫНУЖДЕННЫЙ способ "идентификации", "навязанный" РМД, а не продуманное решение. 2. В связи (как ни странно !) с отсутствием идентификации в РМД нет семантики. Невозможно отразить семантику связей, например, реализуя связи с помощью атрибутов отношений. 3. В связи с отсутствием идентификации в РМД нет, и не может быть, навигации. А она нужна в приложениях практически всегда. 4. В РМД невозможно "логическое замыкание" (а в "настройках", соответственно - концептуальное замыкание). В РМД нельзя получить результат запроса с той же структурой и семантикой, что и сам объект запроса (база данных). Вместо РЕЗУЛЬТАТА запроса (удовлетворяющей запросу подсхемы схемы БД) РМД "выдает" ПРЕДСТАВЛЕНИЕ результата в виде одного отношения. 5. "Связи не по ключам" - слабое "утешение". Что означает возможность "связать" вручную (!) два отношения по одинаковому атрибуту "Город", не являющемуся "ключом" ? Это означает, что мы вручную (на уровне приложения) вынуждены нормализовать плохо нормализованную базу данных. И больше это ничего не означает. Все это можно называть "недостатками", "неудачей", "провалом" (я использовал это слово только в отношении ключей). Как угодно. Суть от этого не изменится: РМД на много лет затормозила развитие теории и практики баз данных. Я сомневаюсь, что бесконечные попытки "оживить" РМД с помощью тех или иных (обычно "объектно-ориентированных") "надстроек" могут что-то изменить. Но, конечно, с уважением отношусь к таким попыткам. А вдруг ! Вот НРМ - очередная попытка. И очередная обида на безобидные вопросы... P.S. Обратите внимание на бесконечные интерпретации по многим вопросам в этой теме. Подобного "разнообразия мнений" просто не может быть в отношении классической ОМД. Вот что значит хорошая формализация... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2005, 22:06 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
И что же это я не понял, любезный Павел Воронцов ? То, что "подобно тому, как в арифметике результатом операции над числами является число, в реляционной алгебре результатом операции над отношениями является отношение" ? Мне кажется, это Вы с трудом, но, надо отдать должное, понимаете о чем я говорю, зациклившись на книжных знаниях... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2005, 22:10 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
В идеале между пользователем и данными не должно быть "клиентских программ". Это субъективная помеха. (Как комментаторы, интерпретирующие информацию в средствах массовой информации). На сегодняшний день единственный вариант - это универсальный (не зависящий от приложений) объектный навигатор... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2005, 22:13 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
"И зачем "кредиткам" (или адресам...) нужны собственные суррогаты?" Откуда такая тяга к денормализации ? Неужели действительно не понятно "зачем" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2005, 22:15 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Глыба. Человечище. СИИЛААА!!!....(я то думал - всё, цирк уехал.. Ан нет! -клоуны то остались....) Коллега ЧАЛ, Вы задали 100 вопросов, но так и не ответили на олин единственный мой вопрос.... даже не вопрос, а просто просьбу. Или Вы совсем и не понимаете о чем я прошу? Последний раз повторяю и специально для Вас пишу ее крупными красными буквами АНДРЕЙ ЛЕОНИДОВИЧ! ЧТО БЫ РАЗГОВОР БЫЛ ПРЕДМЕТНЫЙ, ОПИШИТЕ СТРУКТУРУ КЛАССА A2B (того самого, о которым Вы в десятый раз спрашиваете) . Ну пожалуйста! я дейтствительно хочу это услышать - тогда я сразу же отвечу на этот Ваш каверзный вопрсо. А пока я воспринимаю ваше демагогию как хитрую попытку уклониться от получения ответа.... (ставлю бутылку пива - он не сделает этого) Кстати - ув.А.Л.! За прошедшие без Вас полторы недели я не забыл, что где то Вы упомянули про какую то формализацию преслоутой ОМД... Может быть Вы и забыли про мою просьбу, но я попробую Вас в очередной раз побеспокоить нижайшей просьбой - не могли бы Вы меня на нее как-нибуть навести поточнее? типа ссылку на страничку дать, с номером поста, где это творение присутсвует....(Видимо он сам понимает, что это неубедительно - иначе бы давно ссылку дал) В идеале между пользователем и данными не должно быть "клиентских программ". Вот так так!!! записали значица данные на диск (или на розетский камень) - и не нужно никаких драйверов, ОС, офисов и т.п. . Все это гадкие программы, стоящие между данные на диске и бедным, обманутым пользователем....Пусть он считывает данные напрямую с диска, с помощью лупы и компАса? И еще он не должен быть дальтоником, потому как места, где информация о связях, зеленой краской отмечены, а где об объектах - красной.... Типа того.... авторТо, что "подобно тому, как в арифметике результатом операции над числами является число, в реляционной алгебре результатом операции над отношениями является отношение" ? Мне кажется, это Вы с трудом, но, надо отдать должное, понимаете о чем я говорю, зациклившись на книжных знаниях... Паша! срочно отдай ему должное - иногда он дейтсвительно говорит понятные вещи (типа как сейчас)....Все таки мне кажется, что это супердемагогище, потому как просто дурак вряд ли смог бы этак вывернуться - банальностью показать свой понятность. Андрей Леонидович. На прошлом развороте я Вас ........ по причине Вашего навязчивого но неубедительного бормотания ( а ля "Ты че сказал? Ну мужик ты дурак! ты хоть сам поал, че сказал? да ты ничего не пнимаешь!! И он ничего не понимает!!! А я вот точно знаю - ты не прав... и он не прав..! Помнишь, я это и давеча говорил, правда помнишь? Вот тота, знацица я прав..." Форма конечно другая. но аргумены и стиль по сути те же....)......вежливо послал...мммм...... атсюдава. Неужели Вы еще этого не поняли? Ах, как это печально.... Но я вижу, что Вы с трудом, но надо отдать Вам должное, начинает понимать, о чем а Вам говорю..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2005, 00:37 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичВ идеале между пользователем и данными не должно быть "клиентских программ". Это субъективная помеха. (Как комментаторы, интерпретирующие информацию в средствах массовой информации). Правильно, а между пользователем и процессором тоже не должно быть промежуточного слоя. Все эти компиляторы, интерпретирующие интерпретаторы, языки высокого урованя, это все тоже субъективная помеха, это только кажется что они упрощают жизнь (как и клиентские программы), на самом деле только усложняют, прямо беда. Все легко и просто пишется в машинных кодах, с прямым доступом к диску, операционные системы тоже не нужны. Но нам этой мудрости конечно не понять. Прошу прощения за флейм в серьезном топике, постараюсь больше не допускать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2005, 05:22 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей Леонидович! Да вы просто морально права не имеете говорить слово "навигация", а тем более говорить о ее "отсутствии" в РМД и о ее "необходимости". Поскольку -- все тому свидетели! -- на открытый вам вызов формализовать понятие "навигации", доказать ее необходимость и обосновать ее "невозможность" в РСУБД вы ответили жалким блеяньем (без единого аргумента, цитаты, ссылки), которое я подробно разобрал , и затем вообще уклонились от обсуждения . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2005, 07:47 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичИ что же это я не понял, любезный Павел Воронцов ? То, что "подобно тому, как в арифметике результатом операции над числами является число, в реляционной алгебре результатом операции над отношениями является отношение" ?Да-да-да, именно этогоВы не поняли, разлюбезнейший Андрей Леонидович! Да, и - ссылку на формальное описание ОМД - в студию! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2005, 09:38 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
c127 Андрей ЛеонидовичВ идеале между пользователем и данными не должно быть "клиентских программ". Это субъективная помеха. Правильно, а между пользователем и процессором тоже не должно быть промежуточного слоя. (рискну довести до абсурда) Нада тока вживить процессор в мозг, и сотовую связь напрямую через уши - и тока ф путть! - навигировать по данным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2005, 10:47 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Ну все, понеслась по кочкам... Вы всерьез полагаете, что сможете переубедить ЧАЛ ? Стебаться-то зачем ? Ладно бы те, кто с ним не сталкивался... Ну оставьте его в покое, и так уже несколько топиков флеймом забита ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2005, 14:50 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Все по тому же адресу лежит немножко новая версия. Вопрос прочитавшим. Есть ли в предложенном ....мммм..... какие-нить элементы новизны и полезности? А то я в раздумьях, тратиться ли на хороший перевод, и вообще нужны ли дальнейшии телодвижения в этом направлении, или "порапереквалифицироватьсявуправдомы"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 18:13 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Выпейте сами бутылку пива, U-gene, и постарайтесь сформулировать: что именно Вы хорошо понимаете, а я с трудом начинаю понимать ? Разве Вы не впервые услышали не о хорошо известном Вам и мне "математическом замыкании", а о логическом и концептуальном ? И что за глупости про "драйверы" ? Вы же поняли, наверняка, о чем речь. Но упорно глупите, как и с банальным вопросом про "переменную типа-отношения" и "класс"... с127 можно понять. Он привык себя нагло вести, выбирая отдельные предложения из контекста, и ставя себя, в очередной раз, в глупое положение. Но Вам-то, U-gene, это зачем ? Вы что же, mir, думаете, что люди читать не умеют ? Кому нужно, тот поймет кто "блеет", а кто "подробно разбирает". В РСУБД нет и не может быть навигации (не верю я, что у Вас не хватает знаний, чтобы понять эту элементарную истину), а в приложениях она нужна практически всегда. Вы это знаете, и это Вас бесит... Павел Воронцов ! Так значит и Вы впервые услышали о лигическом и концептуальном замыкании ? А что именно я-то не понял ??? А вы, якобы, поняли ??? Объясните, пожалуйста. И обязательно напишите что Вам не понятно в ОМД, которая и в студии уже описана со всех сторон, и используется практически уже 35 лет ? Вы слегка не дооцениваете мозг, U-gene. И забываете о "запросах" в навигаторе, "возвращающих" удовлетворяющую условиям "запроса" подсхему с теми же идентификацией, навигацией и семантикой... А в целом - это не совсем абсурд, а вполне приземленная фантастика... P.S. Вот ChA, как всегда, приводит весьма убедительные аргументы про "кочки"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 20:32 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
С удовольствием прочитал. Особенно понравилась вот это место: U-gene...фигли ты лыбишся, у меня трое ртов, довели страну... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 22:17 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
авторВыпейте сами бутылку пива, U-gene, и постарайтесь сформулировать:Спасибо, уже выпил :) что же касается всего остального, то наиболее оптимальным вижу для себя Ваш намек прислушаться к совету ChA. В конце-концов, в диалоге с человеком, ведущем разговор в стиле "купи кирпич" (кто-бы этот человек не был), оптимальной стратегией явялется молчание. Чего и Вам желаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2005, 23:02 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneВсе по тому же адресу лежит немножко новая версия. Вопрос прочитавшим. Есть ли в предложенном ....мммм..... какие-нить элементы новизны и полезности? А то я в раздумьях, тратиться ли на хороший перевод, и вообще нужны ли дальнейшии телодвижения в этом направлении, или "порапереквалифицироватьсявуправдомы"? По-моему теория сейчас никому не нужна. К сожалению. Более строго: на хлеб с маслом теорией сейчас не заработаешь. Есть люди у которых в разумных пределах достаточно денег, например профессорские ставки или которые заработали в то время когда за теорию платили, они ею продолжают заниматься. Так что если речь идет о деньгах, то тратиться на перевод ИМХО не стоит. На остальные вопросы ответить не могу, не владею предметом. Общее пожелание, которое чистое ИМХО без претензий на что-либо: хотелось бы побольше математики, было бы легче читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 04:10 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene А то я в раздумьях, тратиться ли на хороший перевод, и вообще нужны ли дальнейшии телодвижения в этом направлении, или "порапереквалифицироватьсявуправдомы"? Это зависит наверное от того какие цели Вы сами ставите перед собой. И конечно от степени Вашей уверенности в полезности/востребованности Ваших идей. Телодвижения в направлении диссертация-наука-... вобщем то отличаются от телодвижений в направлении коммерческая реализация-бизнес... Последнее потребует профессиональной переориентации из "читателя" (то есть пользователя распространенных коммерческих СУБД) в "писателя" (то есть в создателя СУБД). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 15:36 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Андрей Леонидович Полагаю, что вы должны благодарить бога за то, что вам никак не удается никого заманить на свой гипотетический "семинар" (многие просто живут в других городах). Судя по вашим привычным методам ведения дискуссии, вы бы довели любого до белого каления своими увертками, уходами в сторону, игнорированием неприятных вопросов и замечаний. Итог, полагаю, -- минимум тяжкие телесные повреждения, нанесенные вам оппонентом в состоянии аффекта :) Славьте господа нашего за Интернет и виртуальное общение, дарующее вам телесное здоровье! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 15:57 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Почему же гипотетический ? И почему "семинар" ? И почему заманить ??? Самый обычный научно-практический семинар по РМД, которую Вы и Ваши коллеги плохо понимаете. Здесь-то Вы просто игнорируете все, что Вам не знакомо, и делаете вид, что не понимаете даже очевидных вещей. А на очном семинаре такой номер у Вас не прошел бы. Можно и в Перми, например, семинар провести (или совсем уж "по середине" - в Свердловске). Вы сделаете доклад по РМД. А я только вопросы Вам задам. И все. Этого будет достаточно, чтобы все присутсвующие поняли глубину Вашего непонимания РМД. А потом я сделаю доклад по ОМД. И Вы просто зададите вопросы, чтобы все присутствующие поняли глубину Вашего непонимания ОМД... P.S. А что это Вы, вдруг, про "семинар", да еще "гипотетический" ? Это Вы в такой форме ("увертывания" и "ухода в сторону") хотите сообщить, что все поняли про "навигацию в РМД" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2005, 23:35 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Представляю себе этот семинар... Андрей Леонидович, с горящими глазами в предвкушении унижения оппонентов, бросается в бой с коренным вопросом - "Почему в РМД нет навигации ?!". Но тут его срезают очередным (пятидесятый раз заданный) вопросом - "а что вы понимаете под навигацией ?" - и коллега ЧАЛ тушуется. Начинает бекать, мекать, нести пургу про прозрачность данных для пользователя, отсутсвие посредников... в это время коллеги коллеги ЧАЛа за его спиной крутят у виска, а наиболее сердобольные жалостливо качают головами. На вопросе "А почему у РМД нет идентификаторов ?!" группа отправляется покурить, и тонкое (но коренное !) отличие идентификаторов от первичных ключей остается неоцененным серой массой семинаристов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2005, 01:21 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей Леонидович. Поскольку несколько Ваших последних постов никакого отножения к сабжу не имеют, я еще раз предлагаю Вам отрыть свой собственный топик. Хотите - я открою его для Вас но, не ручаюсь, что его название Вам понравиться? В любом случае уйдите отсюда ПОЖАЛУСТА!!! 2all. Как бы нам этот балаган прекратить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2005, 10:05 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Сегодня наконец получил эту вот бумажку :).... В течении двух лет могу получать аналогичные практически world-wide.....если надыбаю деньжат на этот :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2005, 19:55 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Сначала, U-gene, Вы не ответили на мой вопрос, "имеющий отношение", потом начали откровенно грубить, писать про "пресловутую ОМД", и, наконец, почему-то только меня попросили удалиться, как-будто я один допустил сообщение не по теме (всего одно - в ответ на замечания НЕ ПО ТЕМЕ в мой адрес). А по теме мне значит можно высказываться ? Или уже тоже нет ? P.S. Раз U-gene скромность не позволяет, я Вас, vybegallo, очень прошу не высказываться больше не по теме. Потому что я вынужден отвечать: Плохо Вы себе представляете семинары по базам данных. Еще хуже, чем собственно модели данных. Тушеваться мне, к сожалению (!), не придется. Все, в том числе и Вы, прекрасно знают "почему в РМД нет навигации". Это бессмысленный вопрос. И совсем уж глупо спрашивать "почему в РМД нет идентификаторов". Это мы уже подробно разобрали. И отличие идентификаторов от первичных ключей совсем не тонкое, а слишком очевидное, чтобы даже самые "серые семинаристы" этого не понимали уже сейчас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2005, 20:53 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Ведь Ваше сообщение 1752696, U-gene, не случайно появилось ? (Или следует считать, что 1723286 остается в силе, и там приведены правильные примеры (два) представления связей многие-ко-многим в НРМ ?) И Вы сказали, что будете думать дальше. Я Вам задал конкретный вопрос, а Вы ответили вопросом на этот вопрос, как-будто забыли свое сообщение 1738260: "Что же если приспичит:), то можно создать такой класс, назвав его "Link Between..."." P.S. А в Вашем сообщении 1739204: "Для того что бы использовать явно определенную связь (такую, какую хочет но не может ув. АЛ) надо либо знать, что такая связь есть, либо иметь возможность получить из системы связи в которых участвуют объекты данного класса." содержится две серьезные ошибки: 1) АЛ давно использует, причем не теоретически, а практически; 2) в системе, в которой НЕТ СВЯЗЕЙ, не может быть "возможности получить из системы связи"; разве это не очевидно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.08.2005, 22:25 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичP.S. Раз U-gene скромность не позволяет, я Вас, vybegallo, очень прошу не высказываться больше не по теме. Потому что я вынужден отвечать: Плохо Вы себе представляете семинары по базам данных. Еще хуже, чем собственно модели данных. Тушеваться мне, к сожалению (!), не придется. Все, в том числе и Вы, прекрасно знают "почему в РМД нет навигации". Это бессмысленный вопрос. И совсем уж глупо спрашивать "почему в РМД нет идентификаторов". Это мы уже подробно разобрали. И отличие идентификаторов от первичных ключей совсем не тонкое, а слишком очевидное, чтобы даже самые "серые семинаристы" этого не понимали уже сейчас. Я тоже вас очень прошу больше не высказываться на тему навигации и идентификаторов. Потому что мы тут все, то вместе, то поврозь, а то попеременно, пытаемся вам втемяшить что навигации в SQL нет по той же причине, почему народ пишет на С#, а лучше - Лиспе, а не на ассемблере. Потому что прогресс в программировании движется от "как делать" к "что делать", а "как делать" пусть компилятор/оптимизатор думает. И идентификатор таки равен первичному ключу, а то что иногда попадаются базы с дубликатами - так это плохие, неправильно спроектированные базы. Ах да, и еще "семантика". Под "семантикой" вы понимаете банально хранение связей внутри записи, т.е. то, на чем погорели сетевые базы данных. Я все ваши сокрушительные доводы перечислил ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2005, 01:58 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
ну что с ним делать? авторВедь Ваше сообщение 1752696, U-gene, не случайно появилось ? Да не случайно. Более того, вступительноя фраза имеет к вам прямое отношение. Обсуждение с ModelR и наши с вами баталии привели к мысли о необходимости иметь возможность определять глобальные переменные значимых типов (т.е. переменных не являющихся объектами). Их роль может быть различной. В частности они могут служить для 1) задания подмножества объектов данных(с подачи ModelR) и 2) описание ассоциаций между объектами (с Вашей). В новой версии НРМ я этим переменным отдельную главку уделил (наверное в конце стоит "Благодарности" добавить?). И что теперь? Хорошо. Выделим специальный метатип, котрый назовем "группа объектов". Также выделим специальный метатип, котрый назовем "связь". Ограничение на "группу" - единственный атрибут ссылочного типа. Ограничение на "связь" - более одного атрибута ссылочного типа. Можно извернуться, и в конкретной реализации сбацать спец. языковую конструкции типа CREATE A2B AS LINK BETWEEN A,В with paramert ( plist ) (или как правильно?). Только я этим заниматься не буду. Ведь в самом начале я сказал, что НРМ не обращает внимания на возможную семантику данных, и, исходя из этого, с точки зрения НРМ, А2B будет являться не более чем явно заданной переменной значимого типа (т.е. переменной отношения). Я же давно сказал - отностиесь к НРМ как к возможному способу описать данные (но не предметную область). Мне, образно и грубо говоря, пофигу все Ваши гипотезы о структуре окружающего мира. Я предлагаю всего лишь ограниченный набор типов и операций. Поэтому я не знаю, "чем глобально определенная переменная типа-отношения varA2B, возможная [???-А.Л.] РОЛЬ которой будет заключаться в явном [???-А.Л.] представлении связи между объектами класса A и класса B" лучше класса A2B ???". Эту роль задаете Вы - я лишь высказал общие предположения о том, как переменные предложенных типов можно использовать. Если Вам для того, что бы сохранить данные о связи, не подходит ни то ни другое - ИМХО и фиг с ним. Ну не сраслось. Посему я посыпаю свою голову пеплом (я это уже так или иначе сделал в 1769113) и слезно прошу: ну отстаньте Вы от меня со своими связями!!!... нет их, нет!!!отстаньте от меня!!! я уже говорил об этом неоднократно (например в 1738261). Уймитесь, заткните здесь этот фонтан. Здесь он не к месту. Повторяю - если изнутри давит и сдержаться не можете(сорри за удаффовскую лексику)- высритесь. Откройте свой топик и начните проповедовать там. Я уверен - модераторы Вас поймут. Только одна просьба - побольше ссылок, исходников или хотя бы скриншотов - дабы быть убедительным. Коли уж Вы давно все это используете и не теоретически а практически - у Вас должно получиться. У вас же есть гениальная система - нажмите же пару раз на кнопочку PrintScrn и выложите результат сюда!!!...Желательно с комментариями. К сожалению, за прошедший год Вы не представли не одной ссылки, ни одной строки кода, ни одной внятной формулы с объяснением. Все ваши посты - это вал риторических вопросов ("неужели это еще не ясно...?"), снабженных выдранными из контекста цитатами из классиков. Вы же, как герой анекдота "Дорогой, слышал, по радио передавали, что какой то идиот едет по встречке... Дорогая, если бы один! - они там ВСЕ ТАКИЕ." Вы замечаете нюансы в доводах собеседника, можете перерыть все предыдущие посты....Однако вот я Вас просил дать хоть какие нибуть ссылки на Ваши формулы, на что нибудь, что описывало ОМД...И ведь нет - Вы этого УПРЯМО не видите... Из этого я делю вывод, что у Вас ничего за душой нет (может только только желание пометить чужие топики) - вообще ничего. Есть только обрывки мыслей, зачатки идей.....и безграничная уверенность в своей гениальной правоте. P.S.P.S. А в Вашем сообщении 1739204: "Для того что бы использовать явно определенную связь (такую, какую хочет но не может ув. АЛ) надо либо знать, что такая связь есть, либо иметь возможность получить из системы связи в которых участвуют объекты данного класса." содержится две серьезные ошибки: 1) АЛ давно использует, причем не теоретически, а практически; 2) в системе, в которой НЕТ СВЯЗЕЙ, не может быть "возможности получить из системы связи"; разве это не очевидно ? 1) Ой простите..не знал....но Вы бы предупредили, что ли.... ?.... А нажмите в этом практическом месте на PrintScrn... Интересно же, как у Вас связь определяется, как используется (а то все намеки да полунамеки).... Хоть краем глаза взглянуть на это чудо.... 2)Вы, хоть на минуточку, головой то думаете? Если в начале предложения сказано, что связь явно определена - как по Вашему, есть она или нет? Боюсь, что через несколько постов, Вам повторно придется все, сказанное здесь, повторять заново... Французские ученые предложили новую гипотезу, объясняющую загадку улыбки Моны Лизы. По их мнению она было просто дурой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2005, 02:09 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Ну "распирает" Вас, U-gene, а не меня. Я просто использую наиболее эффективные технологии баз данных, и просто сообщаю о них. А Вы озабочены совершенствованием не реализованной и сомнительной, мякго говоря, теории, путем интеграции в нее другой технологии программирования, которая по своей сути (идентификация и навигация) этой самой теории противоречит... Итак, Вы предлагаете говорить только о "соединении РМД с ОО-языками". В принципе я был бы не против. Но давйте читать НРМ, которую я уже, прямо как труды Кодда, знаю почти наизусть. "Во многом речь идет о возможностях для описания сложной предметной области". Вы дейсвительно так считаете после всего сказанного Вами здесь ? "Предполагается, что речь идет о данных, описывающих некую предметную область, которая представляет собой совокупность реально существующих объектов." А между этими "реально существующими объектами" есть "связи" ? Кодд и Дейт считают, что есть. А Вы как считаете ? Нет, нет я не собираюсь "приставать" к Вам со связями. Я просто хочу, чтобы Вы не в полемическом запале, а честно сказали бы, наконец, что по Вашему мнению представляет собой "сложная предметная область", которую кто-то (не Вы, конечно !) будет описывать с помощью НРМ. "Речь идет о любой предметной области и о любом ее объекте - в любом случае данные, описывающие их состояние, должны быть представлены в реляционной БД как множество значений отношений, поскольку это является основным требованием ... реляционных БД." Почему Вы все время говорите об "объектах предметной области", а не об "объектах ОО-языков программирования" ? Вот, для начала, совершенно конкретные вопросы, исключительно по НРМ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2005, 21:59 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Конечно, vybegallo, я не буду объяснять Вам элементы теории баз данных, как только Вы поймете эти элементы и/или прекратите писать откровенные глупости. В РМД нет навигации не потому что есть какие-то языки программирования, а потому что природа РМД делает навигацию невозможной. А в приложениях она нужна практически всегда. И Вы ее вынуждены реализовывать, конечно же, но не средствами СУБД. И я Вам это "втемяшу" в конце концов, даже не сомневайтесь. И Вы поймете, в конце концов, что такое интегрированный язык баз данных... Идентификатор не имеет ничего общего с первичным ключом. И это Вы поймете, если будете внимательно изучать мои объяснения, и банально знакомиться с технологиями баз данных... Ну а "хранение связей внутри записей" - это то, что приходится делать Вам. И именно поэтому у Вас никогда не получится поддерживать семантику данных средствами СУБД, а не в приложениях... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2005, 22:20 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
...Вот, для начала, совершенно конкретные вопросы...Оказывается, это было только начало..:(...И как Вас занесло в IT?...Шли бы в угро, в дознаватели...там от Вас ИМХО баааальшоооой толк будет....Кстати!......И я Вам это "втемяшу" в конце концов, даже не сомневайтесь. И Вы поймете, в конце концов... ....осторожней с этим!....это называется "признание под пыткой"..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2005, 00:47 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичКонечно, vybegallo, я не буду объяснять Вам элементы теории баз данных, как только Вы поймете эти элементы и/или прекратите писать откровенные глупости. В РМД нет навигации не потому что есть какие-то языки программирования, а потому что природа РМД делает навигацию невозможной. А в приложениях она нужна практически всегда. И Вы ее вынуждены реализовывать, конечно же, но не средствами СУБД. И я Вам это "втемяшу" в конце концов, даже не сомневайтесь. И Вы поймете, в конце концов, что такое интегрированный язык баз данных... Идентификатор не имеет ничего общего с первичным ключом. И это Вы поймете, если будете внимательно изучать мои объяснения, и банально знакомиться с технологиями баз данных... Ну а "хранение связей внутри записей" - это то, что приходится делать Вам. И именно поэтому у Вас никогда не получится поддерживать семантику данных средствами СУБД, а не в приложениях... нет, с вами положительно можно разговаривать только наевшись гороху. Попробуйте себе представить, что РМД делает навигацию невозможной ПОТОМУ ЧТО ОНА НАХРЕН НЕ НУЖНА. Ну такой вот прогресс случился. Типа еще вчера ценились телефонистки с длинными руками, а тут бац - и автоматический коммутатор появился. 30 лет развития показали, что вашу ненаглядную навигацию можно прекрасно заменить операторами UPDATE, DELETE и SELECT. Это в OLTP системах. И наоборот, в DW системах навигация ваша садится на попу и начинает громко плакать, в то время как SQL чувствует себя прекрасно. Только вы, теоретик вы наш, в глаза не видели ни одной нормальной OLTP системы, а о datawarehouse-ах даже не читали, потому все наши объяснения для вас пустой звук. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2005, 01:59 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 vybegallo Брось, браток. Не мечи бисер. Больному человеку логикой ничего не доказать. Он "знает", потому что верит. Он верит, потому что "знает". В этот замкнутый круг никакие факты и логика не будут им допущены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2005, 07:43 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Так как оказывается уже "существует зарегистрированный автор с таким именем" (Андрей Леонидович). Из Вашего ответа, U-gene, я понял, что Вы, все-таки, озабочены "концептуальным уровнем", в определенной степени. И это подтверждает вот эта ваша "странная фраза" из НРМ: "Входящие в компоненты объектов поля ссылочного типа позволяют описывать связи, существующие между объектами моделируемой предметной области." Так что к связям нам еще придется вернуться, если Вы не исключите эту фразу из НРМ в новом варианте... А пока продолжим "не про связи". "Уникальный идентификатор объекта отделен от значений его компонентов." Не могли бы Вы объяснить Павлу Воронцову почему это он "отделен" ? Ну и еще один важный вопрос по постановке задачи, так сказать. 1. Вы говорите, что никаких "слоев" нет. 2. Вы говорите, что оъектная "часть" (или объектное представление - какое-то слово приходится использовать), конечно (!) НЕ НОРМАЛИЗОВАНА. 3. Вы говорите, что пользователя не должны беспокоить отношения реляционной системы хранения. 4. И, наконец, Вы говорите, что эти отношения КОНЕЧНО НОРМАЛИЗОВАНЫ. Поясните, пожалуйста, каким образом они окажутся нормализованными ? Как я должен описывать предметную область но объектном "уровне" (извините) с помощью системы типов НРМ, чтобы получить нормализованную схему на уровне реляционной системы хранения ? Это очень важный вопрос. Так как пока не понятно зачем нужна "объектная ориентированность", если не считать моды. Ведь почему нельзя использовать только "объектную ориентированность" Вы объяснили - потому что БД "должна" быть редяционной. Но почему нельзя не использовать вообще "объекты" Вы не обяснили (ну нельзя же считать объяснением что это "в течение длительного времени будоражит умы специалистов"), а ведь "данные, представленные в виде значений компонентов объектов, и данные, представленные в виде значений R-отношений - это одни и те же данные...". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2005, 19:23 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Я не теоретик, vybegallo, и видел очень много разных OLTP систем. И если среди них встречалась нормальная, она ни в коем случае не использовала "Р"СУБД. "Р"СУБД бесполезны, в первую очередь, для OLTP систем, как мы, вместе с Вами, заметьте, уже давно выяснили. Вы что же уже забыли, что единственное "назначение" "Р"СУБД, которое Вы смогли придумать - это "получение отчетов сложной формы" ? И не "мечите бисер" в виде "телефонисток и коммутаторов", как Вам посоветовал "здоровый" и "умный" mir. Лучше почитайте полезные мысли по существу вопроса (а если что-то не поняли, так переспросите, а не разводите демагогию про "телефонисток")... В РМД нет навигации не потому что есть какие-то языки программирования, а потому что природа РМД делает навигацию невозможной. А в приложениях она нужна практически всегда. И Вы ее вынуждены реализовывать, конечно же, но не средствами СУБД. И я Вам это "втемяшу" в конце концов, даже не сомневайтесь. И Вы поймете, в конце концов, что такое интегрированный язык баз данных... Идентификатор не имеет ничего общего с первичным ключом. И это Вы поймете, если будете внимательно изучать мои объяснения, и банально знакомиться с технологиями баз данных... Ну а "хранение связей внутри записей" - это то, что приходится делать Вам. И именно поэтому у Вас никогда не получится поддерживать семантику данных средствами СУБД, а не в приложениях... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2005, 19:34 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
авторИз Вашего ответа, U-gene, я понял, что Вы, все-таки, озабочены "концептуальным уровнем", в определенной степени. И это подтверждает вот эта ваша "странная фраза" из НРМ: "Входящие в компоненты объектов поля ссылочного типа позволяют описывать связи, существующие между объектами моделируемой предметной области." Так что к связям нам еще придется вернуться, если Вы не исключите эту фразу из НРМ в новом варианте...ГЫ-ГЫ...Представьте, что на баночке с зеленой краской написано, что эта краска подходит для рисования травы, а тут выползает седой ботаник и начинает гнать, что это дескать непонятно и они травы не видали, и эту странную фразу надо исключить. ЧАЛ, а может мне под Вашу диктовку писать? Может ссылки нафиг убрать с вашей подачи?.... Заполнить страниц 20-ть сравнением объектов и субьектов, высосать из польца пару гипотез о строении окружающего мира, соотнести их с Липсом и Ассемблером PDP-11 и прийти к выводу о необходимости повального использования программируемых калькуляторов с питанием от солнечных батарей?..... .. .. ОПА! .. .. БЛИН! ЧАЛ Вы действительно копируете свои посты!!! Я то думал, что у Ваших санита... тьфу...... оппоннетов это просто фигура речи, отражающая Вашу фанатичную веру в Ваш бред, а тут БАЦ!... читаю Ваш последний пост обращенный к vybegallo и вижу, что он на 2\3 в лоб скопирован из Ващего же предыдущего!!!......офигеть... клиника..... Не могли бы Вы объяснить Павлу Воронцову почему это он "отделен" ?Это с какого перепоя то??? Понятно, Павел Вас вздрючнул пару раз...;))).. но я то здесь при чем? И что еще мне надо сделать Павлу Воронцову?... ...Поясните, пожалуйста, каким образом они окажутся нормализованными ?... Про это в обшем-то написано, но сначала Ваша очередь . Поясните, пожалуйста, а как же Вы системе собираетесь говорить про яблоки и про apple'ы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2005, 00:21 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Не удержался Но почему нельзя не использовать вообще "объекты" Вы не обяснили Потому что они противостоят субъектам..... То есть очевидно, что нужны еще и субъекты, которые бы объясняли системе про объекты.... И про связи!!! а а каж без них.... Подходитт такой субъект к системе и начинает ей так важно на языке "У" вещать :"Жжжжжжжжжжжж". А система ему поддакивает а потом на принтере печатает :" яблоко связано с apple посредством связи!!! и никак иначе..." ЧАЛ, прочитайте это внимательно три раза - здесь скрыт глубокий филосовский смысл, дезавуирующий Ваши гипотезы о структуре окружающего мира. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2005, 01:02 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
1) Из того что Вы, U-gene, сказали про "ботаника", "Лисп" и "солнечные батареи" я понял, что связи между "объектами реального мира" есть и Вы их как-то предполагаете представлять с помощью типов НРМ. Тогда я, наверное, могу вернуться к нашему простому примеру со связью многие-ко-многим, имеющей характеристики связи ? Вы предложили 3 варианта представления такой связи: 2 в сообщении 1723286 и 1 в сообщении 1752696. Очевидно, что второй вариант из сообщения 1723286 не годится (нет характеристик связи). Скажите, пожалуйста, какой из двух оставшихся вариантов Вы считаете более удачным, и приведите, пожалуйста, для этого варианта схему БД на "реляционном уровне хранения". 2) Из того, что Вы сказали про "отделение идентификаторов" я понял, что Павел Воронцов, которого все время интересовал этот вопрос, уже и сам узнал (наверное из личной переписки с Вами) ответ на него. Очень хорошо. Хотя бы к одному вопросу (отсутствию идентификации в РМД, в которой ключи не отделены от неключевых атрибутов) мы можем больше не возвращаться. 3) Будьте любезны, поскольку в НРМ "про это" не написано, поясните "про это" здесь: 1. Вы говорите, что никаких "слоев" нет. 2. Вы говорите, что оъектная "часть" (или объектное представление - какое-то слово приходится использовать), конечно (!) НЕ НОРМАЛИЗОВАНА. 3. Вы говорите, что пользователя не должны беспокоить отношения реляционной системы хранения. 4. И, наконец, Вы говорите, что эти отношения КОНЕЧНО НОРМАЛИЗОВАНЫ. Поясните, пожалуйста, каким образом они окажутся нормализованными ? Как я должен описывать предметную область но объектном "уровне" (извините) с помощью системы типов НРМ, чтобы получить нормализованную схему на уровне реляционной системы хранения ? Это очень важный вопрос. Так как пока не понятно зачем нужна "объектная ориентированность", если не считать моды. Ведь почему нельзя использовать только "объектную ориентированность" Вы объяснили - потому что БД "должна" быть реляционной. Но почему нельзя не использовать вообще "объекты" Вы не объяснили (ну нельзя же считать объяснением что это "в течение длительного времени будоражит умы специалистов"), а ведь "данные, представленные в виде значений компонентов объектов, и данные, представленные в виде значений R-отношений - это одни и те же данные...". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2005, 18:15 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
ЧАЛ2) Из того, что Вы сказали про "отделение идентификаторов" я понял, что Павел Воронцов, которого все время интересовал этот вопрос, уже и сам узнал (наверное из личной переписки с Вами) ответ на него. Очень хорошо. Хотя бы к одному вопросу (отсутствию идентификации в РМД, в которой ключи не отделены от неключевых атрибутов) мы можем больше не возвращаться.Не будете ли Вы столь любезны таки не использовать моё имя в Ваших предположениях? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2005, 20:37 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
1)ЧАЛ я же сказал - не годится не один. Все это суета сует. Расслабтесь, выпейте пивка с клозарилом, прочитайте еще раз мое 1823162... 2)Дык! тут ваще противЧАЛовский заговор. Мы все сначала списываемся, а потом БАЦ! начинаем Вас синим лучами облучать. 3)А вот фигушки. Сначала Вы про яблоки, потом я про слои которых нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2005, 23:11 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Обещаю, что не буду, Павел Воронцов. И надеюсь на взаимность. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2005, 20:32 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Вот это другое дело, U-gene. Можете ведь отвечать по существу, когда захотите. Теперь все прояснилось. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2005, 20:34 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
ЧАЛЯ не теоретик, vybegallo, и видел очень много разных OLTP систем. И если среди них встречалась нормальная, она ни в коем случае не использовала "Р"СУБД. "Р"СУБД бесполезны, в первую очередь, для OLTP систем, как мы, вместе с Вами, заметьте, уже давно выяснили. Вы что же уже забыли, что единственное "назначение" "Р"СУБД, которое Вы смогли придумать - это "получение отчетов сложной формы" ? И не "мечите бисер" в виде "телефонисток и коммутаторов", как Вам посоветовал "здоровый" и "умный" mir. Лучше почитайте полезные мысли по существу вопроса (а если что-то не поняли, так переспросите, а не разводите демагогию про "телефонисток")... В РМД нет навигации не потому что есть какие-то языки программирования, а потому что природа РМД делает навигацию невозможной. А в приложениях она нужна практически всегда. И Вы ее вынуждены реализовывать, конечно же, но не средствами СУБД. И я Вам это "втемяшу" в конце концов, даже не сомневайтесь. И Вы поймете, в конце концов, что такое интегрированный язык баз данных... Идентификатор не имеет ничего общего с первичным ключом. И это Вы поймете, если будете внимательно изучать мои объяснения, и банально знакомиться с технологиями баз данных... Ну а "хранение связей внутри записей" - это то, что приходится делать Вам. И именно поэтому у Вас никогда не получится поддерживать семантику данных средствами СУБД, а не в приложениях... Весьма эмоционально, но ведь и доля разумного в этом есть. Например, можно утверждать, что эффективные OLTP системы можно достаточно комфортно создавать и без применения реляционных СУБД. Также можно утверждать, что существуют определенные классы приложений, в которых нужна навигация. И в таких приложениях навигацию приходится как-то реализовывать. Без сомнения удобнее это делать, если используемая СУБД поддерживает навигацию на "нативном" уровне. Ну а об отличии ключей и идентификаторов я уже высказывался, и если vybegallo пишет "... хранение связей внутри записи, т.е. то, на чем погорели сетевые базы данных", то мне бы хотелось увидеть как он раскроет эту тему подробнее (pleese). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2005, 12:13 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Alexey Rovdo Например, можно утверждать... Также можно утверждать......продолжу Вашу мысль..."Неужели Вы этого не понимаете? Ах как досадно..." (с) ЧАЛ.... Это я к тому, что можно увержать все, что угодно. А Вы покажите это. И в таких приложениях навигацию приходится как-то реализовывать. Без сомнения удобнее это делать, если используемая СУБД поддерживает навигацию на "нативном" уровне."Неужели Вы этого не понимаете? Ах как досадно..." (с) ЧАЛ.... Дайте, пожалуйста, определения - что такое навигация?... что такое "нативный уровень"? ...то мне бы хотелось увидеть как он раскроет эту тему подробнее (pleese). А мне хотелось бы увидеть, как Вы раскроете вышеназванные темы (please) Наконец, не совсем ясно, как это относится к сабжу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2005, 13:01 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneУРА товарищи!!!!Ну-ну... ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2005, 15:23 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneAlexey Rovdo Например, можно утверждать... Также можно утверждать......продолжу Вашу мысль..."Неужели Вы этого не понимаете? Ах как досадно..." (с) ЧАЛ.... Это я к тому, что можно увержать все, что угодно. А Вы покажите это. Лениво, да и времени нет. А позиция ЧАЛ мне тоже не импонирует. U-gene И в таких приложениях навигацию приходится как-то реализовывать. Без сомнения удобнее это делать, если используемая СУБД поддерживает навигацию на "нативном" уровне."Неужели Вы этого не понимаете? Ах как досадно..." (с) ЧАЛ.... Дайте, пожалуйста, определения - что такое навигация?... что такое "нативный уровень"? А какая разница, что такое "навигация"? Что бы это ни было, "навигацию приходится как-то реализовывать" и не более того. U-gene ...то мне бы хотелось увидеть как он раскроет эту тему подробнее (pleese). А мне хотелось бы увидеть, как Вы раскроете вышеназванные темы (please) Да не вопрос. Например, по п.1. моего высказывания (... эффективные OLTP системы можно достаточно комфортно создавать и без применения реляционных СУБД.): OLTP-системы прекрасно существовали и до появления реляционных СУБД. Они строились на базе т.н. мониторов транзакций, например: MVS-TSO, CICS, IMS. Позднее мониторы транзакций прилепили и к реляционным СУБД. Это, однако, вовсе не означает, что OLTP-системы, построенные на базе, к примеру, СУБД IMS (к слову, живет и здравствует и ныне) априори не эффективны - очень даже эффективны, если сделаны грамотно. Впрочем, все это действительно имеет весьма опосредованное отношение к сабжу. Поэтому раскрывать все пункты здесь я не стану. Но замечу, что хотел лишь обратить ваше внимание на то, что хотя коллега ЧАЛ и выступает весьма эмоционально и непоследовательно, но в ряде его высказываний есть зерно разумного. Вы же предпочитаете вести себя в его стиле и замыливать вопрос вместо того, чтобы исправить свои недоработки или пояснить свою позицию. Коллега ЧАЛ возможно и не заслуживает того, чтобы вы ему отвечали на все его наезды, но ведь и другие тоже читают эту дискуссию ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2005, 16:41 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Ключевой является фраза... ...А какая разница, что такое "навигация"?... Если для Вас не представляет разницы, что это такое, то ИМХО навигация очень хорошо реализована например в GOOGLE EARTH. Там нажимаешь на любую точечку на земном шаре и БАЦ - система показывает ее поближе. Тоже ведь "навигация"? Или Вы все же какую-то другую "навигацию" имеет в виду? Но тогда Вам есть разница? Это я к тому, что если здесь кто то "замыливает вопросы" то это не я. Например, по п.1. моего высказывания (... эффективные OLTP системы можно достаточно комфортно создавать и без применения реляционных СУБД.): OLTP-системы прекрасно существовали и до появления реляционных СУБД. Они строились на базе т.н. мониторов транзакций, например: MVS-TSO, CICS, IMS. Позднее мониторы транзакций прилепили и к реляционным СУБД. Это, однако, вовсе не означает, что OLTP-системы, построенные на базе, к примеру, СУБД IMS (к слову, живет и здравствует и ныне) априори не эффективны - очень даже эффективны, если сделаны грамотно. Отлично! Я могу развить эту мысль - грамотно сделанная система должна быть эффективной, иначе она сделана неграмотно (только, вы не находите, что это звучит как банальнось?) даже если она сделана на ассемблере. И что? Какое отношение это длинное, красивое и без сомнения правильное предложение имеет к тезису ЧАЛа "РМД - бесполезный отстой" Мы зачем мы опять начинаем сравнимать системы с моделями ? Впрочем, все это действительно имеет весьма опосредованное отношение к сабжу. Зачем тогда писать об этом? Поэтому раскрывать все пункты здесь я не стану. Понятно. Про "нативный уровень" это даже я не буду уточнять. Скорее всего услышу, что это не имеет значения. Но замечу, что хотел лишь обратить ваше внимание на то, что хотя коллега ЧАЛ и выступает весьма эмоционально и непоследовательно, но в ряде его высказываний есть зерно разумного. Ага... Ложка меда в бочке ..мммм..... дегтя. Удивительно, что здесь Вам ковыряться не лень и время на это есть. Вы же предпочитаете вести себя в его стиле... Ну если человек вопросы и просьбы не воспроинимает, что же мне остается делать? С волками жить... ...и замыливать вопрос...Секундочку. Какой вопрос я замылил? ...вместо того, чтобы исправить свои недоработки...Ага. ИМХО основная моя недоработка по ЧАЛу - то, что я ипользую РМД как формальный фундамент, и то, что результат также является реляционной системой. Можно я это исправлять не буду? автор...или пояснить свою позицию. Если Вы не читали топик, то я скажу, что я честно это пытался сделать на протяжении последних четырех разворотов. Для того, что бы пояснить, я должен узнать, что же неясно. Если же в голове одно сплошное упрямое жжжжж, то с этим рано или поздно надоедает бороться. Опять же если Вы не читали топик, то я Вас уверяю - не разумные вопросы я стараюсь ответить максимально подробно. Коллега ЧАЛ возможно и не заслуживает того, чтобы вы ему отвечали на все его наезды, но ведь и другие тоже читают эту дискуссию ... Надеюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2005, 17:47 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Alexey Rovdo Ну а об отличии ключей и идентификаторов я уже высказывался, и если vybegallo пишет "... хранение связей внутри записи, т.е. то, на чем погорели сетевые базы данных", то мне бы хотелось увидеть как он раскроет эту тему подробнее (pleese). Вопрос не в том, являются ли ROWID идентификаторами или нет. Вопрос в том, что начиная хранить связи внутри объекта (а не в отдельной таблице) , мы нарушаем первую нормальную форму. Результатом чего будет либо усложнение логики СУБД и числа чтений (времени доступа), либо необходимость перекомпилировать базу при изменении связей. По сути, это разница между компиляторами (СУБД с хранением связей в записях/объектах) и интерпретаторами (РСУБД). Откомпилированные программы могут быть быстрее, но интерпретаторы гибче, и в случае изменений вам придется "перекомпилировать" гигабайты/терабайты данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 00:41 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Alexey Rovdo Да не вопрос. Например, по п.1. моего высказывания (... эффективные OLTP системы можно достаточно комфортно создавать и без применения реляционных СУБД.): OLTP-системы прекрасно существовали и до появления реляционных СУБД. Они строились на базе т.н. мониторов транзакций, например: MVS-TSO, CICS, IMS. Позднее мониторы транзакций прилепили и к реляционным СУБД. Это, однако, вовсе не означает, что OLTP-системы, построенные на базе, к примеру, СУБД IMS (к слову, живет и здравствует и ныне) априори не эффективны - очень даже эффективны, если сделаны грамотно. Оригинальное высказывание было "навигацию прекрасно можно заменить операторами UPDATE, DELETE и SELECT". А можно не заменять. Т.е. именно OLTP системы можно строить _ В ТОМ ЧИСЛЕ НА SQL_. Поэтому все ваши примеры не в кассу. А вот насчет второго высказывания (это которое "DW / DSS невозможно построить, используя навигационные системы") у вас есть возражения или контрпримеры ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 00:49 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-Gene все 10 страниц не прочитал пока. уже говорили, что кривые закладки в твоей статье? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 05:44 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
теоретически в левой части должно быть оглавление. ))))))) 1 поздравление со свидетельством. 2 можно ли считать, что в своем НРМ ты хочешь формализовать рассматриваемую область? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 05:45 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
формализовать - свести к другим широко известным формальным понятиям, то есть это слово одновременно надо читать как определить и обьяснить. эта. если мое предположение про формализацию рассматриваемой области - правда, то не мог бы ты дать ссылку на определение свойства постоянства данных. имхо, разговор о нем (равно как и разговор о какихто временах и пространствах) явно избыточен, перегружает текст манифеста и должен быть удален из работы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 05:55 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
vybegallo "навигацию прекрасно можно заменить операторами UPDATE, DELETE и SELECT". А можно не заменять. Т.е. именно OLTP системы можно строить _ В ТОМ ЧИСЛЕ НА SQL_. Можно то можно. Но вот эффективность таких систем в ряде случаев можно поставить под сомнение. vybegallo А вот насчет второго высказывания (это которое "DW / DSS невозможно построить, используя навигационные системы") у вас есть возражения или контрпримеры ? Равно и здесь, только ситуация обратная. DW/DSS таки можно строить на базе навигационных систем. Но вот эффективность будет скорее всего низкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2005, 10:49 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 tсhingiz теоретически в левой части должно быть оглавление.ДА, конечно. Я заботился что бы текст на бумаге читался, и как то упустил, что у акробата дополнительные заморочки :). можно ли считать, что в своем НРМ ты хочешь формализовать рассматриваемую область?Стараюсь - если рассматриваемой областью считать следующее... НРМ(стр2)...как можно соотнести "мир объектный" и "мир реляционный". Существует еще один подход, который не может быть описан ни одним из предложенных в "Третьем Манифесте" вариантов ответа, и, тем не менее, позволяет объединить свойства объектных и реляционных систем в рамках единой системы... не мог бы ты дать ссылку на определение свойства постоянства данных. имхо, разговор о нем (равно как и разговор о какихто временах и пространствах) явно избыточен, перегружает текст манифеста и должен быть удален из работы По моему, в исходном тексте я употребил сочетание "свойство постоянства данных" только один раз, а именно: говоря о возможности реализации R*O системы на базе существующих РСУБД. НРМ(стр24)Отметим, что некоторые возможности реализуемой R*O системы целиком и полностью определяются свойствами используемой РСУБД; важнейшим из этих свойств, по нашему мнению, является свойство постоянства хранимых данных.Я имел в виду, что, используя РСУБд как базовую систему, нам не прижется делать каких либо специальных телодвижения, для того, что бы обеспечить долговременное хранение данных. То есть это не свойство данных а свойтство системы(например, этим свойством не обладает ОЗУ). Согласен, фраза кривонавороченная. Однако, с учетом того, что это напрямую не относится к рассматриваемой областия (см. выше) я бы предпочел эту фразу исправить, но не выбрасывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2005, 01:01 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Андрей Леонидович"Нельзя не отметить, что между моделируемыми объектами и описывающим их множеством значений отношений существует сложная связь: данные о любом объекте могут храниться в разных переменных отношений и любая переменная отношения может хранить данные о разных объектах." На мой взгляд, впрочем это Вам хорошо известно, эта фраза - заблуждение. Во-первых, потому что она не может рассматриваться в отрыве от двух концепций: а) связей между "моделируемыми объектами" (Вы же нигде ясно не говорите, что связей не существует); б) нормализации схемы БД.Возможно, я не совсем понял суть спора между U-gene и АЛ. По-моему, они одновременно оба правы, но каждый - при взгляде с одного определенного ракурса. Вот, например, АЛ говорит в пункте б) о нормализации, имея в виду, судя по всему, классические N нормальных форм. Но они определены именно для классической реляционной теории, не всегда и не во всем стыкующейся с объектно-ориентированным подходом. Зачастую ООП-ешники вынуждены прибегать к де нормализации, и это требования жизни. Нельзя молиться на принятый когда-то постулат. Насколько я понимаю, U-gene пытается эти постулаты несколько пересмотреть . Нормализация имеет положительные последствия (в части удобства манипулирования данными), но может иметь и отрицательные. В процитированном отрывке я не углядел каких-либо противоречий. В ответе АЛ - тоже. Просто каждый говорит "немного о своем". :) U-gene - о пересмотре некоторых базовых принципов реляционного подхода. АЛ - о том, что пересматривать их нужно с учетом их незыблемости :). Андрей ЛеонидовичВо-вторых, потому что без этих двух концепций она (фраза) относится к некоторой субъективной схеме: человек - это объект, а почки и кости мы будем хранить в разных отношениях. Получается, что кость - это не объект...Разумеется, кость - это объект. Но попытка нормализовать отношения между всеми объектами может легко провалиться, если вы станете расписывать детальные отношения между многими и многими объектами, имеющимися в реальности. Потому что реальность не строго соответствует правилам и ограничениям целостности, как нам зачастую этого хотелось бы. У некоторых людей вместо почки может оказаться аппарат "искусственная почка". У некоторых людей могут быть ампутированы конечности, и вместо них установлены протезы. Объект "кость" может и не принадлежать объекту "человек", и даже объект "человеческая кость", найденный при археологических раскопках, может уже ему не принадлежать. Более того, этот объект может быть разбит на другие объекты - "обломки берцовой кости", которые, вроде бы являются частью объекта "берцовая кость". Если же при раскопках найден только один обломок берцовой кости (при отсутствии прочих), то объект "берцовая кость вообще" абстрактно, вроде бы есть, но физически - нет. Каждый человек - уникален, каждая берцовая кость - тоже. А уж об уникальности "обломков берцовой кости" можно было бы и не упоминать. Попытка систематизировать наши представления о предметной области неизбежно вносит в нее искажения. Чем более строгие правила мы пытаемся применять при систематизации, тем эти искажения более существенны. Попытка нормализовать отношения может также привести к искажениям. Отношения могут быть НЕЧЕТКИМИ , частичными, выполняющимися по некоторым условиям (формулировка которых также может быть нечеткой или неполной). И в таких условиях система, максимально эффективно обрабатывающая информацию, не должна жестко следовать правилам "самим в себе". Объект может иметь методы , причем у одних объектов они могут работать одним образом, у других - другим. Само понятие объекта , имеющего индивидуальный идентификатор (OID) говорит о том, что объектно-ориентированный подход заведомо допускает наличие информации за пределами системы, которая влияет на классификацию объектов. Представим себе в системе два объекта, описанных двумя различными OID, но имеющим совершенно одинаковые значения всех своих атрибутов. Являются ли эти два объекта с точки зрения системы одним объектом? НЕТ!!! Почему? (очень важный вопрос!) ПОТОМУ ЧТО ЗА ПРЕДЕЛАМИ СИСТЕМЫ ИМЕЕТСЯ ИНФОРМАЦИЯ, КЛАССИФИЦИРУЮЩАЯ ИХ КАК РАЗНЫЕ ОБЪЕКТЫ, ИСХОДЯ ИЗ КОТОРОЙ ПОЛЬЗОВАТЕЛЬ СИСТЕМЫ ПРИНЯЛ РЕШЕНИЕ РАЗДЕЛИТЬ ИХ И В СИСТЕМЕ. ПРОСТО АТРИБУТЫ, ИМЕЮЩИЕ В РЕАЛЬНОСТИ РАЗНЫЕ ЗНАЧЕНИЯ, НЕ ПОПАЛИ В ОПИСАТЕЛЬНУЮ ЧАСТЬ ОБЪЕКТОВ ПРИ СИСТЕМАТИЗАЦИИ. Тем не менее, эта информация может учитываться неявно. Попытка нормализации отношений зачастую сводит на нет возможность оперировать с информацией, расположенной за пределами системы. Реляционная теория изначально исходит из того, что все атрибуты МОЖНО рассовать по кортежам отношений. Что в результате можно получить удобные для обработки в терминах реляционной алгебры множества значений. Но ведь реальная жизнь гораздо сложнее. В природе нет двух абсолютно одинаковых людей, деревьев, булыжников или даже молекул. Каждый объект хоть самую малость отличается от всех других. Хотя бы тем, что занимает в пространстве разные положения. Систематизируя информацию, мы заведомо отбрасываем часть информации, имеющей отношение к этой самой уникальности. И натыкаемся на проблемы в обработке информации системой, когда они вызваны именно УНИКАЛЬНОСТЬЮ. Я говорю не про ту уникальность, которую можно определить оператором UNIQUE. Я говорю про глобальную уникальность всего и вся. При этом я не отвергаю реляционную теорию. Она предоставляет действительно очень удобный математический аппарат. Просто пользоваться им нужно выборочно. Когда речь заходит об объектной ориентированности, нужно проявлять особую осмотрительность. Формулировки в манифесте "глобальной уникальности" в пределах объектов одного типа (а не в пределах отношения) так же выпадает за рамки реляционной теории (удивительно, что АЛ акцентировал внимание на менее существенной, ПМСМ, детали). Хорошо это или плохо? По-моему, это нормально. :) Небольшая неточность в манифесте. В одном месте написано "Типы делятся на значимые и объектные". И подробно разжевано, чем они отличаются (кстати, мне очень понравилось это место :) ). Суть в том, что объекты не сравнимы по значениям. И вдруг дальше я натыкаюсь на "Для объектов этого типа не определены глобальные ключи - таким образом, в системе могут существовать неразличимые по значению объекты этого типа". В принципе, я понял, что имелись в виду значения атрибутов объектов, развернутые до значимых типов. Но не все это могут понять. Может быть, имеет смысл немного подредактировать формилировки. А вот это место меня несколько смутило. "Компоненты FromWarehouse и ToWarehouse могут ссылаться на существующие в системе объекты типа Warehouse (зачение этих полей может быть не определено - FromWarehouse в случае поставок, ToWarehouse в случае продажи)". Это больше реляционный, нежели ОО-подход. В ООП принято наследовать классы от базового. В одном случае должен иметься класс "Поставки", в котором имеются ТОЛЬКО поля, соответствующие поставкам, в другом - класс "Продажи", в котором определены поля только для продаж. А вот как эта информация записывается в реляционные отношения - вполне может записываться и так (если речь идет об отношении, соответствующем родительскому классу). Честно говоря, я не понял, предлагаемый в примере подход предлагается как более правильный, или им предполагалось подчеркнуть преемственность реляционным подходам. Приведенные в манифесте примеры очень похожи на те, с которыми мне довелось экспериментировать в Cache'. Даже термин OID там присутствует. Только с "хранимостью" все не так просто. В Cache' четко разделяется понятие объекта в БД (хранимого) и его копии в оперативной памяти, с которым в данный момент производятся какие-либо операции. Для обращения к объектам по идентификаторам даже используются РАЗНЫЕ идентификаторы. OID - это глобальный идентификатор объекта в БД. Но обращаясь по этому идентификатору, можно всего лишь загрузить объект в память (или сохранить обратно в базу данных). При загрузке в память ему выдается временный идентификатор для выполнения над ними любых манипуляций. После выгрузки объекта из памяти этот идентификатор освобождается и может быть присвоен другому загруженному в память объекту. При многопользовательском доступе в разных сеансах разные пользователи могут в результате в оперативной памяти несколько разных копий одного и того же объекта и по-разному их модифицировать. Все вопросы, которые касаются контроля логической целостности, конфликтов доступа и т.п. решаются именно в момент попытки сохранения. А вот в данном манифесте я не обнаружил лишь объявление "stored". А где же разбор конфликтов одновременного доступа к данным? Или там используются жесткие блокировки всего и вся при первых попытках доступа к информации первых же сеансов? Особенно, если речь идет об объектах, тип которых описан с применением многократных наследований - сколько же там реальных кортежей будет задествовано, если учесть, что и методы перегружались, и поля переопределялись, а часть информации все равно сохраняется в кортежах родительского класса (или это не так?). "Переменная же t.a позволяет выполнить обратное действие - получить OID (т.е. ссылку на объект) на основании данных компонента". Уточню - или несколько ссылок. Или ни одной. При этом задействуется дорогостоящая поерация поиска. В Cache' есть такие же возможности, но к ним стараются прибегать только в исключительных случаях, и по возможности оперировать ВСЕГДА только с OID (а еще лучше не с ним, а с идентификатором копии объекта, уже загруженного в память). Иначе работа системы превращается в работу тормозной системы... :) В Cache' OID - целое число. Вроде бы, его можно переопределить. Но OID всегда одного типа вообще для всех объектов в пределах БД. И это правильно. Можно, грубо говоря, обратившись к БД, спросить "а скажите, объект №12345 какого ТИПА ?" Хотя я бы предпочел, чтобы это был GUID (чтобы не было поменьше проблем с репликацией). Про R-переменные типа / компонентов типа - идея понравилась. У самого схожие были. Только я в более глубокие дебри залез. Сначала я понял, что попытка описать и систематизировать реальные объекты невозможна без выделения отдельной характеристики информации - времени . Объекты по жизни ИЗМЕНЯЮТСЯ. Не достаточно хранить моментальный снимок их состояния. Слишком часто нужно оперировать объектами в том виде, в котором они представлены в определенный момент времени. Более того, описания ТИПОВ объектов также могут изменяться во времени (это уже где-то на уровне проходной желтого дома :) ). Медитация на эту тему привела меня к пониманию, что и понятий "время" существует как минимум два (я делал доклад на эту тему, можно посмотреть презентацию ). Но это было раньше. Сейчас дебри стали еще более непроходимыми. Я попытался по-максимуму приблизить концепции, которыми оперирует разработчик, и реальную жизнь. В реальной жизни отсутствуют отдельно "описание класса" и "объекты класса". Они существуют совместно в самом объекте - описание вместе с данными. При этом каждый объект уникален. Описание объекта "Василий Пупкин" хранится в ДНК самого этого объекта. И даже после смерти "родительских классов" объект продолжает нормально существовать, определяться, "отрабатывать методы" и "предоставлять атрибуты для операций". Василий Пупкин - это одновременно и описание класса, и экземпляр объекта. Он может выступать в качестве "родителя" для дочерних подобных ему же "типо-экземпляров". При этом работают базовые принципы "обектной ориентированности" (в частности, наследование), просто некоторые их положения требуют некоторого переосмысления. Каждый объекта: 1. Имеется возможность отслеживать изменение в ОПИСАНИИ класса во времени (он не умел ходить - теперь умеет, был полноценным человеком - теперь калека и т.п.). Для каждого объекта появляется возможность вносить изменения в его описание на ИНДИВИДУАЛЬНОМ уровне (вот она - природная уникальность всего и вся!). Несколько детей, родившихся у одних и тех же родителей, могут отличаться друг от друга не только ЗНАЧЕНИЯМИ атрибутов, но и генотипом - в результате мутаций. Каждый объект получает возможность корректировки его описания, не затрагивающего другие аналогичные объекты. 2. Отслеживать изменение ЗНАЧЕНИЙ АТРИБУТОВ экземлпяра класса во времени (был темноволосый - стал седой, весил 50кг, теперь 82 и т.п.) 3. Производить потомство, используя "множественное наследование", определяя для каждого экземпляра потомства, что именно должно быть унаследовано от какого родителя, а что должно отличаться от всех родителей (мутация). 4. Возможно внесение изменений в "родителя" (задним числом) так, чтобы эти изменения повлияли бы на ранее "рожденных" потомков (а вот этого в природе нет - вот зачем нужно второе время!). Это сродни переменным и методам класса, и "R-переменным типа". Только эти механизмы завязаны не на ВИД методов/переменных, а на ВИД модификации описания/данных). То есть, в самой операции модификации указывается, должно ли работать наследование и если да, то до какой степени иерархии. 5. В подобной концепции автоматически - на системном уровне реализуется журнализация всех операций и отслеживание версий. Причем, это касается не только модификации объектов, но и программного кода (!). Легко и просто реализуется репликация, а механизмы разрешения конфликтов репликации (даже самых-самых изощренных) очень просто выводятся на уровень бизнес-логики. 6. Модификация схемы данных и программного кода теряет глубокие отличия от модификации просто данных. При развитии визуальных средств программирования и одновременном упрощении пользования информационными технологиями (базовые элементы могут оказаться проще Бейсика) модификацией поведения объектов могут заниматься продвинутые пользователи. Обладающие исключительными познаниями IT-специалисты превращаются в экзотику вроде трубочистов (чего это я несу, сечас меня запинают свои же братья-кролики 8-/). 7. При этом существенно возрастет значение, а также возможности по управлению правами доступа к информации. Разделение на программистов и юзеров, грубо, делается именно с помощью этих механизмов. Вот только окончательно я еще все не осмыслил и выложить в виде готовой концепции я это пока не могу. Есть очень непростые моменты, которые нужно разложить по полочкам. Но (копчиком чую) в подобной концепции зарыты колоссальные возможности. Никогда не поздно учиться у матушки-природы... :) Подобные системы могут стать основой саморазвивающихся интеллектуальных комплексов, и человек на Земле... гхм... может стать лишним... В общем, еще семь дней, глядишь, еще одну Землю сотворю... :) А может быть ну его к лешему? Лучше уж на каком-нибудь DBase-II ковыряться, а то еще нападут на наших детей-внуков какие-нибудь "терминаторы"? :) Пожалй, лучше вернуться к обсуждению НРМ, для нашего же блага... В общем, интересный документ. Мне понравился. Не понятно, только , пропуск буквы T в слове CONSTRAIN T - это предлагаемая специфика синтаксиса, или просто опечатка? По крайней мере, он соответствует духу эволюционного развития всего и вся. А всяких попрыгунчиков завсегда щелкали по носу... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2005, 13:32 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
GaryaНо попытка нормализовать отношения между всеми объектами может легко провалиться, если вы станете расписывать детальные отношения между многими и многими объектами, имеющимися в реальности. Предлагаю не использовать термин «отношение» иначе, чем в реляционном смысле, так как очень трудно воспринимать мысль. Может надо что-то вроде «связи между объектами»? GaryaПотому что реальность не строго соответствует правилам и ограничениям целостности, как нам зачастую этого хотелось бы. < <skipped> >. Полагаю, что напротив, реальность гораздо более строго соответствует правилам и ограничениям, чем мы в состоянии вообще понять . В конце концов, законы физики еще никто не отменил. Они лишь уточняются, и процесс этот бесконечен. А законы физики ни что иное, как правила и ограничения, которым подчиняется реальность. GaryaПопытка систематизировать наши представления о предметной области неизбежно вносит в нее искажения. Тут, видимо, просто нечетко выражена мысль. Я не могу поверить, что вы действительно полагает, что например систематизация моих представлений о геологии может исказить эту самую геологию. GaryaЧем более строгие правила мы пытаемся применять при систематизации, тем эти искажения более существенны. А мне кажется, что дело не в строгости правил, а в их адекватности. Более того, чем меньше мы определяет правил и ограничений, тем более зыбкими, нечеткими, некорректными предстают знания о предметной области, тем меньше способна система «сделать» что-либо осмысленное с данными этой предметной области. В пределе — ноль правил —> ноль знаний —> ноль возможностей системы управлять данными. GaryaПопытка нормализовать отношения может также привести к искажениям. Отношения могут быть НЕЧЕТКИМИ, частичными, выполняющимися по некоторым условиям (формулировка которых также может быть нечеткой или неполной). И в таких условиях система, максимально эффективно обрабатывающая информацию, не должна жестко следовать правилам "самим в себе".Тут, видимо, надо определиться с понятием «эффективность обработки информации», Я не понимаю, что это значит в точности в данном контексте. Но я точно знаю, что достоверность результатов обработки данных немыслима без наличия правил и ограничений, причем чем их больше и чем они точнее, тем достоверность выше. А зачем нужна эффективность без достоверности? Можно ответ получить быстро, но кому нужен неверный ответ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2005, 15:13 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2Garya авторСамо понятие объекта, имеющего индивидуальный идентификатор (OID) говорит о том, что объектно-ориентированный подход заведомо допускает наличие информации за пределами системы, которая влияет на классификацию объектов. Представим себе в системе два объекта, описанных двумя различными OID, но имеющим совершенно одинаковые значения всех своих атрибутов. Являются ли эти два объекта с точки зрения системы одним объектом? НЕТ!!! Почему? (очень важный вопрос!) ПОТОМУ ЧТО ЗА ПРЕДЕЛАМИ СИСТЕМЫ ИМЕЕТСЯ ИНФОРМАЦИЯ, КЛАССИФИЦИРУЮЩАЯ ИХ КАК РАЗНЫЕ ОБЪЕКТЫ, ИСХОДЯ ИЗ КОТОРОЙ ПОЛЬЗОВАТЕЛЬ СИСТЕМЫ ПРИНЯЛ РЕШЕНИЕ РАЗДЕЛИТЬ ИХ И В СИСТЕМЕ. ПРОСТО АТРИБУТЫ, ИМЕЮЩИЕ В РЕАЛЬНОСТИ РАЗНЫЕ ЗНАЧЕНИЯ, НЕ ПОПАЛИ В ОПИСАТЕЛЬНУЮ ЧАСТЬ ОБЪЕКТОВ ПРИ СИСТЕМАТИЗАЦИИ. Они являются с точки зрения данных неразличимыми. (Да, в РМД это запрещено, но чисто формальным приемом - еще один суррогатный атрибут - решается.). Мы знаем только одно - объектов с именем "X" (любым иным набором несуррогатных атрибутов) два. Если придет сообщение <один объект "X" переименован в "Y">, то никаким образом невозможно понять, какие именно данные должны подвергнуться изменениям - просто берем первый попавшийся из "X". Объектный подход - оперирование не только данными, а еще и полочками, на которых лежат данные внутри системы. Как и суррогаты, полочки вне системы не определены - или это не полочки, а искусственые ключи, тогда они являются данными и мы обрели способ различать объекты по данным. Я к тому, что объектный подход не решает проблему "правильного" соответсвия программных объектов объектам внешнего мира. Это иллюзия, примерно как вечный двигатель. Еще раз: полочки - не объекты внешнего мира. Лучше вообще говорить не объектах а фактах внешнего мира, оставляя "объект" за программными полочками, чтобы не путать кардинально различные понятия. авторЯ попытался по-максимуму приблизить концепции, которыми оперирует разработчик, и реальную жизнь. В реальной жизни отсутствуют отдельно "описание класса" и "объекты класса". Они существуют совместно в самом объекте - описание вместе с данными. При этом каждый объект уникален. Верно, но сила абстракции именно в том, что выделив общее, мы можем один и тот же метод применить к разным объектам. За что и боремся, а тут вроде предлагается для каждой гайки - свой ключ? Впрочем, еще не смотрел презентацию, может ошибаюсь. авторМодификация схемы данных и программного кода теряет глубокие отличия от модификации просто данных Легким движением руки брюки превращаются.... Успехов! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2005, 17:16 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Garya ЧАЛ НРМ"Нельзя не отметить, что между моделируемыми объектами и описывающим их множеством значений отношений существует сложная связь: данные о любом объекте могут храниться в разных переменных отношений и любая переменная отношения может хранить данные о разных объектах." На мой взгляд, впрочем это Вам хорошо известно, эта фраза - заблуждение. Во-первых, потому что она не может рассматриваться в отрыве от двух концепций: Возможно, я не совсем понял суть спора между U-gene и АЛ. ...Просто каждый говорит "немного о своем". :) U-gene - о пересмотре некоторых базовых принципов реляционного подхода. Объясните, где это в этой фразе пересматриваю реляционный подход? Есть отгрузка (или документ об отгрузке) Для хранения информации об отгрузках любой реляционьщик будет использовать две таблицы - одну на заголовки, другую на строки. Информацию о каждой отгрузке попадает в множество(две) таблиц. И каждая из этих таблиц содержит информацию о множестве отгрузок. Я так и написал. Где здесь пересмотр чего -либо? GaryaНебольшая неточность в манифесте. В одном месте написано "Типы делятся на значимые и объектные". И подробно разжевано, чем они отличаются (кстати, мне очень понравилось это место :) ). Суть в том, что объекты не сравнимы по значениям. И вдруг дальше я натыкаюсь на "Для объектов этого типа не определены глобальные ключи - таким образом, в системе могут существовать неразличимые по значению объекты этого типа". В принципе, я понял, что имелись в виду значения атрибутов объектов, развернутые до значимых типов. Но не все это могут понять. Может быть, имеет смысл немного подредактировать формилировки. Да, если глобальный ключ для класса определен, то в данной конкретной системе все объекты будут уникальны по своему значению (состоянию = совокупность значений компопнентов). Если глобальный ключ не определен. - в системе могут в один момент времени могут существовать разные объекты имеющие одинаковое состояние. Глобальный ключ - это ограничение целсотности данных. Если оно для класса задано - все объекты должны быть разными по состоянию (совокупности значений компопнентов). Не задано - могут существовать одинаковые по состоянию. Для объектов описывающих отгрузки такой ключ может быть задан на поле "номер отргузки". Это гаратирует, что эти объекты будут разными не только сами по себе (как разные объекты), но и по полю "номер отргузки". ИМХО никаких неточностей нет. Разве что (с учетом того, что ранее написано, что... НРМ(стр5)Совокупность значений компонентов объекта определяет состояние объекта....) вместо "неразличимые по значению" можно написать "неразличимые по состоянию". Так будет точнее? GaryaА вот это место меня несколько смутило. ....Честно говоря, я не понял, предлагаемый в примере подход предлагается как более правильный, или им предполагалось подчеркнуть преемственность реляционным подходам.Не то и не другое. Мне так показалось короче - одни класс, который описывает движение товара и по складам, и на склады, и со складов. Насчет Cashe... и всего остального. ИМХО в данном случае Вам Ваши знания, мысли и идеи неколько мешают. Например, Вы пишете про "хранимые объекты и объекты в памяти". В НРМ этого нет. Там есть просто объекты - они где лежат, там и обрабатываются. Я же недаром, отвечая tchingiz\'у , сказал, что фразу НРМ(стр24)"некоторые возможности реализуемой R*O системы целиком и полностью определяются свойствами используемой РСУБД; важнейшим из этих свойств, по нашему мнению, является свойство постоянства хранимых данных." (точнее идею, которая эта фраза несет) предпочел бы оставить. В частности, предполагается, что в используемой РСУБД деление данных на хранимые(на диске) и обрабатываемые(в ОЗУ) уже преодолено . В РСУБД данные где лежат, там же и обрабатываются - R*O системы, построенная Над_Реляционной, этим пользуется. (Конечно, подразумевается, что объекты R*O системы клиентам не отдаются - отдаются данные о этих объектах.) Соответсвенно этому отсутсвуют и все озвученные далее проблемы, связанные с возможностью существований разных копий в ОЗУ. Есть одна копия - с ней и работают. Возможные конфликты при манипуляциях с этим объектом разруливаются транзакциями, причем механизм транзакций - это еще одна крайне поезная штука, которую R*O система может напрямую взять из используемой РСУБД - и он, без сомнения, будет работать (аналогия - существует комп, который позволяет сохранить и загрузить копию своего ОЗУ. Этой возможностью может пользоваться любая программа - хоть на ассемблере, хоть на С++) GaryaПри этом задействуется дорогостоящая поерация поиска. Если подходить к этому делу формально, то... НРМ(стр23)Замечание. Рассматривая принципиальную возможность предлагаемой реализации, мы не задаемся вопросами ее производительности и эффективности. Если неформально и образно, то сравнение скорости R*O-системы со скоростью используемой РСУБД (где вся логика реализована на стороне РСУБД), ИМХО подобно сравнению скорости программы на С++ со скоростью программы на ассемблере. Garya...Можно, грубо говоря, обратившись к БД, спросить "а скажите, объект №12345 какого ТИПА?"... ...это есть... НРМ(стр10)Для объектов определены операции, позволяющие определить тип этих объектов. В связи с тем, что в R*O системе поддерживается наследование объектных типов, данное требование требует некоторых разъяснений. Существуют две операции, позволяющие определить тип объекта. Первая операция o IS t (где o - ссылка на объект, а t – имя типа), возвращает истину, если объект, определяемый ссылкой o , является объектом данного типа. Подразумевается, что, в случае наследования, объект любого типа-наследника является также объектом базового типа.... Вторая операция, o OF t , возвращает истину, когда объект, определяемый ссылкой o , был создан как объект класса t (т.е. этот объект был создан операцией new t ).... ГЫ-ГЫ - это я про CONSTRAIN. Чесно слово - не виноват! Я забыл как, набил CONSTRAIN, а WORD это сожрал - я и подумал, что прально. :) Ну да фиг с им - одно глагол, другое существительное.... В общем CONSTRAIN it. :) Клянусь, исправлю. Про время, гены, мутации и т.д. - без комментариев. Я предпочёл остаться на уровне значений, переменных и типов. Так оно спокойнЕе. По крайней мере понимаешь, о чем говоришь...:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2005, 02:10 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene 2 tсhingiz теоретически в левой части должно быть оглавление.ДА, конечно. Я заботился что бы текст на бумаге читался, и как то упустил, что у акробата дополнительные заморочки :). можно ли считать, что в своем НРМ ты хочешь формализовать рассматриваемую область?Стараюсь - если рассматриваемой областью считать следующее... НРМ(стр2)...как можно соотнести "мир объектный" и "мир реляционный". Существует еще один подход, который не может быть описан ни одним из предложенных в "Третьем Манифесте" вариантов ответа, и, тем не менее, позволяет объединить свойства объектных и реляционных систем в рамках единой системы... не мог бы ты дать ссылку на определение свойства постоянства данных. имхо, разговор о нем (равно как и разговор о какихто временах и пространствах) явно избыточен, перегружает текст манифеста и должен быть удален из работы По моему, в исходном тексте я употребил сочетание "свойство постоянства данных" только один раз, а именно: говоря о возможности реализации R*O системы на базе существующих РСУБД. НРМ(стр24)Отметим, что некоторые возможности реализуемой R*O системы целиком и полностью определяются свойствами используемой РСУБД; важнейшим из этих свойств, по нашему мнению, является свойство постоянства хранимых данных.Я имел в виду, что, используя РСУБд как базовую систему, нам не прижется делать каких либо специальных телодвижения, для того, что бы обеспечить долговременное хранение данных. То есть это не свойство данных а свойтство системы(например, этим свойством не обладает ОЗУ). Согласен, фраза кривонавороченная. Однако, с учетом того, что это напрямую не относится к рассматриваемой областия (см. выше) я бы предпочел эту фразу исправить, но не выбрасывать. )))))))))))) я читал майский экземпляр и не ожидал, что ты ее так переделываешь 1 если мы рассматриваем формализацию, то ты (на мой взгляд) слишком много пишешь. невозможно читать почти. правда это больше про предыдущую версию. эту еще не одолел. /* шкала для сравнения из тех книжек, которые читал ))) 100 ... Топология Энгелькинга 90 .... Общая Топология. акад.Мирзаханян ... элементарный учебник физики под редакцие проф. Ландсберга. 80 70.... политэкономия капитализма Маркса 60.... Дейт 50 40 ... НРМ предверсия. 30 ... политэкономия социализма 20 10 .... программирование в виндовсе. петзольд */ из текущей версии 1 предоложения надо всетаки короче. Слишком навороченные обороты. 2 вторая страница предложение "Предполагается, что речь идет о данных, описывающих некую предметную область, которая представляет собой совокупность реально существующих обьектов". НЕ ПРЕДПОЛАГАЕТСЯ, что эти обьекты реально существуют. В след. абзаце уже идет противоречие - речь идет о любой предметной области и о любом ее обьекте. // В пт Джамиля маячила както с игрой рагнарок, игра написана на MySql. // база хранила описание обьектов из воображаемого мира 3 долговременность я бы выкинул, как и упоминания о времени. есть формальные эквивалентные определения алгоритма (вычислимость по черчу, машина Поста, машина Тьюринга). Любой алгоритм эквивалентен программе на машине Поста. В частности, любая R*O система может быть повторена на машине Поста. В его определениях использовалось понятие непротиворечивости и не использовалось время и долговременного хранения. Интуитивно, я подозреваю что отсутствие долговременного хранения данных влечет нарушение непротиворечивости Поста. То есть выходит за рамки программирования как такового. 4 правильно ли я понял, что (утрированно) отношение - это описание таблицы; значение отношения - множество кортежей, которые лежат в таблице; переменная отношения - место в памяти RDMS-машины, где лежит множество кортежей? Вот я бы, в разделе основное требование НРМ включил бы эти(или другие короткие определения) и основное требование. А все обьяснения про взаимосвязи обьектов и отношений выкинул бы.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2005, 08:38 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 tchingiz По сравнению с майской версией это на 60-70% написана с нуля. 1) Знаю. Стараюсь. 2) Реально существующие выброщу прои первом же случае 3) Не знаб что сказать. Если я и гворю ог долговременности (ктсати где?) то абсолютно неформально. тончно также можно гвоврить просто о хранении данных. 4)правильно ли я понял, что (утрированно) отношение - это описание таблицы; значение отношения - множество кортежей, которые лежат в таблице; переменная отношения - место в памяти RDMS-машины, где лежит множество кортежей?Утрировано - да. Но про это в общем то в используемой литературе написано - в том же третьем манифесте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2005, 13:06 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Garya ЧАЛ НРМ"Нельзя не отметить, что между моделируемыми объектами и описывающим их множеством значений отношений существует сложная связь: данные о любом объекте могут храниться в разных переменных отношений и любая переменная отношения может хранить данные о разных объектах." На мой взгляд, впрочем это Вам хорошо известно, эта фраза - заблуждение. Во-первых, потому что она не может рассматриваться в отрыве от двух концепций: Возможно, я не совсем понял суть спора между U-gene и АЛ. ...Просто каждый говорит "немного о своем". :) U-gene - о пересмотре некоторых базовых принципов реляционного подхода. Объясните, где это в этой фразе пересматриваю реляционный подход? Есть отгрузка (или документ об отгрузке) Для хранения информации об отгрузках любой реляционьщик будет использовать две таблицы - одну на заголовки, другую на строки. Информацию о каждой отгрузке попадает в множество(две) таблиц. И каждая из этих таблиц содержит информацию о множестве отгрузок. Я так и написал. Где здесь пересмотр чего -либо?Мне кажется, что вот здесь: U-geneЗдесь просто надо понимать, что одно знанчние - это тоже множество, и что это значение может быть подмножеством другого значнеия, описываещего предметную область в целомДело в том, что если одно и то же МНОЖЕСТВО повторяется, являя ЗНАЧЕНИЯ какого-то поля в таблице (например, для всех его записей), то можно с уверенностью сказать, что в классическом смысле 3NF в данном случае не просматривается. По идее под понятие "множество" должна быть заведена ОТДЕЛЬНАЯ ТАБЛИЦА, в нее помещена одна-единственная запись, реализующая данное множество, а во всех местах, где это множество используется, должна использоваться ССЫЛКА на эту запись. Если вы скажете, что этот вопрос относится к цвету кишок конкретной реализации, то я с этим не совсем согласен. Если именно нормализованную схему хранения этой информации применить в какой-либо реализации, то... Мы можем столкнуться с тем, что реализация МОДИФИКАЦИИ значения множества таким образом, чтобы она коснулась только некоторых кортежей, связана с определенным трудностями. Если мы используем традиционный UPDATE самого множества, то получим его изменение также в тех кортежах, модифицировать которые не собирались. Подобные "затруднения" (решаемые, в общем-то) касаются любых операций с данными, требующим записи (INSERT, DELETE, UPDATE). Есть методы решений этих затруднений без нарушения 3NF - 5NF, но связанные с некоторым напряжением серого вещества. Есть простой метод - ДЕнормализация. В данном конкретном случае напряжение серого вещества кажется вполне приемлемым. Но если мы вспомним, что любой элемент любого множества в свою очередь может оказаться множеством, и число итераций таких "множеств во множествах" не ограничено, то выясняется, что решения задумки без нарушения 3NF табличных данных придумать уже очень непросто. Хотя, может быть, и возможно (я просто не напрягался до такой степени, чтобы в этом убедиться). Во всяком случае требуется, чтобы некоторые триггеры что-то там где-то проверяли, создавали бы автоматически новые наборы записей, переставляли бы ссылки с разных записей на одну и ту же, или творили еще какие-то подобные чудеса. U-gene GaryaА вот это место меня несколько смутило. ....Честно говоря, я не понял, предлагаемый в примере подход предлагается как более правильный, или им предполагалось подчеркнуть преемственность реляционным подходам.Не то и не другое. Мне так показалось короче - одни класс, который описывает движение товара и по складам, и на склады, и со складов.Если речь идет о "классе", то наверняка он выступает в качестве родительского для классов, которыми описаваются движения различного вида. Мне вот интересно узнать, как авторы манифеста видят себе хранение информации в таблицах, соответствующим объектам класса, рекурентно унаследованного от множества предков. Что происходит с переопределенными свойствами, перегруженными методами, с восстановленными от "древних предков" (reintroduce), с множественным наследованием (и конфликтами определений, которые при этом могут возникать). В Cache\' имеется реализация многих этих наворотов, включая множественное наследование, но далеко не всех. А возможности организации "объектов в объекте" там вообще вызывают слезы жалости. U-geneНасчет Cashe... и всего остального. ИМХО в данном случае Вам Ваши знания, мысли и идеи неколько мешают. Например, Вы пишете про "хранимые объекты и объекты в памяти". В НРМ этого нет. Там есть просто объекты - они где лежат, там и обрабатываются. Я же недаром, отвечая tchingiz\'у , сказал, что фразу НРМ(стр24)"некоторые возможности реализуемой R*O системы целиком и полностью определяются свойствами используемой РСУБД; важнейшим из этих свойств, по нашему мнению, является свойство постоянства хранимых данных." (точнее идею, которая эта фраза несет) предпочел бы оставить. В частности, предполагается, что в используемой РСУБД деление данных на хранимые(на диске) и обрабатываемые(в ОЗУ) уже преодолено . В РСУБД данные где лежат, там же и обрабатываются - R*O системы, построенная Над_Реляционной, этим пользуется. (Конечно, подразумевается, что объекты R*O системы клиентам не отдаются - отдаются данные о этих объектах.)Мне кажется, тут зарыта большая собака, причем очень кусачая, которую Вы проглядели. Клиентская часть орагнизует пользовательский сеанс, который "видит" информацию как определенную совокупность данных. Существуют блокировок в транзакциях, проблемы грязного чтения... Предлагаемые Вами трактовки делают эти проблемы на многие порядки более существенными. Представим себе такую ситуацию. Одновременно запущено два сеанса. В одном сеансе делается проверка "если у человека на правой руке 5 пальцев...", которая возвращает TRUE. Спустя милисекунду в другом сеансе ампутируется безымянный палец. А в первом сеансе идет "продолжение банкета": ... то одеть на безымянный палец кольцо. И ба-бах! - непонятная ошибка. Это - проблема грязного чтения, решение которой кажется очевидным. До тех пор, пока мы не проверяем число пальцев у невесты данного объекта, число ложноножек у инфузорий, живущих на этих пальцах и т.д. И через некоторое время выясняем, что в такой системе реально может работать только один пользователь. Потому что всем другим доступ к информации полностью закрыт на время работы первого вошедшего в систему юзера, который умудрился заблокировать все ресурсы. А если не все? Тады - дедлок, вероятность которого возрастает на многие порядки. Один сеанс проверил число пальцев у жениха, второй у невесты, надели кольца куда положено, затем они пытаются проверить "ответные руки" - а не получается - дедлок. И если в простой реляционной модели более-менее понятно, как с такими вещами бороться, то в этой я, например, понятных раз и навсегда рецептов не вижу. Опять же имеется проблема быстродействия. В Cache\' не просто так разделяются операции чтения/записи от операций обращения к свойствам объекта. Если сразу множество свойств одного и того же объекта должны претерпеть модификацию, то гораздо-гораздо быстрее произвести 100 операций модификаций в оперативной памяти и только один раз сохранить результат. В процессе многоэтапной модификации полей одного объекта у него могут возникнуть "нелогичные" состояния. Но поскольку они имеют отношения только к процессу модификации и не связаны с операцией сохранения в БД, эти состояния никак не конфликтуют с констрейнтами, установленными для объектов данного типа. Представьте, что с помощью команды модификации данных мы пытаемся переделать женщину в мужчину. Выдаем команду Пол:=мужской, данная информация сразу сохраняется в БД и на какое-то время в нем возникает мужчина со всеми женскими причиндалами. Происходит нарушение кучи констрейнтов, которыми мы заранее определили, что в базе данных могут быть только полноценные мужчины или полноценные женщины. Но положения НРМ нам воткнули палку в колеса. U-geneВозможные конфликты при манипуляциях с этим объектом разруливаются транзакциями, причем механизм транзакций - это еще одна крайне поезная штука, которую R*O система может напрямую взять из используемой РСУБД - и он, без сомнения, будет работать (аналогия - существует комп, который позволяет сохранить и загрузить копию своего ОЗУ. Этой возможностью может пользоваться любая программа - хоть на ассемблере, хоть на С++)Нарушение констрейнтов может произойти и ВНУТРИ транзакции, в результате чего он уткнется носом в песок. Объекты - это такие очень злобные мурены, которые которые очень не любят, когда кто-то забывает, что они именно объекты, а не что-то другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2005, 16:38 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
авторДело в том, что если одно и то же МНОЖЕСТВО повторяется, являя ЗНАЧЕНИЯ какого-то поля в таблице (например, для всех его записей), то можно с уверенностью сказать, что в классическом смысле 3NF в данном случае не просматривается.......Эту фразу я не понял. Объясните подробнее. Можно на пальцах или пример?... кстати, это фраза не из НРМ. Забыл, откуда... интересно посмотреть контекст. авторПо идее под понятие "множество" должна быть заведена ОТДЕЛЬНАЯ ТАБЛИЦА, Не согласен в любом случае. Откуда такая идея? Почему из простой мысли, что простое значение является подмножеством более сложного, следует, что для этого простого должна быть заведена отдельная таблица? А что если оно просто артибут кортежа? автор...рекурентно унаследованного от множества предков...Искал в Яндексе "рекурентное наследование" не нашел. Может яндекс тупой, может быть я . Объясните, что это. авторЧто происходит с переопределенными свойствами, перегруженными методами, с восстановленными от "древних предков" (reintroduce), с множественным наследованием (и конфликтами определений, которые при этом могут возникать). Мне кажется что-то из этогоуже обсуждалось(начиная отсюда). В рзультате сейчас это выглядит следующим образом... НРМ(стр7-8)Объектные типы образуют иерархию наследования (невозможно наследование объектных типов от значимых, значимые типы не могут наследоваться от объектных). Наследование объектных типов подразумевает, что спецификация типа наследника включает спецификацию родительского типа (или типа предка). Допускается множественное наследование. Существует предопределенный фиктивный объектный тип Object, по умолчанию являющийся предком для любого объектного типа. Замечание. При множественном наследовании от типов, имеющих общий базовый тип, спецификация последнего не дублируется (используя термины С++ можно сказать, что спецификации объектных типов наследуются виртуально). В системе должен существовать механизм, позволяющий разрешать возможные в случае множественного наследования конфликты реализаций компонентов. ... При наследовании компонента его реализация может меняться. Таким образом, компоненты типа (а, следовательно, и сам тип) являются полиморфными в том смысле, что одной спецификации может соответствовать несколько реализаций. Далее... Мне кажется, тут зарыта большая собака, причем очень кусачая...Представим себе такую ситуацию.... Преставим себе такую ситуацию. В традиционной РСУБД существует таблица "пальцы правой руки" с атрибутами "хозяин", "номер пальца" и "наличие кольца". Существует так же процедура "одеть кольцо" содержащая проверку "если у человека пять пальцев". Одновременно запущено два сеанса. В одном сеансе запускается эта процедура, а спустя миллисекунду. в другом сеансе ампу.... тьфу :)стирается запись, где значение поля "номер пальца" равно 4. И ба-бах! - непонятная ошибка.... И через некоторое время выясняем, что в такой системе реально может работать только один пользователь.... ...В процессе многоэтапной модификации полей одного объекта у него могут возникнуть "нелогичные" состояния.... Фраза ясна. Но точно также можно сказать, что в процессе модификации данных в любой БД в ней могут возникнуть "нелогичные" состояния. На то транзакции и нужны, что бы такие ситуации не фиксировались как состояние системы. В общем:).... НРМ не рассматривает вышеозвученные проблемы. Я не спорю - они есть. Они присущи любым многопользовательским системам. Однако они не имеют отношение ни к РМД ни к ОО-парадигме, взятым как по отдельности так и вместе. А тот факт, что R*O- система может с пользой использовать механизм транзакций, реализованный в базовой Р С УБД, мне какжется несомненным. ...Опять же имеется проблема быстродействия...Ага... Она всегда есть :). ПОвторю, что... НРМ(стр23)Замечание. Рассматривая принципиальную возможность предлагаемой реализации, мы не задаемся вопросами ее производительности и эффективности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2005, 17:56 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene авторДело в том, что если одно и то же МНОЖЕСТВО повторяется, являя ЗНАЧЕНИЯ какого-то поля в таблице (например, для всех его записей), то можно с уверенностью сказать, что в классическом смысле 3NF в данном случае не просматривается.......Эту фразу я не понял. Объясните подробнее. Можно на пальцах или пример?...Пример. Имеется отношение (в просторечии - таблица), кортежи которого содержат в одном из полей ЗНАЧЕНИЕ, являющееся множеством. Всего в отношении 10000 записей, 4000 из которых содержат в данном поле ЗНАЧЕНИЕ {1; 5; 8; 9}, остальные 6000 содержат ЗНАЧЕНИЕ {2; 4; 7}. Если эти ЗНАЧЕНИЯ сохранять непосредственно в таблице, соответствующей отношению (например, в виде совокупности полей [Элемент1], [Элемент2], [Элемент3] и т.д.), то мы получим яркий пример нарушения 3NF. Если их сохранять упакованными в varbinary, например, мы получим неоптимальность хранения и требования выполнять операции распаковки над каждой записью (выполнять Full Scan таблицы) при фильтрации кортежей по условиям, в которых фигурируют элементы данного множества. Наиболее очевидный способ нормализовать данные - создать вспомогательную таблицу, в которую поместить два набора записей, идентифицируемых по коду набора: Номер набора Значение 1 1 1 5 1 8 1 9 2 2 2 4 2 7 , а в основной таблице ссылаться на номер набора. Конечно, мне можно возразить, что в реляционной алгебре нет понятия Full Scan и оптимизаторов. Но они имеются в реальной жизни, и имеют наглость вносить в эту жизнь помехи, которые иногда приводят к невозможности существования этой самой жизни. Абстрактные теоретические измышления, как мне кажется, могут иметь лишь абстрактную ценность. Извините, не имею желания никого обидеть. Но это мое IMHO, я его никому не навязываю. Поглядел уже выше диспут около этой темы - позиция Андрея Леонидовича мне кажется достаточно обоснованной (мой пример это тоже иллюстрирует). U-geneкстати, это фраза не из НРМ. Забыл, откуда... интересно посмотреть контекст. отсюда . U-gene авторПо идее под понятие "множество" должна быть заведена ОТДЕЛЬНАЯ ТАБЛИЦА, Не согласен в любом случае. Откуда такая идея? Почему из простой мысли, что простое значение является подмножеством более сложного, следует, что для этого простого должна быть заведена отдельная таблица? А что если оно просто артибут кортежа?Пример показан чуть выше. Либо отдельная таблица, либо денормализация, либо Full Scan с дорогостоящими операциями распаковки. Иных вариантов мною, по крайней мере, не просматривается. Если Вы их видите, приведите пожалуйста. Либо я что-то не так понял... :) U-gene автор...рекурентно унаследованного от множества предков...Искал в Яндексе "рекурентное наследование" не нашел. Может яндекс тупой, может быть я . Объясните, что это.От прабаушки с прадедушкой унаследована бабушка. От бабушки с дедушкой унаследован папа. От папы с мамой унаследован сын и дочка. В итоге сын и дочка рекурентно унаследованы от прабабушки и прадедушки. Сорри, если не совсем понятно выразил мысль. Если у прадедушки дедушки было свойство "рыжая борода", а Василий Пупкин унаследовал это свойство у своего деда, то... Где эта борода хранится - у прадеда или у Василия? А если взять и изменить задним числом рыжую бороду деда на черную - у Василия она тоже станет черной, или он теперь живет самостоятельной жизнью? U-gene НРМ(стр7-8)Объектные типы образуют иерархию наследования (невозможно наследование объектных типов от значимых, значимые типы не могут наследоваться от объектных). Наследование объектных типов подразумевает, что спецификация типа наследника включает спецификацию родительского типа (или типа предка). Допускается множественное наследование. Существует предопределенный фиктивный объектный тип Object, по умолчанию являющийся предком для любого объектного типа.Допустимость множественного наследования (МН) - это принципиальная фича Вашей концепции? В последнее время вокруг МН в определенных кругах полыхали очень бурные споры. Кто в них прав, то не прав - я судить не берусь. Но кроме конфликтов между несколькими родителями, существуют более глубокие проблемы. Некоторые аналитики приходят к выводу, что МН "не только полезно, но и вредно" :). Таким образом, отказ от МН, например в платформе .NET, обосновывается не только и не столько сложностью ее реализации, сколько желанием устранить сумбур в голове тех, кто МН намерен использовать на практике. Тут можно прочитать кое-что на эту тему. Вот выдержка по ссылке: выдержкаЧитатель может заметить - а как же множественное наследование? А никак. В природе такового не существует - все объекты реального мира являются или цельными, или составными. Множественное наследование было создано только как методика проектирования классов, когда разработчик не обладает полной информацией о самих классах. Автор статьи считает, что множественное наследование только запутывает реализацию прикладной области. Например, в ряде книг приводится случай, когда объект "тесто" получается множественным наследованием объектов "вода" и "мука". На самом деле это не так - даже при диффузии отдельные материалы все равно остаются сами собой, т.е. в данном случае мы имеем совершенно новый объект "тесто", который имеет среди атрибутов указатели на два класса - "тесто" и "вода" (или список составляющих "тесто" классов, как угодно). Характеристики "теста" при этом зависят не только от состава "воды" и "муки", но и от их процентного соотношения. То же самое относится и к биологическому "рождению" - ребенок наследует свойства родителей, т.е. их наборы хромосом, и представляет собой типичный составной объект при отсутствии какого бы то ни было множественного наследования. Конечно, множественное наследование в редких случаях облегчает программирование, однако это не значит что оно отражает суть реальных вещей, которые можно описать в программе. Я не являюсь противником МН, скорее даже наоборот. Просто делать на него упор в данном документе или не делать - может быть просто промолчать? U-gene[quot ]...В процессе многоэтапной модификации полей одного объекта у него могут возникнуть "нелогичные" состояния.... Фраза ясна. Но точно также можно сказать, что в процессе модификации данных в любой БД в ней могут возникнуть "нелогичные" состояния. На то транзакции и нужны, что бы такие ситуации не фиксировались как состояние системы.Это НЕ только и не столько проблема транзакций. Это еще и проблема реализации проверки констрейнтов. В частности, если вы используете ограничения ссылочной целостности (DRI MS SQL Server), то вы не сможете удалить заголовочную часть накладной, ДО detail-части, соответствующей ее позциям ДАЖЕ В ТРАНЗАКЦИИ , поскольку ограничения (констрейнты) проверяются ВНУТРИ ТРАНЗАКЦИИ после каждой операции. Если вы намерены удалить и заголовочную часть накладной, и ее позиции, то СНАЧАЛА необходимо удалить dteail-часть, а уже потом - master. Добаление же информации о новой накладной необходимо производить в проивоположной ПОСЛЕДОВАТЕЛЬНОСТИ . То есть, требования ACID в части атомарности транзакции не столь глобальны, как это иногда может представляться. Эти "атомы" немножко делятся на кварки. :) И порядок расположения этих "кварков" может оказаться весьма существенным для промежуточных состояний объекта. Подобные вопросы невозможно решить ТОЛЬКО транзакциями. ...Опять же имеется проблема быстродействия...Ага... Она всегда есть :). ПОвторю, что... НРМ(стр23)Замечание. Рассматривая принципиальную возможность предлагаемой реализации, мы не задаемся вопросами ее производительности и эффективности. Мда... Это я уже понял... :) А жаль... :) Но все равно спасибо за полезное чтиво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 22:19 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Гаря. Пост тоже не задавался вопросами производительности, строя свою машину. Ничего не жаль. У-гене везде подразумевать имхо. ))))))))))))) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 08:26 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Garya авторПример. Имеется отношение (в просторечии - таблица), кортежи которого содержат в одном из полей ЗНАЧЕНИЕ, являющееся множеством. Всего в отношении 10000 записей, 4000 из которых содержат в данном поле ЗНАЧЕНИЕ {1; 5; 8; 9}, остальные 6000 содержат ЗНАЧЕНИЕ {2; 4; 7}. Если эти ЗНАЧЕНИЯ сохранять непосредственно в таблице, соответствующей отношению (например, в виде совокупности полей [Элемент1], [Элемент2], [Элемент3] и т.д.), то мы получим яркий пример нарушения 3NF. Аааа, понятно!... только где у меня в переменных отношения есть такие множества как атрибуты? У меня в переменных отношения в атрибутах только скаляры . Соответсвенно никаких отдельных таблиц, денормализаций и фулсканов нет в приципе. Я это на своем примере поясню. НРМ(стр7,12,13) Пример ...Объектный тип GoodsMotion описывает движение товара. Существующие в системе объекты этого типа уникальны по атрибуту No. Компоненты FromWarehouse и ToWarehouse могут ссылаться на существующие в системе объекты типа Warehouse (значение этих полей может быть не определено - FromWarehouse в случае поставок, ToWarehouse в случае продажи). Компонент MovedItems содержит информацию о количестве перевозимого товара. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Определение объектного типа GoodsMotion можно также рассматривать как объявление R-переменной компонента типа GoodsMotion.MovedItems со схемой (OID, Article, Quantity) . ... .... Объектному типу GoodsMotion соответствует (так же) R-переменная этого типа GoodsMotion со схемой (OID:DOID, No:INTEGER, DateOfAction:DATE, FromWarehouse:Warehouse, ToWarehouse:Warehouse, MovedItems.Article:STRING, MovedItems.Quantity:INTEGER) . Отметим, что это отношение определено на множестве скалярных типов, включающих тип объектных идентификаторов DOID и ссылочный тип Warehouse , который был определен в процессе объявления соответствующего объектного типа. Итак мы сделали класс с несомненно сложной структурой. Тут даже 1НФ не пахнет. Однако объявление этого класса рассматривается также как объявление переменных отношений определенных на множестве скалярных атрибутов. В частности, есть переменная с именем GoodsMotion.MovedItems содержащая скалярный атрибут No и также, есть переременная с именем GoodsMotion содержащая скалряный же атрибут MovedItems.No . То есть в последнем слуучае выражение MovedItems.No - это всего лишь сложное имя скалярного атрибута. Если Вы воспринимаете здесь что-то, как какую-то сложную структуру, то слава богу - я именно этого и добивался. Но с формалной точки зрения, с точки зрения РМД MovedItems.No - это просто имя , а то, что Вы видите сложную структуру всего лишь слествие того, что оно похоже (всего лишь!) на имя элемента элемента сложной структуры. В заключении еще раз повторяю, что... НРМ(стр23)...использование сложных (с точки зрения пользователя) имен переменных и атрибутов отношений позволяет сохранить семантику сложных структур для данных, представленных в виде множества значений отношений....при этом конечно же подразумевается, что все эти отношения определены на множестве скалярных значений От прабаушки с прадедушкой унаследована бабушка. От бабушки с дедушкой унаследован папа. От папы с мамой унаследован сын и дочка. В итоге сын и дочка рекурентно унаследованы от прабабушки и прадедушки. Замечательно. Только при чем здесь реккурентно - убей непонял. ИМХО реккурентно было бы ежели бабушка с дедушкой были бы своими собственными родителями (ужос то какой!!!). А то, что Вы описали - это ИМХО называется непрямое наследование. Если у прадедушки дедушки было свойство "рыжая борода", а Василий Пупкин унаследовал это свойство у своего деда, то... Где эта борода хранится - у прадеда или у Василия? А если взять и изменить задним числом рыжую бороду деда на черную - у Василия она тоже станет черной, или он теперь живет самостоятельной жизнью? Лихой поворот событий. Сначала мы говорим о наследовании типов , а теперь как то незаметно переходим на объекты ? "Рыжая борода" - это имя атрибута? Или есть атрибут "борода" а у него может быть значения "рыжая, черная"? Вы определитесь, а потом мы разберёмся..... Допустимость множественного наследования (МН) - это принципиальная фича Вашей концепции? Да нет. оно само собой получается. Правда. Совершенно пофигу, сколько у объектного типа предков один или много. ... автор...Конечно, множественное наследование в редких случаях облегчает программирование, однако это не значит что оно отражает суть реальных вещей, которые можно описать в программе. ...Таки да? :) Я не являюсь противником МН, скорее даже наоборот. Просто делать на него упор в данном документе или не делать - может быть просто промолчать?А что, фраза, что такое наследование допускается - это упор? Это НЕ только и не столько проблема транзакций. Это еще и проблема реализации проверки констрейнтов. В частности, если вы используете ограничения ссылочной целостности (DRI MS SQL Server), то вы не сможете удалить заголовочную часть накладной, ДО detail-части, соответствующей ее позциям ДАЖЕ В ТРАНЗАКЦИИ, поскольку ограничения (констрейнты) проверяются ВНУТРИ ТРАНЗАКЦИИ после каждой операции....Опять же - Вы так и не обяснили, какое отношение транзакции имеют к вопросу поднимаемому в НРМ. Что же касается конкретно вашего пример, то в НРМ он решается просто. Создание объекта типа "накладная" подразумевает, в частности, то, что в используемой РСУБД возникает кортеж, соответсвующий заголовку. Для этого пользователю никаких ограничения целостности не надо определять вообще . Система за него это делает. НРМ(стр23)Замечание. Рассматривая принципиальную возможность предлагаемой реализации, мы не задаемся вопросами ее производительности и эффективности. Мда... Это я уже понял... :) А жаль... :)Увы мне.:) Но я не первый , кто допускает подобные "ошибки". Но все равно спасибо за полезное чтиво.WELCOME again! Хотя бы что бы немножко понять, о чем речь. А то из Ваших замечаний этого пока как то не видно. Отвечу на любые внятные вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 11:03 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
tchingizЯ тебе давал ссылку на статью, автор которой считал, что лучше бы использовать такое понятие как процессыА можно эту ссылочку погромче прошептать, чтобы другие тоже расслышали? :) GaryaПодобные вопросы невозможно решить ТОЛЬКО транзакциями.Небольшое дополнение-пример. Представим себе таблицу, в которой определены поля Field1 и Field2 типа bit, для которой определен констрейнт CHECK, проверяющий выполнение условия Field1<>Field2. Представим также, что в этой таблице содержится одна запись, значения полей которой Field1=0 и Field2=1. В исходном состоянии значения констрейнта НЕ нарушается. В соответствии с логикой текущей обработки информации нам необходимо изменить значения этих полей на противоположные (инвертировать их), то есть получить после сохранения в БД и завершения транзакции результат Field1=1, Field2=0, который НЕ приводит к нарушению условия CHECK-констрейнта. Если подобная модификация производится за одну ОПЕРАЦИЮ (а не транзакцию), то нарушения констрейнта не происходит: Вариант 1 Код: plaintext 1. 2. 3. Вариант 2 Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. Теперь спроецируем эту ситуацию на объекты, полагая, что Field1 и Field2 являются полями класса. Не имея возможности присвоить нескольким полям объекта в оперативной памяти ДО запуска операции записи в БД нескольким полям некоторой совокупности значений приводит к нарушению констрейнта CHECK из-за некорректных (с точки зрения этого констрейнта) временных промежуточных состояний объекта. Во многих и многих случаях придется просто отказаться от использования констрейнтов только потому, что присвоение значений полям объекта приводит к их моментальному сохранению в БД. Механизм транзакций эту проблему НЕ решает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 11:17 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Garya Прочитал ваш последний пост. Супер. Только о какой такой оперативной памяти Вы говорите? Откуда Вы ее взяли? Какое отношение это все имеет к САБЖу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 11:46 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene 2 Garya Прочитал ваш последний пост. Супер. Только о какой такой оперативной памяти Вы говорите? Откуда Вы ее взяли? Какое отношение это все имеет к САБЖу?Оператвиная память взялась на моих пальцах, когда я на них (то есть, на пальцах) пытался раскрыть суть проблемы. Собственно проблема связана с тем, что практическая реализация сабжа невозможна без решения проблем разделяемого доступа к данным, которые в предложенном документе просто обойдены молчанием. У меня возникло ощущение, что эти проблемы не были достаточно хорошо продуманы, хотя бы из этой Вашей реплики: U-geneФраза ясна. Но точно также можно сказать, что в процессе модификации данных в любой БД в ней могут возникнуть "нелогичные" состояния. На то транзакции и нужны, что бы такие ситуации не фиксировались как состояние системы.Еще раз акцентирую внимание на том, что не все проблемы разделяемого доступа к данным могут быть решены ТОЛЬКО ЛИШЬ с помощью транзакций. Или решение этих проблем Вы полагаете возложить на тех, кто возьмется за конкретные воплощения идей манифеста? U-geneАааа, понятно!... только где у меня в переменных отношения есть такие множества как атрибуты? У меня в переменных отношения в атрибутах только скаляры. Соответсвенно никаких отдельных таблиц, денормализаций и фулсканов нет в приципе.Честно говоря, я уже немного запутался. :) Я исходил из Вашего комментария, высказанного здесь: U-gene...просто надо понимать, что одно знанчние - это тоже множество, и что это значение может быть подмножеством другого значнеия, описываещего предметную область в целом. Возможно, я его не совсем правильно понял. U-geneЛихой поворот событий. Сначала мы говорим о наследовании типов, а теперь как то незаметно переходим на объекты? "Рыжая борода" - это имя атрибута? Или есть атрибут "борода" а у него может быть значения "рыжая, черная"? Вы определитесь, а потом мы разберёмся.....Определяемся. Был тип (класс) "многострочные документы", например. В нем имеются атрибуты, объявленные хранимыми. От него унаследовали классы "счета", "накладные" и "счета-фактуры". Далее насоздавали по тысяче объектов каждого из этих классов. Потом спохватились - а давайте добавим системное поле "Автор документа" в родительский класс "многострочные документы", причем потребуем обязательности его заполнения. Оно (это поле) автоматически появится у прежде созданных объектов счетов, накладных и счетов-фактур? Можно расписать подробнее, как Вы себе представляете модификацию типа ПОСЛЕ того как созданы хранимые объекты унаследованных классов? U-geneОпять же - Вы так и не обяснили, какое отношение транзакции имеют к вопросу поднимаемому в НРМ. Что же касается конкретно вашего пример, то в НРМ он решается просто. Создание объекта типа "накладная" подразумевает, в частности, то, что в используемой РСУБД возникает кортеж, соответсвующий заголовку. Для этого пользователю никаких ограничения целостности не надо определять вообще. Система за него это делает.Я пытаюс показать, что ПОСЛЕДОВАТЕЛЬНОСТЬ выполнения операций имеет может иметь значение. DRI с каскадными операциями в РСУБД могут быть настроены таким образом, чтобы при удалении заголовка накладной автоматически удалялись также и объекты многострочной части (позиции накладной). При этом НЕВОЗМОЖНО создать запись многострочной части, не создав предварительно запись заголовка накладной. В Вашем случае строка многострочного документа является самостоятельным объектом. И, значит, если я правильно понял, эти объекты могут существовать ВНЕ ЗАВИСИМОСТИ от существования объекта накладной, что может вызвать проблемы логической целостности. Еще один пример. Заголовок накладной ссылается на объекты "покупатель" и "продавец". Что произойдет с объектом "накладная", если попытаться грохнуть продавца, на который ссылается данный объект? Причем, "продавец" - это НЕ часть объекта "накладная" - это именно самостоятельный объект. Поскольку на него аналогичным образом ссылается еще множество других объектов. Ошибка? Ок. А теперь вернемся к проблеме. В ТРАНЗАКЦИИ сначала грохается продавец, на которого имеются ссылки из накладных, а потом уже эти ссылки в накладных переустанавливаются на ДРУГОГО ПРОДАВЦА. После выполнения всей СОВОКУПНОСТИ действий, определяемых транзакцией, должно возникнуть непротиворечивое состояние данных. Но имеется ПРОМЕЖУТОЧНОЕ ИХ СОСТОЯНИЕ, в котором они на некоторое время окажутся противоречивыми. Устранение промежуточных противоречивых состояний НЕ ВСЕГДА возможно одним только механизмом транзакций. Нужны еще механизмы управления моментами запуска проверки непротиворечивости. Один из подобных механизмов реализован в Cache. Запуск непротиворечивости данных запускается при попытке СОХРАНЕНИЯ всей совокупности информации об объекте. Сама же модификация совокупности информации об объекте может происходить целой серией операций, приводящих к появлению временно-противоречивых состояний объекта, которые игнорируются, поскольку Cache четко отделяет реально хранимый объект в БД от его копии, подгруженной в сессии, с которой оперирует разработанная программистом логика. Я не наставиваю на том, что именно такой механизм должен быть во всех случаях. Но какой-то нужен. Иначе, повторяю, работать с информацией, реализующей принципы рассматриваемого манифеста сможет только один пользователь. U-gene, прошу меня извинить, если мои высказывания показались Вам слишком настойчивыми. Я лишь пытаюсь найти ответы на вопросы, которые у меня возникают. Возможно, я черезмерно ориентирован на практику, и поэтому не могу воспринять достаточно абстрактно озвученные в манифесте положения. У меня нет намерения как-либо принизить Вашу работу. Я считал и продолжаю считать ее достойной изучения. Надеюсь, Вы не станете воспринимать меня Вашим противником. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 13:17 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Моя не понимай ... Если U-gene Определение объектного типа GoodsMotion можно также рассматривать как объявление R-переменной компонента типа GoodsMotion.MovedItems со схемой (OID, Article, Quantity) . то откуда No: U-gene есть переменная с именем GoodsMotion.MovedItems содержащая скалярный атрибут No ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 14:35 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
...проблем разделяемого доступа к данным, которые в предложенном документе просто обойдены молчанием... Так целью предложенного документа это и не является! Я пытаюс показать, что ПОСЛЕДОВАТЕЛЬНОСТЬ выполнения операций имеет может иметь значение. DRI с каскадными операциями в РСУБД могут быть настроены таким образом, чтобы при удалении заголовка накладной автоматически удалялись также и объекты многострочной части (позиции накладной). При этом НЕВОЗМОЖНО создать запись многострочной части, не создав предварительно запись заголовка накладной. В Вашем случае строка многострочного документа является самостоятельным объектом. И, значит, если я правильно понял, эти объекты могут существовать ВНЕ ЗАВИСИМОСТИ от существования объекта накладной, что может вызвать проблемы логической целостности. Еще один пример. Заголовок накладной ссылается на объекты "покупатель" и "продавец". Что произойдет с объектом "накладная", если попытаться грохнуть продавца, на который ссылается данный объект? Причем, "продавец" - это НЕ часть объекта "накладная" - это именно самостоятельный объект. Поскольку на него аналогичным образом ссылается еще множество других объектов. Ошибка? Ок. Я бы таки попросил бы Вас еще раз все перечитать....но не как чтиво:). Например Ваша уверенная фраза "В Вашем случае строка многострочного документа является самостоятельным объектом." показывает, что Вы даже с предлагаемой системой типов не разобрались. Что же касается "покупателей" и "продавцов", то взгляните в НРМ....например на стр 34. Там в частности есть фраза... НРМ(стр34)...конролировать целостность связей "по ссылкам", используя для этого существующие в используемой реляционной БД механизмы контроля ссылочной целостности. ......имеющая прямое отношение к вопросу(контекстом является оригинал). То есть ошибки я вижу пока что исключительно в Вашем восприятие предложенного подхода. И я боюсь, что на основании даже внимательного прочтения тутошних постов, Вы это не исправите. мой пост, котрый Вас так встревожил...просто надо понимать, что одно знанчние - это тоже множество, и что это значение может быть подмножеством другого значнеия, описываещего предметную область в целом Скажите, а если я сделаю простой SELECT ... FROM X... , то разве нельзя результат рассматривать как подмножество( возможно собственное) исходного X? Вы же не будете утверждать, что этот результат должен являться обязательно атрибутом кортежа исходного Х? Во ваших опасениях Вы почему именно так и делаете. Определяемся. Был тип (класс) "многострочные документы", например. В нем имеются атрибуты, объявленные хранимыми. От него унаследовали классы "счета", "накладные" и "счета-фактуры". Далее насоздавали по тысяче объектов каждого из этих классов. Потом спохватились - а давайте добавим системное поле "Автор документа" в родительский класс "многострочные документы", причем потребуем обязательности его заполнения. Оно (это поле) автоматически появится у прежде созданных объектов счетов, накладных и счетов-фактур?... Да.Можно расписать подробнее, как Вы себе представляете модификацию типа ПОСЛЕ того как созданы хранимые объекты унаследованных классов?Мммм.... а давайте мы пока с системой типов разберемся?... Без этого не понять соотношения между объектами к отношениями, а как мы это станет понятно, так, глядишь, и вопрос проясняться начнет.... Я не наставиваю на том, что именно такой механизм должен быть во всех случаях. Но какой-то нужен. Экий Вы настырный.....:)..... 1)Еще раз повоторяю, что данная проблема не является проблемой которую пытается решить НРМ. 2)Допускаю, что такие механизмы нужны. Хотя не один из Ваших примеров меня, честно гря, не убедил. Например, зачем сначала стирать продавца, а потом переставлять ссылки? Во-первых, можно сделать наоборот и проблемы не станет. Во вторых в R*O-системе предложенный вами вариант вообще не проканает, поскольку система осуществляет контроль целостности ссылок (стр34) и там всяк проидется сначала перназначит, а потом стирать. 3) Еще раз повторю, что видимо, такие механизмы нужны. И хотя это и не имеет отношение к НРМ , но в голове бродит мысль рассматривать любой метод как атомарную операцию, внутри котрого возможны изменения, но в результате должно возникнуть непротиворечивое состояние. Иначе, повторяю, работать с информацией, реализующей принципы рассматриваемого манифеста сможет только один пользователь А можно привести пример такой ситуации? Я честно, пока что таковую не вижу. Только в деталях: пользователь собрался каким то образом поработаь с объктом. Что он делает(по операциям), как в результате он всех остальных блокирует. Только чур!...надо бы поближе ознакомившись с предложенным подходом, дабы конфузов, как с "строка многострочного документа является самостоятельным объектом" не вышло. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 14:41 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ModelR Моя себя сама здесь не понимай. Ошипси. Гранд сорри. Исходную фразу здесь надо читать, конечно, как ...В частности, есть переменная с именем GoodsMotion.MovedItems содержащая скалярный атрибут Article и также, есть переременная с именем GoodsMotion содержащая скаляряный же атрибут MovedItems.Article . То есть в последнем слуучае выражение MovedItems.Article - это всего лишь сложное имя скалярного атрибута. Если Вы воспринимаете здесь что-то, как какую-то сложную структуру, то слава богу - я именно этого и добивался. Но с формалной точки зрения, с точки зрения РМД MovedItems.Article - это просто имя, ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 14:46 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2Garya авторПример. Имеется отношение (в просторечии - таблица), кортежи которого содержат в одном из полей ЗНАЧЕНИЕ, являющееся множеством. Всего в отношении 10000 записей, 4000 из которых содержат в данном поле ЗНАЧЕНИЕ {1; 5; 8; 9}, остальные 6000 содержат ЗНАЧЕНИЕ {2; 4; 7}. Если эти ЗНАЧЕНИЯ сохранять непосредственно в таблице, соответствующей отношению (например, в виде совокупности полей [Элемент1], [Элемент2], [Элемент3] и т.д.), то мы получим яркий пример нарушения 3NF Нет. В свете текущих представлений тип значения может быть сколь угодно сложным, было бы определено равенство. Т.е. если мы умеем определить {1; 5; 8; 9} = / != {2; 4; 7} то можем рассматривать эти значения как атомарные с точки зрения 1NF. Причем тут 3NF непонятно, пока не определены ФЗ. В ФЗ соответствующий атрибут будет участвовать как атомарный и его внутренняя структура нарушить 3NF не может. автор Если их сохранять упакованными в varbinary, например, мы получим неоптимальность хранения и требования выполнять операции распаковки над каждой записью (выполнять Full Scan таблицы) при фильтрации кортежей по условиям, в которых фигурируют элементы данного множества. Наиболее очевидный способ нормализовать данные - создать вспомогательную таблицу, в которую поместить два набора записей, идентифицируемых по коду набора: Номер набора Значение 1 1 1 5 1 9 2 2 2 4 2 7 , а в основной таблице ссылаться на номер набора.Оптимальнось хранения зависит от приложения. Конечно, когда приложению нужен доступ к <1 8> и <2 4> то так лучше. Если приложение обрабатывет только множества целиком, то в чем проблема - БД и хранит их как атомарные значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 15:02 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneХотя не один из Ваших примеров меня, честно гря, не убедил. Например, зачем сначала стирать продавца, а потом переставлять ссылки? Во-первых, можно сделать наоборот и проблемы не станет. Во вторых в R*O-системе предложенный вами вариант вообще не проканает, поскольку система осуществляет контроль целостности ссылок (стр34) и там всяк проидется сначала перназначит, а потом стирать.Я стараюсь приводить относительно простые примеры, из которых дейсвтительно можно выкрутиться по большей части, хотя и не из всех. Посмотрите, еще раз вот этот пример и сообщите пожалуйста, как ОДНОЙ операцией присвоения значения свойствам объекта можно одновременно изменить значения нескольких атрибутов. А реальная жизнь гораздо сложнее и многограннее. В этой реальной жизни может понадобиться вносить изменения не только в несколько атрибутов ОДНОГО объекта, но и в несколько атрибутов нескольких взаимосвязанных объектов. И вероятность столкнуться с противоречивыми промежуточными состояниями данных, не преодолимых простой перестановкой последовательности выполнения операций внутри одной транзакции, становится все более возможной. Немаловажен тот факт, что противоречивые состояния данных могут возникать даже при работе ОДНОГО пользователя. Если одни и те же "переменные отношения" доступны нескольким сеансам, и каждый из них творит с этими переменными что-то свое, при этом изменения атрибутов одним из сеансов этих объектов влияют СРАЗУ на все сеансы, вероятность столкнуться с противоречивыми данными резко возрастает даже на тех операциях, которые при однопользовательском доступе однозначно не приводят ни к каким конфликтам. U-geneв голове бродит мысль рассматривать любой метод как атомарную операцию, внутри котрого возможны изменения, но в результате должно возникнуть непротиворечивое состояниеИ где же происходит обработка ошибок, если противоречивость выявляется, когда метод уже отработал? U-geneА можно привести пример такой ситуации? Я честно, пока что таковую не вижу. Только в деталях: пользователь собрался каким то образом поработаь с объктом.Выше я уже приводил подобный пример про пальцы, кольца и микробов. Всё очень просто. В одном сеансе прежде чем выполнить какие-то действия над данными проверяется их значение и принимается решение, что содержимое данных требует их обработки одним способом №1. После выполнения этой проверки, но еще до запуска самой обработки в другом сеансе изменяется содержимое уже проверенных данных, в результате чего бизнес-логика требует, чтобы они изменялись способом №2. Но поскольку первый сеанс "ничего не знает" о том, что данные только что изменились, он их обрабатывает Способом №1, прводя в противоречивое состояние. ModelR 2Garya авторПример. Имеется отношение (в просторечии - таблица), кортежи которого содержат в одном из полей ЗНАЧЕНИЕ, являющееся множеством. Всего в отношении 10000 записей, 4000 из которых содержат в данном поле ЗНАЧЕНИЕ {1; 5; 8; 9}, остальные 6000 содержат ЗНАЧЕНИЕ {2; 4; 7}. Если эти ЗНАЧЕНИЯ сохранять непосредственно в таблице, соответствующей отношению (например, в виде совокупности полей [Элемент1], [Элемент2], [Элемент3] и т.д.), то мы получим яркий пример нарушения 3NF Нет. В свете текущих представлений тип значения может быть сколь угодно сложным, было бы определено равенство. Т.е. если мы умеем определить {1; 5; 8; 9} = / != {2; 4; 7} то можем рассматривать эти значения как атомарные с точки зрения 1NF.Рассматривать-то мы можем их как атомарные - теоретически. Но при этом каждый элемент атома-множества в свою очередь может быть атомом-множеством, в которое тоже могут быть тоже вложены атомы-множества и т.д. И при детальном рассмотрении можно прийти к выводу, что вообще вся многогигабайтная база данных с тысячами таблиц может быть представлена в виде атомарного значения (почти что скалярного - такого большого-большого космического числа). Нет никаких отношений и кортежей - одно лишь атомарное значение. И тогда не нарушаются требования никаких нормальных форм, пусть даже внутри этой базы сидит данных одна-единственная таблица, в которой описаны вперемешку содержимое документов, справочников, кулинарных рецептов и записок охотника. Только кому это атомарное значение нужно, если внутрь этого атома забраться и рассматривать отдельные кварки никто не собирается? Если мы рассматриваем элемент именно как МНОЖЕСТВО, а не как атомарное значение, значит это где-то и для чего-то нужно. Значит, где-то кто-то когда-то собирается выделять отдельные элементы этого множества и производить с ними какие-то операции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 18:15 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 Garya Еще раз повторяю, что сабж не рассматривает эти вопросы. Если Вам кажется , что один пользователь заблкирует всех остальных - я не готов ошибочность этого Вашего личного мнения доказывать. А на уровне разговоров о сложности жизни мне общаться не хочется. Могу лишь заметить, что все поднимеамые вами вопрсоы ИМХО так или иначе касаются любых многопользовательских систем (я в примере об ампутированных пальцах эт уже говорил), и в этих системах они каким то образом решаются. Например, на ваш пассаж...В этой реальной жизни может понадобиться вносить изменения не только в несколько атрибутов ОДНОГО объекта, но и в несколько атрибутов нескольких взаимосвязанных объектов.......я могу ответить пассажем о табличных СУБД со многими вложенными триггерами, когда изменеие одной записи может повлечь изменение состояния многих таблиц. И что? Теперь в таких системах работать невозможно? Если в предложении "Если одни и те же переменные отношения доступны нескольким сеансам, и каждый из них творит ...и.т.д..." я заменю "переменные отношения" на "таблицы", а "творит" на "вызывает хранимые процедуры" - от этого что-то в его смысле измениться? ИМХО абсолютно нет. Поэтому все эти сеансы, пальца, кольца и микробы - они к теме "объекты*отношения" отношения ИМХО не имеют отношения вообще. Формально же могу сказать, что в НРМ слово "многопользовательская система" не разу не употребляется. В связи с этим тот ваш изначальный вопрос "А где же разбор конфликтов одновременного доступа к данным?" он в общем то о том, что как бы и не декларируется(точно так же как нет ничего о производительности). Увы мне....:) Это, конечно, очень большая и важная тема, но я не готов, поэтому проблемы, связанные с многопользовательским доступом, обсуждать не хочу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 19:20 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneЕще раз повторяю, что сабж не рассматривает эти вопросы. Понятно. Это мой последний пост по теме, больше испытывать Ваше терпение я не буду. U-geneЕсли в предложении "Если одни и те же переменные отношения доступны нескольким сеансам, и каждый из них творит ...и.т.д..." я заменю "переменные отношения" на "таблицы", а "творит" на "вызывает хранимые процедуры" - от этого что-то в его смысле измениться? ИМХО абсолютно нет.Рискну последний раз возразить. :) РУСБД оперирует именно таблицами, VIEW, хранимыми процедурами и т.п. и реализует механизмы разделяемого доступа именно на уровне заранее определенной разработчиками этой РСУБД объектной модели. Что там происходит - всем более-менее понятно. А R*O система оперирует понятиями ОБЪЕКТОВ, ТИПОВ и т.д. для ПРОИЗВОЛЬНОЙ объектной модели, которую разработчик конструирует из понятий другого уровня - объектных типов, например. Объект этой объектной модели на уровне РСУБД может представлен несколькими таблицами - какими именно, разработчику не должно быть интересно, иначе вся объектная ориентированность данного манифеста летит коту под хвост. Так вот... Я очень плохо себе представляю блокировку ОБЪЕКТА, ТИПА, АТРИБУТОВ и т.п. в процессе разделяемого доступа к ним. Вы сами в НРМ говорите "данные о любом объекте могут храниться в разных переменных отношений". И как в таком случае уложить в голове все, что связано с разделяемым доступом, не опускаясь до традиционного реляционного подхода? U-geneФормально же могу сказать, что в НРМ слово "многопользовательская система" не разу не употребляется. В связи с этим тот ваш изначальный вопрос "А где же разбор конфликтов одновременного доступа к данным?" он в общем то о том, что как бы и не декларируется(точно так же как нет ничего о производительности). Увы мне....:) Это, конечно, очень большая и важная тема, но я не готов, поэтому проблемы, связанные с многопользовательским доступом, обсуждать не хочу.Я уже все понял... :) Есть у меня дурацкая привычка при виде формулы параболы сразу примерять ее к траектории полета снаряда, выискивать в ней учет сопротивления воздуха, изменения его плотности в зависимости от высоты, изменения g в зависимости от высоты, а также влияние луны и звезд на небе. А это всего лишь формула параболы... :) Больше не буду беспокоить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 19:56 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 tchingiz. Спасибо. Прочитал. Классная статья! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 13:09 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Garya ModelR Нет. В свете текущих представлений тип значения может быть сколь угодно сложным, было бы определено равенство. Т.е. если мы умеем определить {1; 5; 8; 9} = / != {2; 4; 7} то можем рассматривать эти значения как атомарные с точки зрения 1NF.Рассматривать-то мы можем их как атомарные - теоретически. Но при этом каждый элемент атома-множества в свою очередь может быть атомом-множеством, в которое тоже могут быть тоже вложены атомы-множества и т.д. И при детальном рассмотрении можно прийти к выводу, что вообще вся многогигабайтная база данных с тысячами таблиц может быть представлена в виде атомарного значения (почти что скалярного - такого большого-большого космического числа). Нет никаких отношений и кортежей - одно лишь атомарное значение. И тогда не нарушаются требования никаких нормальных форм, пусть даже внутри этой базы сидит данных одна-единственная таблица, в которой описаны вперемешку содержимое документов, справочников, кулинарных рецептов и записок охотника. Да Garya Только кому это атомарное значение нужно, если внутрь этого атома забраться и рассматривать отдельные кварки никто не собирается? Да, конечно собирается. Просто не обязательно средствами данной БД Garya Если мы рассматриваем элемент именно как МНОЖЕСТВО, а не как атомарное значение, значит это где-то и для чего-то нужно. Значит, где-то кто-то когда-то собирается выделять отдельные элементы этого множества и производить с ними какие-то операции.Весь вопрос именно про границу - "где-то" - это где? Если в нашей системе нужны транзакции, изменяющие часть этого атома в то время как другие транзакции независимо меняют другую часть этого атома - наши проблемы, вникаем и моделируем. Если атом считывается, блокируется и возвращается только целиком, то зачем мне его структура? Без всякого нарушения нормализации можно и JPEG промоделировать реляционными таблицами, и весь дамп некоторой базы хранить одним полем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 12:19 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
tchingizГаря процессы, которые мы потеряли http://www.softcraft.ru/paradigm/process/pr01.shtml Статья великолепная. Если добавить по треду к каждому объекту, получим процесс. Поместить что получилось в БД получим, уже даже говорить страшно ... скажу другими словами - СНС ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 14:00 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Не могу сказать что статья супер, могу предположить, что автор со Smalltalk не работал, хотя его упоминает... Многие из его идей там есть начинаяя с 1980 года... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 14:45 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 nkulikov В САБЖе нет smalltalk'а!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 15:13 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
А мы здесь тогда о чем?...тем более что "В Subj нет процессов тоже...."... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 15:51 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
shuklinПоместить что получилось в БД получим, уже даже говорить страшно ... скажу другими словами - СНС )))Да, эта концепция перекликается с отслеживаем состяния хранимой в БД информации по двум осям времен, предложенная мной. Но это тема отдельного разговора, не хочу прогневать еще и модератора... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 16:17 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Кстати, некоторые участники разговора уже запутались - о чем вообще идет речь... :) Наверное, пора вернуть разговор к его истокам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 16:19 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Garya shuklinПоместить что получилось в БД получим, уже даже говорить страшно ... скажу другими словами - СНС )))Да, эта концепция перекликается с отслеживаем состяния хранимой в БД информации по двум осям времен, предложенная мной. Но это тема отдельного разговора, не хочу прогневать еще и модератора... :) Где прочитать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 16:38 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
shuklinГде прочитать?Вкратце я говорил в этом треде (см. абзац, начинающийся словами "Про R-переменные типа / компонентов типа - идея понравилась"). А также на своем "родном" форуме :) обмолвился, начиная отсюда. Сейчас модератор мне точно по шее накостыляет. Если есть вопросы или замечания по МОЕЙ концепции, прошу их больше не втыкать в текущий тред. Можете открыть новую ветку (наверное, правильнее всего это сделать на форуме "Разработка информационных систем" , или "Проектирование БД" ). Только просигнальте мне на мыло, а то я не во все форумы регулярно заглядываю (мыло см. в разделе "Работа" моего профиля). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 17:40 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
GaryaМожете открыть новую ветку (наверное, правильнее всего это Рискнул ответить здесь Cerebrum : Сетевая объектно-ориентированная система управления базой знаний ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 18:46 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 tchingiz Ну ты понаписал. Я продолжаю исходить из предпосылки, что ты делаешь попытку создатьформальную систему. Да я уже и сам не знаю….:) В предверсии наверное, а сейчас может быть наверное уже и нет. Скорее это попытка объяснить идею более–менее понятно, оставаясь при этом по возможности в каких то формальных рамках. 2. понятия В третьем манифесте я не нашел (использовал в ворде ctrl+F) сочетание "переменная отношения" и "значение отношения".Я аж испугался. :) Пришлось консолидировать источники. Таки есть. Например в "Основы будущих баз данных. Третий манифест"(Москва Янус-К 2004) есть на 42й стр. Они должны явно различаться. Что же касается отношений как констант (то есть значений), то если не утрировано то отношение – это, конечно не описание и не схема, а просто тип. В этом случае значение оношения складываются их двух частей заголовок(схема) и тело. Соответсвенно могут быть разные значения, имеющие одинаковый заголовок(это разные отношения). Или разные значения, имеющие разные заголовки(тем более разные отношения). Но в любом случае (даже в последнем) – тип один и тот же. Я же постоянно использую термин значение отношения(хоть это и масло масленное) только для того что бы подчеркнуть, что это таки значение. С другой стороны тип отношение ИМХО можно рассматривать и как метатип (тип типов). Метатип соотностися с типом так же, как тип соотноситься со значением. Из этого в частности следует, что, конструируя тип некого метатипа, мы в этом конструкторе можем использовать другой тип как аргумент. Тогда конструкция RelVar AS SET OF TupleType объявляет существование переменной типа, относящегося к метатипу "отношение", для которой в качестве типа аргумента-заголовка определен кортежный тип TupleType. Соответсвенно, например, операция проекции, определённая без сомнения для метатипа "отношение", манипулирует и телом (значением… данными) и заголовком (типом-аргументом…. метаданными). В результате получается новое значение с новым типом аргументом (то есть с новой схемой) 2.2. кортежи (tuples) множестве ВСЕХ ЦЕЛЫХ ЧИСЕЛ, который говорит входит ли данное целое в тип (множество ) short. Тип отношения имярек - множество всех отношений (множество множеств) для которых выполняется некоторый предикат. Должен существовать предикат, заданный на множестве ВСЕХ ОТНОШЕНИЙ, который говорит, входит ли данное отношение в тип имярек. Этот предикат можно называть спецификацией отношения. В частности спецификация отношения может задавать названия атрибутов, домены атрибутов, задавать предикат table-constraint table-constraint : [ CONSTRAINT constraint-name ] { UNIQUE ( column-name, ... ) | PRIMARY KEY [ CLUSTERED ] ( column-name, ... ) | CHECK ( condition ) | foreign-key-constraint } ИМХО не нужно валить все в одну кучу. Например отношения, совместимые по схеме, могут иметь абсолютно разные CHECK'и. Я это объяснял в 1740981 . 3. основное требование HРМ 1) обьекты - лишь дань сиюминутной (по сравнению с математикой) моде. Не факт, что им будет уделяться такое же внимание через 10-20 лет. 2) понятие не слишком формализованное.В основном требовании таки говориться "объекты предметной области. Я могe написать и "сущности предметной области" – от этого ИМХО ничего не измениться. Я явно оговариваюсь, что это не объекты языка или системы. А вот эти объекты я далее и стараюсь… ну не то, что бы формализовать, но хотя бы описать так, что бы формализация не составила труда. Я тебе давал ссылку на статью, автор которой считал, что лучше бы использовать такое понятие как процессы. Обьект легко моделируется процессом, а процесс не легко моделируется обьектом. Remark Главное отличие, (если я ничего не путаю) процессы от взаимодействия до взаимодействия могут менять свое состояние. ОБьекты - нет. Вот на сишарпе работал, чето мне не бросились в глаза возможности у обьектов менять состояние от одного вызова метода обьета до другого вызова метода обьекта. То есть, понятие процесса - более общее. Раз есть претензия на описание ЛЮБОЙ ПРЕДМЕТНОЙ области, то подразумевается, что R*O система должна описывать предметную область сплошь состоящую из процессов.Не знаю… ИМХО понятие процесса может быть и хорошее…. но забытое…. Опять же ну назову я это "процесс" так все равно от этого ничего не измениться. :) опять же с объектыкак то более ассоциипуются у народа со всякими наследованиями и полиморфизмами,о чем речь в НРМ идет. А вот состояние (изменчивое или неизменчивое) это в нем не есть главное. требование нрм значение, описывающее состояние сущностей предметной области, должно представлять собой множество отношений. В текущей реализации манифеста под термином сущность будем понимать термин обьект. Против первого предложения не имею ничего против. Может быть оно так даже будет лучше - дабы не путать объекты предметной области и объекты как способ представить информацию о первых ones (то есть в предметной области сущности, а НРМ предлагает для описания этих сущностей конструктив, называемый объектом). Но по этой же причине со вторым предложением не согласен категорически. 4. Данные R*0 системы 4.1. Различимые значения "Различимые значения" это че такое? Ну…:)…эта….. Да. :) Уберу…. И длительное обсуждение "полного и прямого различения" тоже вода сплошная. Смахивает на лифтера после прочтения книжки "оракл за 24 урока". Однако пассажи о различимости убирать не буду – ИМХО это основное различие между объектными и значимыми типами, так что пусть уж плещется… Даже в случае самых абстрактных типов, ВСЕГДА задается операция сравнения. Эта операция дает ответ на вопрос два значения находится в отношении эквивалентности или нет. Все однозначно трактуется. Никаких полных и прямых различений нет. Обсуждение этих различений ничего не обьясняют. А в обьектном ориентированном программировании вновь создаваемые типы должны обрабатываться как встроенные. Операция сравнения обязана быть реализована. А вот здесь я не хочу идти за тем, что должно быть потому что оно так есть. Хотя бы потому, что в ОО прогамировании все типы – классы (суть объектные типы), а в НРМ – нет. Считай, что я эти "самые абстрактные типы" сразу же разведены на две группы. Экземляры одной сравниваются по значению а другой –по идентификатору. А в остальном я же не запрещаю эти отношения эквивалентности каким то образом задавать…. Опять же я не запрещаю пользовтелю определять любые свои опреции…Ведь могут объекты быть одинаковыми по объему, по массе, по фамилии… это же тоже отношения эквивалентности? Ну пусть он так и пишет…Или можно считать,что есть операции сравнения "=" и "==". Одна из них как определил пользоваетль, а вторая этакое абсолютное сравнение, по одному из двух предложенных вариантов. На самом длеле в конце концов все сводится к сравнению значимых типов, потому как когда мы пишем объект1 == объект2 мы сравниваем значение ссылочных перменных, то есть значение перменных значимого типа ( для них .... прямое и полное). это запомнить невозможно. кроме того, что такое "ТИПЫ МНОЖЕСТВ"? Да поллитра требуется. :) Что если так? 3)Конструируемый тип отношения. Значение этого типа представляют собой множество кортежей заданного кортежного типа. Соответственно этому определяется и переменная типа отношения (имя_переменной AS SET OF имя_кортежного_типа). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2005, 23:27 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
я воспринимаю слово тип как синоним слова множество значений. то если не утрировано то отношение – это, конечно не описание и не схема, а просто тип. В этом случае значение оношения складываются их двух частей заголовок(схема) и тело. Соответсвенно могут быть разные значения, имеющие одинаковый заголовок(это разные отношения) 1 "разные значения, имеющие одинаковый заголовок == синоним разные отношения". в этом предложении значение отношения эквивалентно отношению. 2 "то отношение - просто тип". в этом предложении отношение это просто множество значений. тогда "значение отношения" это константа (одна из типа), а отношение - это множество различных "значений отношения" -- фразу номер 2 "отношение - это просто тип" -- я склонен расценивать как ошибочную. то есть считать выражение "значение отношения" и "отношение" синонимами. переменная отношения - отличается от отношения тем, что для переменной должна быть задана операция присвоения (например ее можно обозначить символом :=). то есть если r1, r - отношения, а v - переменная отношения, то в формальной системе (например, в R*O) можно записать выражение v := r и нельзя записать выражение r1 := r ----- тогда эти термины оказываются согласованными с более общими терминами переменная и значение. а других отличий между переменной и значением не вижу. Соответсвенно, длинные обсуждение разницы, вроде как у Дейта считаю бессмысленными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 07:07 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
опять имхо везде. ))))))) предложение по трактовке типов. в самом общем виде - тип X задается как множество значений (далее для формального описание использую синтаксис RSL) Код: plaintext 1. 2. 3. 4. 5. 6. читается как в математике Integer - множество значений из предопределнного типа Int, для которого выполняется следующий предиткат - любое значение больше равно -32000 и меньше равно 32000. Nat - множество значений из типа Integer, которые больше 0. Задал два новых типа - обьявил две новых переменных. Почему для кортежей и отношений надо делать исключение? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. задал скалярные типы INTEGER, FLOAT, Article, задал тип SaleQty - который удовлетворяет определению кортежного типа и он действительно означает множество всех троек, первая компонента которых (читай атрибут) принадлежит множеству Art, вторая принадлежит множеству целых чисел INTEGER, третья принадлежит FLOAT задал тип SaleQty1 - выбрал из SaleQty только те кортежи, которые удовлетворяют предикату - Qountity больше 0, Price больше 0, Art принадлежит некоторому еще неопредленному множеству RealArt. Тип отношение TRel из кортежей задается и переменная задается очевидным образом Код: plaintext 1. 2. 3. 4. 5. 6. TX это множество всех кортежей типа SaleQty, TX1 это множество всех кортежей типа SaleQty1 (то есть для которых выполняется предикат XXX). Задал переменные отношения table и table1. что скалярные, что кортежи, что отношения, что чтото более сложное. все записывается и понимается однообразно, а значит понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 07:45 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
[quot] ИМХО не нужно валить все в одну кучу. Например отношения, совместимые по схеме, могут иметь абсолютно разные CHECK'и. Я это объяснял в 1740981. [/qout] 1 то есть для однообразия предикат (check) я бы всетаки вносил в определение (спецификацию, схему) отношения. отношение это константа из множества. множество задается спецификацие отношения. спецификация состоит из заголовка и предиката, заданного на кортежах. заголовок состоит из множества пар ( название атрибута и домена атрибута). 2 в свете вышеизложенной трактовки терминов фраза "отношения могут иметь абсолютно разные check" - бессмысленна. Отношения чеков (предикатов) не имеют. Кортежи отношения могут удовлетворять предикату. Чеки (предикаты) имеет задание типа отношения. занание типа -- синоним -- определение (спецификация, схема) отношения . 3 фразу "Почему для кортежей и отношений надо делать исключение"? надо читать как "я не допонимаю, почему для кортежеи и отношений надо делать какие либо специальные оговорки вообще"? формально твою фразу 3)Конструируемый тип отношения. Значение этого типа представляют собой множество кортежей заданного кортежного типа. Соответственно этому определяется и переменная типа отношения (имя_переменной AS SET OF имя_кортежного_типа). я бы читал как (слово конструируемый - лишнее) тип отношения TX. значения типа TX представляют собой отношение R принадлежаее множеству TX. Тоесть ничем не отличается от "значения типа Nat представляют собой константы принадлежащие множеству Nat" --- пример (я убрал заголовок кортежа и отношения, чтобы меньше писать. ) TX = {{(1,2), (3,4)}, {(44,5),(2,3),(7,6)}} тогда переменная x: TX, может принимать значение либо {(1,2), (3,4)} либо {(44,5),(2,3),(7,6)} можно написать x := {(1,2), (3,4)} или x := {(44,5),(2,3),(7,6)} и нельзя x := {(55,3),(7,6)} ---------------------------- Заодно, надо отметить, что ты сужаешь понятие переменной отношения. Насколько я понял. почему нельзя задавать тип отношения с разными типами кортежами? вот такой тип почему нельзя задать? TX1 = {{(1,2), (3,4)}, {(44,5),(2,3),(7,6)} , {(1,2,3), (3,4,5)}} тогда в переменную x1 : TX1 можно будет присваивать {(1,2,3), (3,4,5)}. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 08:20 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. пусть задано множество X. подмножество R из X >< X, назвается отношением эквивалентности тогда и только тогда когда для каждого x isin X, y isin X, z isin X выполняются условия 1 рефлексивности: xRx -истинна ( xRx означает (x,x) isin R) 2 симметричности xRy истина тогда и только тогда когда yRx 3 транзитивности xRy /\ yRz влечет xRz. тоесть отношений эквивалетности можно задать много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 08:29 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
С другой стороны тип отношение ИМХО можно рассматривать и как метатип (тип типов). Метатип соотностися с типом так же, как тип соотноситься со значением. Из этого в частности следует, что, конструируя тип некого метатипа, мы в этом конструкторе можем использовать другой тип как аргумент. Тогда конструкция RelVar AS SET OF TupleType объявляет существование переменной типа, относящегося к метатипу "отношение", для которой в качестве типа аргумента-заголовка определен кортежный тип TupleType. рассуждения про метатип не понял. пример с конструкцией понял RelVar AS SET OF TupleType в любимом rsl записывается как Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 08:40 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Эта... с тобой острожнее надо быть.... За слова отвечу:) . Конечно в фразе "отношение – это, конечно не описание и не схема, а просто тип" имелось виду:тип отношения - это прото тип. Далее о фразе "отношения могут иметь абсолютно разные check". Здесь подразумевалось, что check должен быть связан не с отношением и не с типом, а с переменной отношения. ИМХО тот факт, что чеки связаны с переменными делает систему гибче. Во всяком случае мы их можем например преопределить при наследовании, а если их ввести в определение отношения, то получилось бы что компоненты использюующие это определение так преопределить не смог бы. Далее....когда когда я говорю о значимых типах - скалярных, кортежных и типах отношениях - это не отношения в смысле РМД, а просто типы. Я с таким же успехом мог сказать "скаляры, кортежи и ....мммм.... коллекции, или наборы или , множества или что то еще повторяющееся. при этом я имел в виду, что а) четко определено то, что повторяется, 2)определно , что это повторяется ( и при необходимости определены ключи).В принципе можно обозвать его как "тип множеств кортежей"(на самом деле не только кортежей но и скаляров - это надо исправить). Я назвал это типом отношением, потому что в точности совсем как тип отношение (и в этом смысле оно ближек основному требованию) но по большому счету цель здесь была не столько ввести тип отношение, сколько просто задать какую то повторяющеюся структуру, какой то набор, какое то множество. Отношении и переменные отношений, с которыми я потом работаю, и к которым веду - они появляются в общем то в другом...мммм... представлнении (хотя их имена и их структура опрелделяются здесь). Это другое представлении оперирует только отношениями и переменными отношений (РМД именно здесь). Заодно, надо отметить, что ты сужаешь понятие переменной отношения.Да. Схема данного компонента должна быть одинаковой. иначе не выйти на это другое представление. рассуждения про метатип не понял.Это я из замулина взял.... Не знаю насколько правильно :) Вот смотри. Создавая объект класса а ты можешь использовать в консруктре некое значение в общем то любого типа, например целочисленное. a := new A(integervalue). Здесь А обновременно и имя типа и конструктор. И сэто точки зрения сам описание класса А тоже можно рассматривать как A СLASS { attr_a int;} в общем то абсолютно аналогично.тоже можно рассмтаивать аналонично. CLASS здесь конструктор класса использующия другой тип. И это метатип - то есть "тип типов", опредлделяющий некие своства, общие для своих типов и, соответственно, для их значений. Например, свойство "у любых объектов любых классов есть ID" можно рассмаотривать как свойство, определяемое метатипом CLASS. МНо ведь можно предположить, что в системе может существовать другой метатип, и у его типов будут другие свойства. Например у его экземпляров такой уникальный ID отсутсвует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2005, 12:22 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
мне этот замулин жутко не нравится пока. следующее что не нравится это его понимание спецификации обьекта. бредовое какоето. я это еще читаю. к типам и метатипам. Ночью сообразил, что я хотел сказать. операция конструирования множества из других множеств. читай типов из других типов - совершенно ординарная и рядовая. поэтому я невижу причин, чтобы вводить какието слова типа конструируемый тип, или типа метатип. //все что бесполезно - вредно примеры с чеками приводил, чтобы показать, что предикат естественным образом входит в определение типа. а не переменной. И что авторы других, очень гибких и полных системах, таких как rsl или vdm, пошли по пути включения чека в тип. пысы читаю дальше . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 01:24 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 tchingiz не нравится его понимание спецификации обьектаА что может не нравится? Спецификация = интерфейс, по которому происходит взаимодейтсвие с экземпляром типа(объектом). не вижу причин, чтобы вводить какието слова типа конструируемый тип, или типа метатип. Метатип в сабже я и не ввожу. А конструируемыйи тип... ну если я сначала написал, что существуют базовые типы, то ИМХО логично написать потом что также есть конструируемые. не вижу ничего страшного :) предикат естественным образом входит в определение типаКонечно входит. Только в определение объектного типа. А в этой фразе слово "определние типа" что означает? это спецификация типа или реализация? может предикат переопределяться? А может предикат быть например таким - ((тип_записи = "перевозка" AND логвыр1") OR (тип_записи = "отгрузка" AND логвыр2"))? (Здесь тип_записи это имя атрибута) Если ты дочитаешь до R-переменных то ты надеюсь сможешь представить себе..ммм.... этакую жаккардовую ткань :), где объекты - это нити образующие узоры, а R-отношения - это нити остновы. Значения компонентов находятся в местах преплетения этих нитей и эти значения конролируются предикатами. Когда мы обращаемся к R-переменной (тянем, значит, за нить основы) то значения лежащее в этой переменной конролируется всеми этими предикатами связанными через OR, а применимость этих предикатов к конкретным кортежам определяется объектным типом (нитью рисунка) того объекта где эти кортежи образуют значение компонента(место персечения основы и рисунка). То есть вместо поля тип_записи из моего вопроса мы смотрим на объектный тип. Мы R-переменные явно нигде не описывает и не орпделяем. Мы не можем сказать, что для этой переменной дествует такой предикат, никак вообще - ни связывая его со схемой перменной, ни связывая его с самой переменной потому что явно ни то ни другое не определяется. Вот мы их и задаем, используя объектный тип. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2005, 18:28 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
В сабж внесены некоторые изменения и исправления. Вместо "объектов предметной области" говорим о сущностях. Считаем, что "объекты" - это про данные Типы-отношения, используемые для описание компонентов, переименованы в типы-множества (дабы народ раньше времени реляции не искал:). Фактически это одно и тоже. Стр12. в описании отображение заданных для о-типов ключей в ключи R-переменных, во втором пункте речь идет о локальных ключах. Исправлены грамматические АшиПки. В PDF фале есть нормальное оглавление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2005, 11:58 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene предикат естественным образом входит в определение типа А в этой фразе слово "определние типа" что означает? это спецификация типа или реализация? может предикат переопределяться? А может предикат быть например таким - ((тип_записи = "перевозка" AND логвыр1") OR (тип_записи = "отгрузка" AND логвыр2"))? (Здесь тип_записи это имя атрибута) если трактовать тип как множество допустимых значений, то определение типа должна давать ответ на вопрос "входит ли предявляемое значение во множество или нет". определение я бы трактовал как синоним спецификация. предикат переопределять нельзя. -- слово специфакация подразумевает однозначное определение. Для неполных или неоднозначных определений так и говорят неполная спецификация. Спецификация обьектов - неполная. задается протип методов и не задается что делает метод. функция f : Real -> Real - это синус или косинус или тангенс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2005, 06:39 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
1 значимые и обьектные типы почему нельзя назвать обьектные типы - классами, а значимые типы назвать просто типами (тип в узком смысле) ? оговорившись, что {типы в узком смысле} == {типы в широком } \ {классы}? скаляры - переменные или константы скалярных типов. будет текст короче и выражение переменная x значимого типа отношение - не будут использоваться. а то фраза похожа на "переменная x константного типа отношение" ))) 2 страница 4 1 Для обьектных типов могут быть заданы локальные, глобальные и внешние ключи, определяемые как набор принадлежащих обьекту полей скалярного типа "Для классов могут быть заданы локальные, глобальные и внешние ключи. Ключи задаются набором полей, которые принадлежат компонетам класса" имхо лучше так. термин поле - тобой определен как элемент системы, служащий для хранения значений скалярного типа. Следовательно поле скалярного типа - тавтология. Позже, в рассмотрении глобальных ключей говорится 2 в глобальный ключ могут входить компоненты скалярных типов или скалярные???? одного из компонентов констуируемых значимых типов (то есть кортежей или отношений) Для обьектного типа можно задавать несколько глобальных ключей a) если имеется ввиду компонента обьекта, то это противоречит 1 b) связка "или" создает иллюзию противопоставления? или скалярные компонеты или поля отношений? это так? я бы так писал в глобальный ключ могут входить скаляры и/или поля переменных типа кортеж/отношений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2005, 07:07 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Глобальный ключ, заданный как набор полей компонента типа отношения, определяет, что кортеж, входящий в этот компонент уникален во всех сущестующих в системе обьектах этого типа, в том числе и пределах каждого обьекта. Таким образом глобальный ключ является более строгим ограничением чем локлальный ключ, и, будучи определен, может полностью заменить его. 1 предложение красного цвета - очевидно. имхо( ты же не учебник для студенток 1 курса пишешь.) убрать. 2 есть ли отличия от случая, если глобальный ключ, будет задан как набор полей компонента типа кортеж? по моему - нет. Такой кортеж должен быть уникален во всех обьектах все равно. Отметим, что если для типа задан глобальный ключ, определнных на полях компонета типа отношения, то для каждого обьекта этого типа, одновременно может существовать множество уникальных значений этого обьекта эта фраза малопонятна вообще 3 слово переменная отношения ввели же? почему нельзя говорить вместо компонента (подразумевается компонета обьекта) типа отношение - компонента отношение. Более того, компонентой ты назвал атрибут и метод обьекта. Под компонентой типа отношения всегда имеется ввиду атрибут же? атрибут (переменная или константа) отношение - очень хорошо звучит. кстати, [qout] Локальный ключ задается для компонетов типов отношений [/qout] в свете вышесказанного я бы написал. локальный ключ задается для атрибутов отношение. Но и в твоей форме както не порусски. для компонентов типа отношение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2005, 07:44 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 tchingiz значимые и обьектные типы почему нельзя назвать обьектные типы - классами, а значимые типы назвать просто типами (тип в узком смысле) ? оговорившись, что {типы в узком смысле} == {типы в широком } \ {классы}? Можно, конечно, но мне термин "класс" сильно не нравится. связка "или" создает иллюзию противопоставления? или скалярные компонеты или поля отношений? это так? Да. ПО поводу остального - я смотрю и исправляю. Ну может не все и не точно так, как ты сказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2005, 11:59 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
1 зато класс короче и устраняет фразы обьектного типа. 2 я тут подумал, что атрибут затасканное слово. у тебя атрибут это часть обьекта, но атрибут - это колонка из отношения тоже. в связи с этим мне кажется есть тонкость. переменая (атрибут, тип ) отношения и переменная (атрибут, тип) отношение читаются по разному. если слово отношение не склонять, то оно превращается в название атрибут отношения - это колонка из отношения, а атрибут отношение - вполне можно понимать как сокращение фразы "атрибут такогото обьекта, который имеет тип отношение" 3 раз это не иллюзия, то надо более внятно определить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2005, 02:43 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
например. дай определение класса, как типа, который находится в отношении наследования с другим типом, и все. переманная обьектного типа - просто обьект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2005, 02:45 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
вот рассмотрели набор типов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Рассматриваемый здесь набор значимых типов. бла бла бла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 00:22 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
отношения на 4 странице отнес к значимым типам. на 6 соответствующее отношение будем называть собственным отношением обьектного типа. какая нужда в 4 словах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2005, 00:26 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
1) Вместо "Рассматриваемый здесь набор значимых типов....." сделал "Предлагаемый в НРМ набор значимых типов...." 2) авторотношения на 4 странице отнес к значимым типам. на 6 соответствующее отношение будем называть собственным отношением обьектного типа. какая нужда в 4 словах? В новой версии в значимых типах уже убрал тип отношение и заменил его на тип множество. Я понимаю, что это можно понять, что де отношение (т.е. значение) является значением этого типа - но здесь другое имеется в виду. Фраза "собственным отношением обьектного типа" означает, что множеству объектов объектного типу соотвествует отношение (т.е. значение). Я уже говорил про бочку и про ее две проекции - сверху круг, сбоку прямоугольник. ИМХО многое , что делается в этой области напомниает попытки построить квадратуру круга. У меня наоборот - две проекции остается, просто вводятся точки, которые эти проекции связывают (это имена). Соответсвенно 1) в одной проекции есть разные типы... ...значимые (скаляры в т.ч. ссылки, кортежи, множества ) ...объектные типы - и в этой проекции можно строить сложные схемы данных 2)в другое проекции есть только тип отношения. Схема данных в этой проекции определяется набором типов, существующих в проекции (1). Соответсвенно фраза "собственное отношение объектного типа" имеет две части "отношение" (оно из проекции (2) ) и "объектного типа" (этот тип из проекции (1) ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2005, 09:57 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
1 угу. кроме того, абзац "Предлагаемый в НРМ набор значимых типов" смахивает на доказательство. ты пытаешься доказать, что введение значимых типов удовлетворяет основному требованию. (необходимость доказывается). в математике делают так. и это правильно. идет постулат - твое требование. дается определение - вводятся значимые типы. идет теорема(лемма) - о чемто там. в данном конктерном случае, о том, что введенные типы удовлятворяют постулату. Если бы все шло подряд - было бы логичнее. Можно еще и над достаточностью подумать. То есть, что постулат влечет наличие, такое системы значимых типов. Что набор введенных значимых типов не может быть другим. далее. про ссылочные типы, в начале стоит фраза - оних позднее. все читаю не могу добраться до этого позднее. 2 >собственным отношением обьектного типа. я посмотрел в рамблере фразы "собственное отношение" sql "собственное отношение" "база данных" ничего не выдают. Значит словосочетание собственное отношение можно нагрузить таким смыслом, которым ты сочтеш нужным. то есть вместо "собственное отношение обьектного типа" смело писать "собственное отношение" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 03:20 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Евгений, есть ли возможность с вами связаться для личной беседы? email в профиле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2005, 13:44 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
На Computing Research Repository размещена версия на английском языке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 19:22 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Выложил очередную версию . Добавлена небольшая глава, содержащая вывод, который, на мой взгляд, заслуживает отдельного повтора. НРМРассуждения такого рода применимы к структурам с любым числом вложенных ссылок.Напомним, что мы исходим из того, что объектные типы, образующие эти структуры, соответствуют основному требованию Н РМ. Можно утверждать, что определение сложной ссылочной структуры, в которой корректно путевое выражение n1.*.nn.nm. *.nz (где ni – любые, не обязательные разные, имена, а знак * означает произвольную последовательность таких имен) можно рассматривать как определение переменной отношения с именем n1.*.nn , в котором определен скалярный атрибут с именем nm.*.nz. Данное правило является универсальным правилом, определяющим существования и именования R-переменных и их атрибутов в R*O системе. Не думаю, что это утверждение вызовет горячий спор. Однако оно позволяет утверждать мне, что озвученные в соседних топиках слухи о скором конце РМД мягко говоря преувеличены. Скорее наоброт. Описание сложных структур - это всего лишь более изощренный способ определения отношений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 19:44 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
С учетом того, что на практике РМД даже не начиналась, слухи о ее скором конце не просто преувеличены - это обыкновенная утка. То есть утки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2006, 23:36 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
1) На практике много чего не начиналось :) Например Машина Тьюринга, ядерный синез, искуственный интелект и т.п. 2)Что же касается РСУБД, то на практике они как раз начинались. Вот пример . PS..... мысли о том, что РМД на практике не начиналась, похожи на мысли человека, который уяснив простую арифметику (типа 2+2=4), смотрит на счеты (те, которыми раньше счетоводы пользовались) и говорит "и где тут цифра '2'? где тут цифра '4'? где '+' и '='? ....нет этого!...а значит нет в ваших счетах арифметики..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2006, 09:27 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Не понял почему Datahor - это начало РСУБД на практике. Где там реализация именно РМД ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2006, 13:37 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Евгений, а вы писали Паскалю, Дарвену или Дейту по поводу своих идей? Если да, то был ли ответ, если нет, то почему не писали? Просто интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 06:32 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene: В чем выражаются Ваши объектные расширения к РМД? В отображении состояния объекта через отношение? В чем по вашему заключаются особенности объектной модели? Не дожидаясь ответа попробую высказать свое мнение. Главная (прежде всего практическая важность) объектной модели заключается в ведении понятия иерархия типов. Отсюда вытекают и другие понятия и идеи (наследование) Как вы можете представить это в своей модели? К сожалению, ваши упрощения (тип - множество значений) слишком напоминают ошибочный подход mirа. Даже его главный кумир (Дэйт) все чаще пытается уточнить тип и определяет его, как минимум, именованное множество значений. Возможно поэтому он (Дэйт) ушел от своего старого любимого термина домен. Мне кажется вы не сможите расширить РМ извнутри средствами самой РМ, ИМХО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 13:26 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Прежде чем высказывать свое высокомудрое мнение в этой теме человеку, который понимает в ней на два порядка больше вашего, не вернуться ли вам в тему ОРБД. сравнение объектных расширений реляционных СУБД , откуда вы так позорно сбежали, не ответив на многочисленные конкретные вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 14:02 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 okdoky Так дочитайте же до конца, потому что в этом тексте именно эти Ваши многчисленные "как" и рассматриваются....и опять же, не будете выглядеть как человек, который дальше трех абзацев не читает:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 14:22 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene: Да, возможно ответить одним абзацем на несколько вопросов не так просто :). В этом смысле у вас такое же положение как уменя с mir, который предпочитает заваливать вопросами не читая ответы до конца (или не читая с начала). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 14:41 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
mir: Предлагаю Вам для упрощения диалога задавать вопросы и одновременно давать им ответ, так же как это сделал я в диалоге с U-gene. Мне (как и U-gene) будет намного легче отвечать. В крайнем случае, можно воспользовать вариантом ДА-НЕТ :). Весьма желательно, конечно, чтобы вопросы соответствовали топику!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 15:02 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 okdoky В свою очередь, предлагаю вам немного занятся самообразованием в области математики, логики и баз данных. Глядишь, в головушке прояснится, а все ваши вопросы отпадут сами собой, как дурацкие. Кстати, если вам так интересно задавать вопрос, тут же давая на него свой ответ, вам форум и не нужен. Вы полностью самодостаточны. Осталось лишь освоить партеногенез. P.S. Как я понял, ни на один к вам вопрос ответа не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 17:06 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
mir: Уважаемый mir. Возможно, вы как и ЧАЛ, уверены в своей непогрешимости. Но, повторюсь специально для Вас. Пожалуйста, внимательнее читайте сообщения авторов форума. В диалоге важно не только давать ответы (и тем более вопросы), но и выслушивать (прочитывать) эти ответы. При этом лучше их понимать в целом и даже в контексте, а не так, как это делаете вы, по частям. Вы как всегда недопоняли. Мои ответы, это - предположения или мнение, которое вытекает из предыдущих сообщений автора. Или Вы не даете мне право на свое мнение? Прочитайте еще раз: okdoky U-gene: В чем выражаются Ваши объектные расширения к РМД? В отображении состояния объекта через отношение? В чем по вашему заключаются особенности объектной модели? Не дожидаясь ответа попробую высказать свое мнение. Главная (прежде всего практическая важность) объектной модели заключается в ведении понятия иерархия типов. Отсюда вытекают и другие понятия и идеи (наследование) Как вы можете представить это в своей модели? К сожалению, ваши упрощения (тип - множество значений) слишком напоминают ошибочный подход mirа. Даже его главный кумир (Дэйт) все чаще пытается уточнить тип и определяет его, как минимум, именованное множество значений. Возможно поэтому он (Дэйт) ушел от своего старого любимого термина домен. Мне кажется вы не сможите расширить РМ извнутри средствами самой РМ, ИМХОЯ вовсе не претендую в отличие от Вас на исключительную правоту своих ответов. Даже даю возможность U-gene дать не только правильный ответ, но и опровергнуть мое мнение. Надеюсь, U-gene найдет время для этого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 19:09 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 okdoky А можно, я не буду давать Вам "правильный" ответ? Ну хотя бы потому, что мои "упрощения" слишком уж напоминают "ошибочный" подход mir a/ У меня другого нет. Используемое мною определение типа для меня фактически является аксиомой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2006, 22:20 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 mir Писал, порой они отвечали на dbdebunk.com, порой через майл. Но мои вопросы не касались НРМ - мне более интересно было выяснить некоторые моменты ТТМ. И могу сказать, что в целом ТТМ выглядит как крепость - в том смысле, что есть подойти близко и ковырять по камешкам, то вряд ли получиться сделать дырку :). Хотя на один из моих вопросов я так и не получил ответа (за исключением сообщения от Паскаля, о том, что он пересылает этот вопрос Дарвену). "...initial assumption, which these reasonings and conclusions are built on, does not seem to me full. I mean the question " What concept in the relational world is the counterpart to the concept "object class" in the object world?" and two answers 1. domain = object class 2. relation = object class ИМХО на этом утверждении, которое проскальзывает в самом начале ТТМ весь ТТМ и построен.Его нельзя назвать неправильным, но... I'm not sure that these two answers (of course, the first one is true and second one is false) are only possible ones. And what is more - I'm not sure, that the question itself is only one question we should answer to find relationship between objects and relations. Really these assumptions look like just your personal opinion, because there is no any argument for adequacy of only these cases. ...нигде не сказано, что оно является единственно возможным. Другими словами позможны принипиально другие варианты. How can you argue this assumption?..." ...ИМХО и надеюсь, что один из этих вариантов рассматривается в НРМ." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 18:22 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Почему Объектному типу GoodsMotion соответствует R-переменная этого типа GoodsMotion со схемой (OID:DOID, No:INTEGER, DateOfAction:DATE, FromWarehouse:Warehouse, ToWarehouse:Warehouse, MovedItems.Article:STRING, MovedItems.Quantity:INTEGER). а не MovedItems.Art: Article, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 18:47 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Да. спасибо, описался. Исправлю. Конечно схема R-переменной полностью соответствует схеме компонента +Object():TOID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 19:01 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Из той же оперы авторПример. Определение объектного типа GoodsMotion можно также [ в том числе?] рассматривать как объявление R-переменной компонента типа GoodsMotion.MovedItems со схемой (OID, Article, Quantity). Соответственно, проекция Object(GoodsMotion.MovedItems WHERE Article = "art1") вернет значение, представляющее собой множество OID объектов, которые описывают движения товаров с артикулом "art1". cо схемой (OID:DOID, Art:Article, Quantity:INTEGER).? WHERE Art.No = "art1" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 19:03 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
с.5: Локальный ключ может задаваться для компонентов-множеств. В него входят поля, определяющие уникальность входящих в множество скаляров или кортежей в пределах компонента объекта (при этом в разных объектах эти скаляры или кортежи, конечно же, могут повторяться). В случае отсутствия явно определенного локального ключа подразумевается, что элементы множества различаются по своему полному значению, или, другими словами, что структура ключа совпадает со структурой элементов множества. c.12: Как мы сказали, схема R-переменной компонента типа t.a представляет собой схему компонента a, дополненную атрибутом OID. Ключи переменной t.a также однозначно определяются ключами, заданными для этого компонента. Возможны три случая: • если для компонента a определен глобальный ключ, ключ соответствующей переменной t.a содержит в точности те же поля, что и этот глобальный ключ (это относится и к внешним ключам); • если для компонента a определен локальный ключ, ключ соответствующей переменной t.a содержит поля, входящие в указанный локальный ключ, а также поле OID; • если для компонента a ключ не определен, ключ соответствующей переменной t.a содержит единственное поле OID. ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 19:14 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Постараюсь быть максимально кратким в объяснении своего мнения. Кажется оно Вам не очень-то интересно. Любые идеи и взгляды сторонников объектных, объектно-реляционных, сетевых, иерархических и прочих подходов на этом форуме жестко пресекаются. Только РМД является абсолютно истинной и непререкаемой. Возможно поэтому часто нормальная дискуссия уходит из конструктивного русла… Впрочем, подшутить друг над другом для разрядки я и сам непротив. Итак, начнем с аксиом. Согласитесь, что любое правильное дело должно начинаться с правильных слов. Хотя согласно той же математической логике, которую часто предлагает изучить mir, истина может порождаться не только истиной, но и ложью. Аксиома, которую я предлагаю, имеет вид Тип есть описываемое (или определяемое) множество значений. В чем преимущество такого определения? Оно позволяет тип непосредственно ассоциировать с описанием множества значений, фактически даже определять как просто описание. В свою очередь это позволяет конструировать сложные типы, состоящие из простых. Даже Вы в своей статье (ссылке) начав с упрощенного определения типа как множества значений незаметно переходите к «спецификациям» типа. К сожалению у меня нет под рукой Введения в системы БД Дэйта на которого Вы как и mir равняетесь. На одной из страниц он фактически отказывается от своего старого определения отношения и составляющих его доменов только через скалярные значения. Даже признается, что это была его ошибка или неточность. Хотя он тут же поправляется и говорит, что отношение со значениями (объектами) любой сложности всегда можно нормализовать, то есть привести к множеству кортежей состоящих из скалярных значений. Соответственно не думаю, что своей статьей вы его в чем удивите ИМХО. Скорее всего Дэйт понимает прежде всего практическую важность использования в качестве значений не только скаляров, но и сложных объектов. Ваши предложения связанные с объектными и реляционными проекциями (извините за мои формулировки, спешу) больше мне напомнили попытки разбирать и собирать автомобиль. Часто ту или иную деталь автомобиля можно легко найти не разбирая его. Кроме того Вы разобрав автомобиль (или систему) не сможете гарантировать что не потеряете какую-либо связь между деталями. Ну а сколько времени потребуется чтобы его разбирать и собирать? Простейший пример с таблицей, которую любят и понимают сторонники РМД. Отдел; Ученики a; {b1,b2,b3} Она имеет несколько непривычный ненормализованный вид. Но абсолютно очевидно, что можно сразу перейти от класса ко всем ученикам. Для этого совсем необязательно использовать таблицу Класс; Ученики a; b1 a; b2 a; b3 Первая таблица более наглядна и семантически правильна. Мы знаем, что учениками класса а является именно множество из b1,b2,b3 а не b1 или b2 или b3. Кроме того первую таблицу проще реализовать на компьютере, то есть использовать ссылки, которые существенно повышают быстродействие. Достаточен лишь один переход от а, не требуются переборы и «разборы». В любом случае, Желаю Вам успехов . Жаль, что не успел разобрать более интересные примеры. Спешу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 19:41 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
с.5: Локальный ключ может задаваться для компонентов-множеств. В него входят поля, определяющие уникальность входящих в множество скаляров или кортежей в пределах компонента объекта (при этом в разных объектах эти скаляры или кортежи, конечно же, могут повторяться). В случае отсутствия явно определенного локального ключа подразумевается, что элементы множества различаются по своему полному значению, или, другими словами, что структура ключа совпадает со структурой элементов множества. Здесь речь идет о локальном ключе для компонента-множества. ("Локальный ключ может задаваться для компонентов-множеств.....") То есть если речь идет о компоненте множестве, то подразумевается, что в случае, когда ключ явно не определен , ключевыми считаются все атрибуты и это ключ считается локальным. Между 5-й и 12 страницей есть еще НРМ с6...Значение компонента-кортежа можно рассматривать как значение задаваемого схемой этого кортежа отношения с одним-единственным кортежем. Замечание. Мы считаем, что для отношений, однозначно состоящих из одного-единственного кортежа , ключ задавать не нужно. Подразумевается, что ключи, определяющие уникальность кортежей в пределах отношения и позволяющие организовать доступа к каждому среди этих кортежей, в случае, когда отношение имеет один кортеж, попросту не нужныВ принципе "отношений однозначно состоящих из одного-единственного кортежа" звучит криво звучит. Тут важно понимать, что то, что написано на с6 - это всего лишь связка между предлагаемыми значимыми типами (скаляры, кортежи, множества) и основным требованием - "состояние объекта = множество отношений". Идея в том, что если компонент есть множество, то у него всегда есть ключ (хотя бы локальный, и система должна гарантировать , что такой ключ существует, даже когда он явно не определен). а у компонента-скаляра локалный ключ вообще не нужен...ну и нет его. Страницу 12 НРМ с12Возможны три случая: • если для компонента a определен глобальный ключ, ключ соответствующей переменной t.a содержит в точности те же поля, что и этот глобальный ключ (это относится и к внешним ключам); • если для компонента a определен локальный ключ, ключ соответствующей переменной t.a содержит поля, входящие в указанный локальный ключ, а также поле OID; • если для компонента a ключ не определен, ключ соответствующей переменной t.a содержит единственное поле OID.надо читать с учетом этого. [/quot]надо читать с учетом этого. Ну или можно это написать по другому - что для компонентов скаляров (или кортжей) ключ соответствующей R-переменной t.a содержит единственное поле OID. Спасибо - подумаю как переписать, что бы вопросов не возникало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2006, 19:46 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
okdokyПостараюсь быть максимально кратким в объяснении своего мнения. Кажется оно Вам не очень-то интересно. Любые идеи и взгляды сторонников объектных, объектно-реляционных, сетевых, иерархических и прочих подходов на этом форуме жестко пресекаются.Это неправда. Во-первых, никто из «сторонников» РМД не может «жестко пресечь» никого, т.к. все здесь равноправные участники, и все могут писать все что угодно в рамках приличий. А вот жесткая критика мнений друг друга часто встречается, но она гораздо чаще встречается внутри реляционного сообщества. Что касается «идей и взглядов сторонников объектных, объектно-реляционных, сетевых, иерархических и прочих подходов», то не надо всех людей валить в одну кучу. Жесткой критике подвергаются только необоснованные ничем утверждения отдельных персон, проистекающие от простого недостатка знаний и маниакального нежелания таковые знания приобрести (к сожалению, среди людей, использующих РСУБД, таковых персон тоже огромное количество). Но особое внимание, разумеется, привлекают самозваные «критики» реляционной модели. Они мнят себя мега-теоретиками и ниспровергателями «мифов», но обсуждение быстро выявляет, что они просто-напросто плохо знают то, что берутся критиковать. Среди особо одиозных засветились некто Чернышов Андрей Леонидович (aka ЧАЛ и множество подставных ников), некто Шуклин и некто okdoky. okdokyТолько РМД является абсолютно истинной и непререкаемой.Такие как вы часто любят называть сторонников РМД религиозными фанатиками. На самом деле, как известно, именно РМД прямо основана на математике и логике и имеет мощную теорию, подкрепленную практикой десятилетий (даже в таком несколько извращенном виде, какой дал SQL). А противники РМД в плане теории выглядят… бледно или никак, а в плане практики аналогично. Вот и выходит, что за «нами» — знания, наука и практика, а за «вами» — только вера в свою правоту. То есть пока что религиозные фанатики — это как раз «вы». okdokyИтак, начнем с аксиом. Согласитесь, что любое правильное дело должно начинаться с правильных слов. Хотя согласно той же математической логике, которую часто предлагает изучить mir, истина может порождаться не только истиной, но и ложью. Аксиома, которую я предлагаю, имеет вид Тип есть описываемое (или определяемое) множество значений. Интересно, что здесь вашего? Вам уже миллион раз процитировали, что тип — это как раз и есть множество значений. (Иногда в определение типа включают и операции над значениями типа, но это слабо обосновано, т.к. чтобы определить операцию, надо уже иметь тип операндов и тип значения. То есть операции ассоциированы с типом, но не определяют тип.) okdokyВ чем преимущество такого определения? Перед чем? okdokyОно позволяет тип непосредственно ассоциировать с описанием множества значений, фактически даже определять как просто описание. В свою очередь это позволяет конструировать сложные типы, состоящие из простых. Даже Вы в своей статье (ссылке) начав с упрощенного определения типа как множества значений незаметно переходите к «спецификациям» типа. Если бы вы не прогуляли на первом курсе лекцию по теории множеств, или хоть раз открыли книжку по математике, вы бы узнали, что множества по аксиоматичному определению могут задаваться либо прямым перечислением элементов, либо правилом (законом, спецификацией), в том числе на основе другого множества. Поэтому в определении типа как множества уже заложено «автоматом», что тип можно задать как перечислением, так и правилом (спецификацией). А вы тут надуваете щеки. okdokyК сожалению у меня нет под рукой Введения в системы БД Дэйта на которого Вы как и mir равняетесь. На одной из страниц он фактически отказывается от своего старого определения отношения и составляющих его доменов только через скалярные значения. Даже признается, что это была его ошибка или неточность. Да он признает свою ошибку, но ошибка и была вызвана «отходом» от РМД и математики. Поскольку отношение (в отличие от переменной отношения) является значением соответствующего типа ( типа отношения , задаваемого схемой отношения), то на этих значениях можно строить другие отношения. То есть РМД стала еще «чище», еще ближе к математике и при этом еще мощнее. И вообще, теория сложных типов и операций уже неплохо проработана. В его ВвСБД 8 изд. этому отведена целая глава, более того, он и Хью Дарвен написали целую книгу «Databases, Types and the Relational Model», вышло уже 3 издание (к сожалению в России не издавали). Это не говоря о 3 Манифесте. Евгений Григорьев ведет обсуждение этого вопроса на высоком уровне, зная об имеющихся результатах. Короче, люди такую мощную и подробную теорию развивают многие годы, а вы, путаясь в основных простейших понятиях, беретесь давать свои «определения» и предлагать свои «аксиомы» и свою «критику». Вам самому не видно, что это по меньшей мере смехотворно? okdokyВаши предложения связанные с объектными и реляционными проекциями (извините за мои формулировки, спешу) больше мне напомнили попытки разбирать и собирать автомобиль. Часто ту или иную деталь автомобиля можно легко найти не разбирая его. Кроме того Вы разобрав автомобиль (или систему) не сможете гарантировать что не потеряете какую-либо связь между деталями. Ну а сколько времени потребуется чтобы его разбирать и собирать? Об автомобилях говорят на других форумах, автомобильных. Вам туда. Если же собрались обсуждать теорию БД, то попробуйте говорить на языке теории БД, вместо того, чтобы изливать нерелевантный поток сознания. okdokyПростейший пример с таблицей, которую любят и понимают сторонники РМД. Отдел; Ученики a; {b1,b2,b3} Она имеет несколько непривычный ненормализованный вид. Комментарий: если атрибут Ученики имеет соответствующий тип, скажем, тип отношения с одним атрибутом, то ничего ненормализованного здесь нет. okdokyНо абсолютно очевидно, что можно сразу перейти от класса ко всем ученикам. Для этого совсем необязательно использовать таблицу Класс; Ученики a; b1 a; b2 a; b3 Ну и что? Оба решения имеют свои плюсы и минусы. Уверен, что вы о них не подозреваете. Хотя бы что вы скажете об обеспечении ссылочной целостности в первом решении (с вложенным множеством)? okdokyПервая таблица более наглядна и семантически правильна. Дайте определения понятиям «наглядность таблицы» и «степень семантической правильности таблицы». Иначе это не более чем наукообразная белиберда. okdokyМы знаем, что учениками класса а является именно множество из b1,b2,b3 а не b1 или b2 или b3. Это мы знаем из любого варианта решения. okdokyКроме того первую таблицу проще реализовать на компьютере, то есть использовать ссылки, которые существенно повышают быстродействие. Достаточен лишь один переход от а, не требуются переборы и «разборы». Ой-ой-ой! Да вы что-то вообще ничего не знаете о том, как работают современные РСУБД. okdokyЖаль, что не успел разобрать более интересные примеры. Спешу...Какое счастье, что не успел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2006, 09:21 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Ну или можно это написать по другому - что для компонентов скаляров (или кортжей) ключ соответствующей R-переменной t.a содержит единственное поле OID.В то время как ключ компонента-множества должен иметь по крайней мере два поля. Причем некоторые из них - тоже OID. Понятно. Вопрос про разные объектные типы, использующие одно отношение. В реляционном отношении OIDы, являющиеся членами ключа, абсолютно симметричны. Например CREATE CLASS Warehouse { Address STRING; ResourceItems SET OF ArtQty CONSTRAIN LOCALKEY Art; } задает Warehouse.ResourceItems(Warehouse:Warehouse:DOID, Art:Article:DOID -> Quantity:INTEGER) где Warehouse и Art равноправно входят в ключ. А значит, то же отношнение (с точностью до имен ) задается и компонентом StockItems типа ArticleStock CREATE CLASS ArticleStock { Art Article; StockItems SET OF WhouseQty -- аналогично ArtQty CONSTRAIN LOCALKEY Whouse; } Логично предоставить возможность маппирования таких компонент на одно отношение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2006, 11:30 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
mirЕсли бы вы не прогуляли на первом курсе лекцию по теории множеств, или хоть раз открыли книжку по математике, вы бы узнали, что множества по аксиоматичному определению могут задаваться либо прямым перечислением элементов, либо правилом (законом, спецификацией), в том числе на основе другого множества. Поэтому в определении типа как множества уже заложено «автоматом», что тип можно задать как перечислением, так и правилом (спецификацией). А вы тут надуваете щеки.Вы хотите чтобы наш диалог был конструктивным? Если да, давайте меньше отправлять друг друга в библиотеку, выяснять кто больше надувает щеки, кто и на сколько порядков умнее. U-gene обиделся только за то, что я слегка скептически отнесся к его подходу, а Вы по сути переходите на личность. Нам нужно давно уже понять, что сторонники реляционной модели не понимают все тонкости объектного подхода, и наоборот, сторонники ОМД не понимают терминологию и тонкости РМД. Для этого я ранее и предложил не только задавать вопросы, но и самому отвечать. А главное аргументировать, объяснять, свое мнение. Вы даже не пытались внимательнее отнестись к моему сравнению с автомобилем. А ведь именно в нем раскрывается отличие О и Р подходов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2006, 14:08 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
okdokyВы хотите чтобы наш диалог был конструктивным? Если да, давайте меньше отправлять друг друга в библиотеку, выяснять кто больше надувает щеки, кто и на сколько порядков умнее.Если бы речь шла не об элементарных вещах, изучаемых в любом вузе, то вас бы никто не укорял. А если хотите, чтобы диалог был конструктивным, то 1) приводите строгие аргументы в пользу своих высказываний, цитаты, ссылки и 2) отвечайте на задаваемые вопросы. У вас по обоим пунктам пусто. Так что ж вы обижаетесь? okdokyНам нужно давно уже понять, что сторонники реляционной модели не понимают все тонкости объектного подхода, и наоборот, сторонники ОМД не понимают терминологию и тонкости РМД. Какие-такие тонкости объектного подхода вам понятны, а, скажем, мне -- нет? Если я по OOA&D лекции читаю и практикую его десять лет на практике. А про терминологию и тонкости РМД -- не знаете, сприсите или прочитайте. Претензий не будет. Но беретесь критиковать -- обязаны знать предмет критики. okdokyА главное аргументировать, объяснять, свое мнение. Золотые слова. Когда ж вы начнете? okdokyВы даже не пытались внимательнее отнестись к моему сравнению с автомобилем. А ведь именно в нем раскрывается отличие О и Р подходов.И желания разбирать нет. Ваv что-то "показалось", ну и что? Изложите без ваших странных ассоциаций, техническим языкам, тогда и поговорим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2006, 15:18 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
okdokyU-gene обиделся только за то, что я слегка скептически отнесся к его подходу, а Вы по сути переходите на личность:)Ой, да бросьте Вы, ей богу. Во-первых видно, что Вы про этот подход в общем то совсем некопенгаген (иначе не стали бы спрашивать про "объектные расширения РМД"), поэтому как Вы к нему относитесь - скептичски или оптимистички - оно на этом этапе как то по барабану. Еще раз. Прошел вопрос okdokyВ чем выражаются Ваши объектные расширения к РМД? В отображении состояния объекта через отношение? В чем по вашему заключаются особенности объектной модели? Не дожидаясь ответа попробую высказать свое мнение. Главная (прежде всего практическая важность) объектной модели заключается в ведении понятия иерархия типов. Отсюда вытекают и другие понятия и идеи (наследование) Как вы можете представить это в своей модели? К сожалению, ваши упрощения (тип - множество значений) слишком напоминают ошибочный подход mirа. Даже его главный кумир (Дэйт) все чаще пытается уточнить тип и определяет его, как минимум, именованное множество значений. Возможно поэтому он (Дэйт) ушел от своего старого любимого термина домен. Мне кажется вы не сможите расширить РМ извнутри средствами самой РМ, ИМХО Что касается первой части, я сразу же посоветовал прочитать предложенные спекуляции до конца (а не до третьего абзаца). На вторую часть я внимание не обращал, посколько надеялся, что по прочтению станет явно, что НРМ немного совсем не о том. Но В Вы еще раз пытаетесь получить "правильный" ответ. Ответ на что? На первую часть? - читайте по ссылке. На вторую? - это Ваше личное ошибочное мнение (в том числе и непонятные мне "расширения" РМД) не относящееся к НРМ никаким боком. okdokyТип есть описываемое (или определяемое) множество значений Ага... тогда линия - это нарисованное(или изображаемое) множество точек. okdokyНам нужно давно уже понять, что сторонники реляционной модели не понимают все тонкости объектного подхода, и наоборот, сторонники ОМД не понимают терминологию и тонкости РМД. Вы, пожалуста, про себя понимайте, чей Вы сторонник и, следовательно, какие тонкости Вы понимаете меньше :). ИМХО основная тонкость в том, что никаких тонкостей нет и надо попытаться освободиться от многолетней шелухи и выдумок (типа нарисованных точек). okdokyВаши предложения связанные с объектными и реляционными проекциями (извините за мои формулировки, спешу) больше мне напомнили попытки разбирать и собирать автомобиль. Часто ту или иную деталь автомобиля можно легко найти не разбирая его. Типичный подход людей, забывающих что они имеют дело с компьютером, с такой штукой, где все эти ваши машины разобраны на.... ну тогда уж на атомы :) Это множество атомов можно логически представить и как множество разных машин (объектная система), и как множеств а сходных деталей (реляционная система). Однако можно представлять это одно и то же множесто атомов одновременно и так и этак - речь идет именно об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2006, 16:32 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene okdokyТип есть описываемое (или определяемое) множество значений Ага... тогда линия - это нарисованное(или изображаемое) множество точек. Ну наконец-то, лед тронулся, хоть и со смехом. И не просто нарисованное (или изображенное), а нарисованное в определенной последовательности . Мои усилия не пропали даром :). 1.Согласитесь, такое определение линии больше соответствует объектному представлению, где класс, это описание множества. Причем сам класс может быть значением другого класса. 2.Согласитесь, какой бы мощный компьютер не был, ему быстрее и легче оперировать этим описанием (или даже ссылкой), чем множеством значений, многие из которых в данный момент могут даже не существовать в памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2006, 19:08 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
okdokyНу наконец-то, лед тронулся, хоть и со смехом .... Мои усилия не пропали даром :). Юноша, а Вы точно не ЧАЛ (mirumir, antimir, токарь, пекарь, Ораклоидальный мампсист, М программист, ... всех не упомнить)?!! Уж больно КАЧЕСТВО ДЕМАГИГИИ схоже... okdoky 1.Согласитесь, такое определение линии больше соответствует объектному представлению, где класс, это описание множества. Причем сам класс может быть значением другого класса . Может быть че-нибудь почитаем по теории ООП, чтоб не путать тип со значением? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2006, 20:29 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
### как в воду глядел, но маненько промахнулся. Только что получил неопровержимые данные, что mir это ЧАЛ. Про этого юношу okdoky пока точно не известно, завтра постараюсь выяснить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2006, 00:07 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
$$$### как в воду глядел, но маненько промахнулся. Только что получил неопровержимые данные, что mir это ЧАЛ. Про этого юношу okdoky пока точно не известно, завтра постараюсь выяснить.Если я -- это ЧАЛ, то это тяжелейший случай шизофрении, известный в истории: две личности в одном теле постоянно и яростно спорят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2006, 07:12 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 ### Okdoky не ЧАЛ, уровнем пожиже, да и агитирую они за разное (ЧАЛ за MUMPS, Okdoky за ZigZag). Что-то мы хорошую тему своми разборками за@#али. Надо здесь завязывать с оффтопом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2006, 07:15 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene (в том числе и непонятные мне "расширения" РМД) не относящееся к НРМ никаким боком. Собственно этого ответа спрятанного в прочую «шелуху» достаточно было, чтобы снять все мои вопросы и скептицизм. Речь не идет об объектных расширениях. Вас также не интересует то как компьютер будет работать с объектами. Осталось только угомонить чертиков из разных миров и вспомнить точные определение класса согласно ООП Под классом подразумевается некая сущность, которая задает некоторое общее поведение для объектов. Таким образом любой объект может принадлежать или не принадлежать определенному классу, то есть обладать или не обладать поведением, который данный класс подразумевает. А ведь и действительно чушь ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2006, 19:25 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
okdokyОсталось только угомонить чертиков из разных миров и вспомнить точные определение класса согласно ООП Под классом подразумевается некая сущность, которая задает некоторое общее поведение для объектов. Таким образом любой объект может принадлежать или не принадлежать определенному классу, то есть обладать или не обладать поведением, который данный класс подразумевает. А ведь и действительно чушь ... Это определение так же далеко от точного, как Арктика от Антарктики. Данное определение вообще хуже многих, поскольку, скажем, (1) говорит только о поведении, не упоминая состояние и (2) опирается на понятие "сущность", которое строго не определено. Зря вы думаете, что все так просто. Вообще, проблема с точным универсальным определением класса в ООП, согласующимся с унаследованными понятиями из программирования и математики, до сих пор не решена. Для примера, на той же русской википедии в другом топике дается такое определение: http://ru.wikipedia.org/wiki/Объектно-ориентированное_программированиеС появлением концепции ООП появилась новая структура данных - Класс. Это по сути дела тип данных , внешне похожий на структуру (в языке Си) или запись (в Pascal-е), в котором кроме данных (свойства) также содержались функции их обработки (методы). Английская википедия дает еще варианты: http://en.wikipedia.org/wiki/Class_(computer_science)In object-oriented programming, classes are used to group related variables and functions. A class describes a collection of encapsulated instance variables and methods (functions), possibly with implementation of those types together with a constructor function that can be used to create objects of the class. Определения, даваемые "тремя друзьями", довольно непоследовательны и запутаны. Вот пара цитат из их книги Grady Booch, James Rumbaugh, and Ivar Jacobson, THE UNIFIED MODELING LANGUAGE USER GUIDE, Addison-Wesley, 1999: "The classes, types, interfaces, and data types defined in the UML model are, within OCL, considered to be classes of which instances can be made" И "Each class, interface, or type in a UML model is automatically a type" Корочем, они то считают типы классами, то классы типами, то разделяют их. Бардак полнейший. Если вам хочется серьезно вникнуть в эти проблемы, почитайте, скажем, обстоятельную статью Дейта в 2 частях "BASIC CONCEPTS IN UML: A REQUEST FOR CLARIFICATION", которум можно найти в архиве статей за 2000 г: http://www.dbdebunk.com/f/2001.zip ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 08:38 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 okdoky,mir Коллеги, плз, может создать спец топик? К чему все валить в один? По теме ИМХО НРМ дает ответ как некоторый, достаточно широкий чтобы быть практически полезным, класс иерархических ( плюс ссылки ) структур может иметь реляционное представление а значит использовать реляционные операции и прочие достижения этой формализации с одной стороны и сохранять компактность манипулирования объектами с другой стороны. Странно требовать от описания некоей МД определения что есть класс вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2006, 10:21 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
ModelR U-gene Ну или можно это написать по другому - что для компонентов скаляров (или кортжей) ключ соответствующей R-переменной t.a содержит единственное поле OID. В то время как ключ компонента-множества должен иметь по крайней мере два поля. Причем некоторые из них - тоже OID. Понятно....на самом деле здесь может быть нагляднее идти в обратную сторону. В Рпроекции существуют R-переменные отношений с обязательным атрибутом Object():DOID. С учетом этого возможны три варианта ключей 1) Единственной ключевой атрибут = атрибут Object() 2) Ключ чочотоит из многих атрибутов и включает поле Object() 3)Ключ не включает поле Object(). соответсвенн 1) один кортеж на объект 2) множество уникальных внутри объекта кортежей на объект 3) все кортежи всех объектов уникальны. ModelR ... Логично предоставить возможность маппирования таких компонент на одно отношение. Было такое Получается что схема К-переменной = (схема компонента + Object() + S) где S - идентификатор, представляющий смысл данного кортежа в контексте объекта. (Так например написано в статье "Модель "Объект-Качество"").В свое время бродили у меня идеи, что де S(смысловой идентификатор) можно рассматривать как идентфикатор некого специального объекта, описываещего некую семанатику, а у таких объектов могут быть свои связи, а у типа (или типов) этих объектов могут быть связи по типу наследования, а еще все свяжется с объектными типами... в общем может выйти некая паралельная смысловая сеть, которая возможно позволит какие-то такие манипуляции с данными, про которые я даже сказать ничего не могу, потому как дальше сказанного я в общем-то и не думал. В НРМ это просто не нужно. Тут важно понимать, что целью НРМ не явлется описание того, как можно маппировать структуры. Не очень люблю это слово потому, что оно часто нагружается идеей о том, что однозначное отображение одной структуры в другую нужно для последующего аутоматичного обмена данными(значениями) между ОО-программой и РБД. Оно конечно можно, но идея в том, что такое однозначное отображени позволяет вообще отказаться от OO программы (как отдельного набора сложных переменных), ну и, соответсвенно, от обмена данными. А для этого выделение S в отдельный атрибут не нужно, поскольку смысл определяется именами R-переменных или их атрибутов, которые так или иначе связаны с именами компонентов объектных типов. А вообще - может быть это и интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2006, 19:24 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Оно конечно можно, но идея в том, что такое однозначное отображени позволяет вообще отказаться от OO программы (как отдельного набора сложных переменных), ну и, соответсвенно, от обмена данными. Не понял, каим образом в принципе можно отказаться от обмена данными между БД и приложением? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 15:20 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Вполне понятно каким образом - путем отказа от приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2006, 20:26 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
ModelRНе понял, каим образом в принципе можно отказаться от обмена данными между БД и приложением? Имеется в виду те объекты приложения, данные о которых храняться в РБД. Клиентское приложение конечно есть. Но вся предметная область описана в БД. То есть это получается уже и не сервер БД, а сервер, обеспечивающий существования объектов, описывающих предметную область. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2006, 20:27 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Странно, чем же может не нравиться: данные об объектах <- команды управления данными об объектах, запросы -> данные об объектах ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2006, 21:55 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
И хде это такое? Нибось в М каком-нить? Чур меня, чур...... тьфу, тьфу, тьфу... примерещится же такое.;))) Но...ждемс...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2006, 00:49 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene А можно нескромный вопрос: как реализовать НРМ ? Варианты ответа: 1. новая СУБД 2. надстройка над существующей СУБД (какой ?) 3. методика НРМ-использования существующих СУБД 4. другое (что ?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2006, 09:17 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
НРМА можно нескромный вопрос: как реализовать НРМ ? А что же здесь нескромного то?:) В НРМ две части.Вторая часть так и называется... НРМv1.09стр25...Часть 2. R*O система изнутри. Возможная реализация... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2006, 10:25 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene Итак, надстройка над РСУБД. Здесь возможны варианты: 1. Создание/модификация новых классов объектов влечет за собой создание новых / модификацию существующих таблиц БД. 2. Структура хранения фиксируется и все классы хранятся в фиксированном наборе таблиц БД. Вы выбрали 1 вар. (?). При этом ессно будет много динамического SQL со всеми соответсвующими проблемами. 2 вариант не рассматривали ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2006, 11:09 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene EAV только один из способов зафиксировать структуру хранения, есть и другие. Но ведь ваш подход предполагает переменную структуру ?. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2006, 12:01 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
модEAV только один из способов зафиксировать структуру хранения, есть и другие. Но ведь ваш подход предполагает переменную структуру ?. Ну вот - опять. Нет отдельно взятой структуры хранения vs. какой-то еще структуры. Нет вообще деления на часть, которая хранит, и что то еще. Данные находятся в одном и том же месте. Надстройка над РСУБД - это транслятор. Вчитался в Ваш вопрос модСтруктура хранения фиксируется и все классы хранятся в фиксированном наборе таблиц БД... Вы где-то что-то явно недопоняли, иначе у Вас такое предположения даже бы и не вознгикло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2006, 12:51 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
[quot U-geneВы где-то что-то явно недопоняли[/quot] Это вы не поняли (возможно по моей вине). Еще раз сначала: Создание/модификация новых классов объектов влечет за собой создание новых / модификацию существующих таблиц БД. Это ваш подход ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2006, 14:11 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
В общем да. Правильней сказать - изменение спецификации компонента объектного типа естественно ведет к изменению его реализации. Если компонент реализован как хранимый, то изменение его структуры ведет к изменнию таблицы, реализующей это хранение. ....:) и все таки это Вы не так поняли - потому как предложили попробовать рассмотреть второй вариант, где "структура хранения фиксируется". ИМХО EAV который является "одним из способов такой фиксации", сводит возможности реляционных систем к достаточно тупому хранению множества простых значений. Это как например взять обои с хорошим рисунком, покрошить их на мелкие квадратики и потом этими квадратиками стены обклеить - и это все потому, что квадратики легче клеем намазывать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2006, 16:43 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Тьфу,тьфу, тьфу, но кажется правильно понял: данные об объектах <- команды управления объектами, запросы -> (активные OБъекты x R-переменные) прогрессивнее, чем: данные об объектах <- команды управления данными об объектах, запросы -> данные об объектах Тогда у НРМ еще большое пространство для развития. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2006, 20:49 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneЕсли компонент реализован как хранимый, то изменение его структуры ведет к изменнию таблицы, реализующей это хранение. ОК. При появлении новых классов появятся новые таблицы, однако как быть с наследованием - ведь старые методы (программы) должны работать с новыми таблицами и без перетрансляции. Нужен динамический SQL, а это вещь не простая. Т.е. ваш подход понятен, но труднореализум (имхо). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2006, 09:31 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
мод...как быть с наследованием - ведь старые методы (программы) должны работать с новыми таблицами и без перетрансляции... ...ИМХО это ваши персональные фантазии на заданную тему :)... Какие старые методы? какие новые программы? Вы о чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2006, 11:16 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene...ИМХО это ваши персональные фантазии на заданную тему :)... Какие старые методы? какие новые программы? Вы о чем? Скорее это к Вам вопрос. Вы о чем? Фантазировать человеку приходится только потому, что Ваши ответы очень абстрактные. Иногда, ощущение, что больше Вы фантазируете (занимаетесь медитацией), то есть не интересуетесь возможностью реализации своих идей и тем, чтобы этот ответ был понят. Поэтому спрашивающий вынужден сам предлагать возможные варианты ответов. И все-таки, как можно реализовать наследование типа в соответствии с вашей моделью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2006, 13:59 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
2 okdoky авторВаши ответы очень абстрактные А прочитать статью то - что не судьба? Там достаточно конкретно описаны принципы, по которым система должна реализовываться... И потом. Вот мод меня пытал про то, изменяется ли струкутра таблиц (это явно говорит о том, что статью он не прочитал, а занимается фантазиями на тему моих сообщений ). Наконец он понял, что да! структура меняется... после чего выдал потрясающую по глубине фразу модНужен динамический SQL, а это вещь не простая.. Скажите, а когда речь с самого начала идет о трансляторе над существующей реляционной СУБД, чего он ожидал то? что там ассемблерный код будет на выходе? Если в лоб реализовывать, то там вообще один динамический SQL получается. А во второй части (про которую я уже сказал) статьи я именно тем и занимаюсь, что предлагаю принципы, по которым SQL выражения (как возможная реализация реляционных операций) должны динамически формироваться. В том числе там речь идет и о наследовании (множественном). Или вам надо разжевывать и в рот класть? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2006, 14:35 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-geneя именно тем и занимаюсь, что предлагаю принципы, по которым SQL выражения должны динамически формироваться. В том числе там речь идет и о наследовании (множественном). Ну вот, теперь понятно, спасибо. Будем делать выводы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2006, 15:39 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
Делайте:), только учтите, что трансляцию в SQL для меня представляется вынужденным решением. Представьте, что у Вас есть машина, Вы не знаете ее машинных кодов, но знаете ее язык ассемблер, и вам нужно написать транслятор языка высокого уровня. Единственный способ - получать промежуточный ассемблерный листинг, и затем работать с ним стандартными (поставляемыми вместе с машиной) средствами. Таки здесь - трансляция в SQL, и, затем, его выполнение. Но ведь SQL дальше тоже транслируется. и, в принципе, наверное можно обойтись без этого промежуточного этапа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2006, 22:52 |
|
||
|
НРМ
|
|||
|---|---|---|---|
|
#18+
U-gene что трансляцию в SQL для меня представляется вынужденным решением Да нет, это нормальное (и единственное) решение при надстройке над РСУБД. Проблема в выборе: меняющаяся структура БД и динамический SQL или фиксированная (достаточно специальная) структура БД и статический SQL. + и - есть и там и тут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2006, 11:11 |
|
||
|
|

start [/forum/topic.php?all=1&fid=35&tid=1553610]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
199ms |
get tp. blocked users: |
1ms |
| others: | 187ms |
| total: | 463ms |

| 0 / 0 |
