|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
писал:"Из теории реляционных БД известно, что для того, что бы сохранить данные в реляционной БД, эти данные должны быть представлены в нормализованном виде" Ну это не чушь, с практической точки зрения. В базе с нормализованными таблицами легче поддерживать целостность и непротиворечивость данных. Но реляционная модель базы не запрещает всю инфу свалить в один файл. Просто не надо смешивать признаки реляционных баз (правила Кодда) и методы их проектирования. Нормализация - это метод, позволяющий строит эффективные базы. Всякого рода ОЗУ и файловые системы ту ни к селу ни к городу. Сколько железо позволяет, столько в память и тащится. Как-там и что в чем хранится - не приципиально. На MS SQL, например, никогда не знаешь, откуда дата тянется, с диска или из кэша. На мой взгляд на требуемом уровне абстракций, достаточно понятий хранилища данных и исполнителя команд. Притом, что в дальнейшем эти понятия не используются. писал:Однако возможен и другой случай, когда значение атрибута объекта вычисляется исходя из значений других атрибутов данного объекта. Будем называть такие атрибуты вычисляемыми. В нормализованой базе невозможен. писал: Одной из наиболее актуальных проблем, существующих в области хранения данных, является проблема объединения свойств, присущих объектно-ориентированным программам и реляционным системам хранения данных, в рамках единой универсальной системы обработки и хранения информации. Обращает на себя степень единодушия в отношении желаемых возможностей такой системы [1,2,3]. Не знаю, не знаю. На мой взгляд, средства доступа клиентов к база данных уже давно объектно- ориентированы, а нужно ли это для самих данных? Инкапсуляция и наследование Как правило, нам вовсе не нужны методы и свойства класса. Наиболее распространенная операция - получение пересечений свойств классов. То бишь - множественное наследование. Пожалуй, прямое наследование подходит только для класса "Справочников". Родительския класс может содержать два поля ID и Name. А на нем можно строить множество дочерних классов, расширяющих его свойства. Только вот методы наследовать бесполезно. Разве что select * from... Пример в статье о наследовании класса "Отгрузка товаров" классом "Продажа товара" неудачен. На самом деле это абсолютно идентичные таблицы, а разница между базами в том, что если склад начинает продавать товары, то в базу добавляется таблица - "Оплата товара" (не будем придираться к структурам таблиц, к чему там она будет привязана, к документу или к товару, в данном случае неважно). А вот тут появится интерфейс наследующий свойства "Отгрузка-Продажа товара" и "Оплата товара". View, по нашему ======= Мне много лень писать, пока ограничусь. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2003, 20:25 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
2 Cat2 Фразу "Из теории рел БД известно..." переделал.... Спасибо :). Уболтали :). Далее писал: Однако возможен и другой случай, когда значение атрибута объекта вычисляется исходя из значений других атрибутов данного объекта. Будем называть такие атрибуты вычисляемыми. В нормализованой базе невозможен. Здесь я не понял... Почему невозможно? Одной из наиболее актуальных проблем, существующих в области хранения данных, является проблема объединения свойств, присущих объектно-ориентированным программам и реляционным системам хранения данных, в рамках единой универсальной системы обработки и хранения информации. Обращает на себя степень единодушия в отношении желаемых возможностей такой системы [1,2,3]. Не знаю, не знаю. На мой взгляд, средства доступа клиентов к база данных уже давно объектно- ориентированы, а нужно ли это для самих данных? Может я не в курсе, но все OO-средства доступа к БД, что я видел до сих пор (допускаю, что я мало видел), былы именно средствами доступа к БД и не более. То есть речь идет об объектах БД или об объектах доступа (всякие там Connection'ы, Recordset'ы). А клиетское приложение рабает с этими объектами. А для чего оно работает? Что бы сохратить данные объектов, моделирующих предметную область в таблицах БД, или достать эти данные оттуда. То есть в клентском приложении есть объекты, моделирующие объекты предметную область, и есть объекты, представляющие БД. И вот что получается (предположим, что объект был создан ранее). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Разые системы реализуют этот процесс по разному, и (насколько я в курсе) этот процесс дошел уже до того, что в приложении можно описать "перситный" класс, в костукторе объекта указать БД, в которой этот объект будет храниться, и, затем , в процессе работы вызыват специфические методы, приводящии к сохранению актуальных данных. Но схема работы в общем то сохранена. Кроме того (ИМХО это крайне важно для систем хранения данных),с групповым доступом какая то неопределенка. С поиском так всяким. Я же пытаюсь показать, что объекты моделирующие предметную оласть могут существовать непосредсвенно в БД. То есть это уже и не БД ( не среда хранения данных, со специфическими объектами, предназначенными для хранения данных), а среда СУЩЕСТВОВАНИЯ объектов (вместе со всеми их методами, ограничениями, ссылками - при необходимости и тд и тп). Клиентская же программа - это, говоря по простому, может быть не более чем форма. Типа как в Акцессе, только еще проще, потому как все логика предметной области может быть определена в среде существования объектов. Задача этой формы проста - показывать актуальные данные и позволять воздествовать на объекты. Например (совсем по простому) - нажатие на кнопку приводит в вызову метода, а свойсва отображаются в строковых или табличных элементах формы. ИМХО работа, при такой организации, может выглятеть приблизительно так. Код: plaintext 1. 2. 3.
Причем все данные (в том числе и описание формы), могут храниться на сервере, у клиентов же есть только маленькая такая програмуля (типа браузер, значица:) которая эту форму загружает. В общем это все ИМХО и фантазии , касающиеся визуализации данных и клиентской части. Однако, с другой стороны, среда существования объектов должна управляться языковыми выражениями. Требование такое - вполне серьезное ( точнее, насколько я себе это представляю, языка может и не быть, однако нужно показать что он возможен, что я и пытаюсь сделать). И, потом, - групповой доступ - это тоже важно. Наиболее распространенная операция - получение пересечений свойств классов. То бишь - множественное наследование Не знаю, насколько это распростанено, но у меня мн. наследование вполне возможно. Только я в этой статье про это не уточнил :) Можно использовать в качестве предка одно именованное подмножество атрибутов, а можно - несколько. Самое главное - с реализацией потом определиться. Пример в статье о наследовании класса "Отгрузка товаров" классом "Продажа товара" неудачен. Может быть... Но здесь важен не столько пример, сколько... мммм.... сама демонстация понятия "переопределяемый атрибут", и последующии действия с ним. Точнее факт того, что последующих действий может и не быть, посколку эти действия МОГУТ БЫТЬ УЖЕ ОПИСАНЫ - поскольку они описываются для спецификации этого атрибута. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2003, 11:53 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
U-gene куда статья делась? как теперь тебя ругать? WWW - страница не найдена Извините, запрошенная вами страница не найдена. Вы можете вернуться на первую станицу COMAIL.RU и попытаться найти нужную вам страницу по ссылкам. --------- 1 выкини слово кибернетические. 2 линейное озу, имхо, тоже ни к чему. тем более в тексте очень долго идет просто озу. а на картинке - данные в линейное озу. 3 через прямоугольник обьекты, данных реализуемые программой проходят два потока команды и данные - ответы. а прямоугольник (по названию), вроде как только работает только с одним потоком. преобразования команд и данных (как название прямоугольника) мне бы больше понравилось 4 на второй картине избыточна большая белая стрелка, в которой две черные. что она такого специального значит? 5 введение излишне длинное, имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2003, 22:16 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
зы если меньше использовать всякие красоты (в смысле значков) а больше - аски символы, по моему будут меньше болеть мозги о том как статья выглядит в разных браузерах. то на что с127 жаловался. кто захочет дочитать статью из за смысла. будет читать в аски символах все равно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.06.2003, 22:19 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
2 Gt_: \\r боюсь что если вырубить питание ОС уже ничего вам не позволит. \\r \\r Вот к чему приводит неточность и вольность в обращении с языком. Конечно имелось в виду "до выключения", например, как с режимом hibernate в Win2000/XP: A state in which your computer shuts down but first saves everything in memory on your hard disk. When you bring your computer out of hibernation, all applications and documents that were open are restored to your desktop. \\r \\r sql - выдумали в 80-х, это просто один из многих. да и помрет он наверника. \\r \\r Когда помрет-то хоть? Может начинать изучать какой0-нибудь OQL или XQL уже щас. А то изучишь, а он собака пригодится только пальцы веером бросать :о)\\r \\r 2 U-gene: \\r Работу вашу "Объектно-ориентированная организация реляционных данных" прочитал, изучил пока поверхностно, но по ней чуть ниже.\\r \\r 1) Для доступа к данным реляционные системы используют непроцедурный высокоуровневой язык, реализующий ненавигационный доступ к данным. \\r \\r SQL - да, непроцедурный. А что там с оракловским PL/SQL? Вроде говорят он как бы процедурный ( Дед Маздай : врут что ли паразиты!?)\\r \\r 4) Из теории реляционных БД известно, что для того, что бы сохранить данные в реляционной БД, эти данные должны быть представлены в нормализованном виде \\r \\r В дополнение к тому, что сказал "Cat2": во всех авторитетных книжках (Дейт, Коннолли и т.д) говорится о преимуществах нормализации и форм, но не о том, что необходима хотя бы 1NF. К тому же вопреки этой "теории" многие разработчики часто держат таблицы в форме порой ниже 2NF (умышленная денормализация), например, для ускорения исполнения запросов и уж тем более ни одна известная РСУБД не помешает вам создать ненормализованную таблицу и вставить в нее данные, перезапустить сервер и выбрать эти же самые данные\\r \\r Ну давай, напиши мне на процедурном языке выражение связывающее две таблицы по полю, производящую выборку по значению другого поля, и объединяющее результат с третьей таблицей. Ты что, будешь циклы и проверку условий использовать, навигацию по таблице организовывать, построчно записи выбирать? \\r \\r В процедурном языке именно так и придется делать\\r \\r Может я не в курсе, но все OO-средства доступа к БД, что я видел до сих пор (допускаю, что я мало видел), былы именно средствами доступа к БД и не более. То есть речь идет об объектах БД или об объектах доступа (всякие там Connection\\\'ы, Recordset\\\'ы). \\r \\r К какой именно СУБД? Пожалуйста, IS Cache\\\' - ООСУБД с реляционными возможностями при этом имеет ОО-интерфейсы (Java, ActiveX) и таковые средства доступа. Вам об этом уже говорил "Garya" в Сравнение объектно-ориентированных, реляционных и объектно-реляционных СУБД (стр.3-5)\\r \\r Разые системы реализуют этот процесс по разному, и (насколько я в курсе) этот процесс дошел уже до того, что в приложении можно описать "перситный" класс, в костукторе объекта указать БД, в которой этот объект будет храниться, и, затем , в процессе работы вызыват специфические методы, приводящии к сохранению актуальных данных. Но схема работы в общем то сохранена. Кроме того (ИМХО это крайне важно для систем хранения данных),с групповым доступом какая то неопределенка. С поиском так всяким. \\r \\r К сказаному: да, в Delphi или в VB легко можно написать (и их уже много написано) свой контрол типа ClientDataSet или компонент с разными наворотами типа локальной персистенции данных или динамического обновления, к примеру, но естественно в его "внутренностях" будет скрываться работа с нижележащим механизмом типа ADO или OLEDB к-рый был доступен из средств разработки этого контрола - это закономерное следствие архитектуры "платформы" в рамках к-рой остается автор. Вы предлагаете использовать какую-то свою архитектуру, заменяющую промежуточные интерфейсы данных типа ADO?\\r \\r Причем все данные (в том числе и описание формы), могут храниться на сервере, у клиентов же есть только маленькая такая програмуля (типа браузер, значица:) которая эту форму загружает. \\r \\r В общем это все ИМХО и фантазии , касающиеся визуализации данных и клиентской части. \\r \\r Вы делаете эту работу для какой-нибудь защиты, как факультативное исследование или это хобби? Просто в вашей статье об этом кажется ничего. Вы не боитесь повторить путь знаменитого "1024" с его VisualER только у вас будет ваша статья? Я припоминаю, вы же были в ветке Междумордие (стр.17-18)? А там как раз были подняты 3 очень полезных вопроса прагматического характера:\\r \\r 1. Можно ли обойтись без ЭТОГО?\\r 2. Чего мне ЭТО будет стоить?\\r 3. Что можно с ЭТОГО поиметь?\\r - - - - - - - - - - - - - - - - - - - - \\r Но это так шутка, дерзайте! Теперь пара комментариев по "Объектно-ориентированная организация реляционных данных" :\\r \\r Присоединяюсь к "чингизу" по поводу "ОЗУ" (непонятно зачем это) и "кибернетических систем" (не следует в суе о том, что здесь вообще не причем). (кстати, вы "чингиза" упомяните в качестве корректора/рецензента? :о) Далее:\\r 1. Название статьи. Просмотрев ее я понял, что речь идет о работе и хранении объектов\\r в реляционной модели/схеме в чем-то аналогично Тенцеру в его статье "Реляционная БД как хранилище объектов " .\\r Сбивают с толку "реляционные данные". Такого термина по-мойму нет. Есть реляционная модель,\\r реляционная схема, исчисление и т.д. Данные - это некая информация (т.е как бы содержательная\\r категория) и она может быть представлена в различных формах (видах) , например,\\r неструктурированном, реляционном, объектном и т.д. Т.е получается как бы тавтология:\\r объектная организация реляционных данных (подразумевается модель/схема) .\\r У вас реляционная схема была и остается в первозданной форме внизу под ее ОО-представлением.\\r \\r 2. "Терминальный механизм" что он есть такое и какое он имеет значение?\\r \\r 3. IMHO слишком затянутая постановка задачи, лучше разбить ее на краткую и полную формы.\\r Даже для "тяжелых" научных статей по механике (20-40 с.) постановка задачи - это краткая \\r постановка (список из нескольких пуктов-предложений) и полная с формулами (макс. на 1 стр.\\r Worda), а иначе нельзя ухватить смысл. У вас цель:\\r Покажем, что информация, представленная в виде множества объектов вида 0,\\r может быть полностью сохранена в реляционной системе хранения данных. \\r \\r сидит в "труднодоступной" в середине параграфа или есть еще какие-то цели? Потом постановку\\r задачи следует выносить в отдельный параграф Постановка задачи . Хотя у вас цель\\r статьи была не только доказательная , но еще и описательная или ознакомительная\\r судя по Заключению \\r \\r 4. Из теории реляционных БД известно, что для того, что бы сохранить данные\\r в реляционной БД, эти данные должны быть представлены в нормализованном виде[8,9,10]. \\r См. комментрий выше. Интересно, если вы приведете цитату в к-рой говорится о необходимости\\r нормализации для сохранеия данных в РБД. У Коннолли (кстати, с двумя "н") этого по-мойму\\r точно нет ни в 1-м, ни во 2-м издании просто я им достаточно часто пользуюсь\\r \\r 5. Между исходным множеством объектов и результирующим множеством отношений \\r существует отношение "многие ко многим": каждое отношение может состоять из кортежей,\\r описывающих \\r Тут не используется один и тот же термин для обозначения разных понятий? Если "отношение"\\r у вас означает аналог сущности/таблицы, то используйте термин "связь" (relationship, association)\\r \\r 6. В статье предлагается подход, позволяющий создать объектно–ориентированную\\r информационную систему на основе терминального механизма хранения данных, описываемого\\r реляционной моделью. Вводятся правила, позволяющие преобразовать схему данных, возникшую\\r в результате нормализации, к объектной схеме данных. Исследуются свойства, которыми может\\r обладать система, основанная на предлагаемом подходе. Показано, что такая система\\r \\r позволяет описывать перманентно хранящиеся данные в виде сложных идентифицируемых объектов,\\r инкапсулирующих состояние и поведение, \\r реализует концепции наследования и полиморфизма, \\r позволяет организовать как навигационный, так и ненавигационный доступ к данным, \\r позволяет организовать групповой доступ к данным, в основе которого лежат операции\\r реляционной алгебры.\\r \\r \\r По-мойму это должно быть во Введении , а не в Заключении \\r \\r 7. Автор надеется, что предлагаемые в статье решения могут быть интересны\\r специалистам, занимающихся проблемами хранения и обработки данных. Конечно, в небольшой\\r статье невозможно предусмотреть все вопросы, которые могут возникнуть при знакомстве\\r с предложенным подходом. Однако она может быть вполне достаточной для его практической\\r реализации в виде системы.... \\r \\r IMHO немного похоже на рекламу. Никто не будет читать статью, перегруженную мат.выражениями\\r точно также как никто из разработчиков или проектировщиков БД не будет читать реляционную\\r теорию Кодда или ISO/IEC SQL чтобы создать БД (практическая реализация). Только для общего\\r образования. Возможен вариант, когда в одной части вы даете мат.описание системы, а в другой\\r ее описание в терминах, понятных прикладникам (ERD, UML, SQL, Java) и еще лучше с маленьким\\r примером практической реализации (как вы привели для отгрузки товара) в виде отдельной главы\\r Пример практической реализации \\r \\r 8. 2) нормализовать имеющуюся схему данных. В процессе нормализации мы получили\\r несколько 3НФ отношений (первый столбец содержит имя атрибута, второй – накладываемые на него ограничения) \\r Читая вашу статью поначалу путался в атрибутах и столбцах. Я бы вообще без стеснений\\r посвятил терминологии, используемой в статье, отдельный маленький параграф поскольку\\r используются разные словари (реляционный, объектный)\\r - - - - - - - - - - - - - - - - - - - - - - - -\\r Пока все. Буду знакомиться и спрашивать/комментировать по мере сил и наличия времени потому как давно отвык от науки и глаз устает от обилия мат.выражений. Удачи!\\r \\r 2 чингиз: \\r если меньше использовать всякие красоты (в смысле значков) а больше - аски символы, по моему будут меньше болеть мозги о том как статья выглядит в \\r разных браузерах. то на что с127 жаловался. кто захочет дочитать статью из за смысла. \\r будет читать в аски символах все равно. \\r \\r Имелись в виду скорее всего HTML entities , т.е Ø или Ø для отображения символа пустого множества:\\r ...Microsoft® Internet Explorer interprets the bytes in your document according to the applied character set translations. It interprets numeric character references ("〹") as ISO10646 code points, consistent with the Unicode Standard, version 2.0, and independent of the chosen character set. Named entities ("&") are displayed independently of the chosen character set as well. The display of an arbitrary numeric character reference requires the existence of a font that is able to display that particular character on the user\\\'s system.... \\r \\r Хотя зачем тархаться с HTML когда можно было сделать в том же Worde и выложить его в Zipе?\\r \\r 2 Cat2: \\r >Однако возможен и другой случай, когда значение атрибута объекта вычисляется\\r >исходя из значений других атрибутов данного объекта. Будем называть такие атрибуты вычисляемыми.\\r В нормализованой базе невозможен. \\r \\r В нормализованной точно возможен. Нормализованность - это выполнение 1NF. Если будет 2NF и выше, то может и невозможен в случае, если имелась в виду зависимость не от PK потому что 2NF - это полная функциональная зависимость неключевых атрибутов от PK. Хотя "зависимость" и "вычисляемость" это вообще разные понятия. Можно иметь факт зависимости, но вовсе не иметь возможности вычислить значение одного на основе только значения другого или я чего-то не понял? :о) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2003, 00:09 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
Репликант. Возможен, возможен . Просто я писал под впечатлением статьи. А там про объекты. А у ж если объекты, то нужна нормализация по крайней мере до 3 формы. Иначе, на мой взгляд, странно будет - какие-то объекты зависят от других. "Вычисляемые поля" в статье я понял как данные, которые можно вычислить на основании других, содержащихся в базе данных. Впрочем, объект может выдавать наружу какие-то данные, вычисленные на основании своих данных. Как это сейчас делается в MS SQL 2000. Только хранятся в табле не данные, а формулы. U-gene Где-то на форуме MS SQL народ делился опытом создания объектов в среде MS SQL. Уж точно не помню, как там все было реализовано, вроде через таблицы с метаданными. Помню, что по словам автора время разработки снижалось в 2-3 раза, но во столько же снижалась производительность. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.07.2003, 12:35 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
Огромное спасибо свсем заинтересовавшимся. Посколька опыта написания совсем нет, то рассмартиваю все замечания и, вношу необходимые изменения. Все, принявщие участие, будут упомянуты в части "Благдорности" :) 2 Репликант 1) Для доступа к данным реляционные системы используют непроцедурный высокоуровневой язык, реализующий ненавигационный доступ к данным. SQL - да, непроцедурный. А что там с оракловским PL/SQL? Вроде говорят он как бы процедурный (Дед Маздай: врут что ли паразиты!?) Я говорю не про управления данными в среде СУБД , а про доступ ....ммммм..... снаружи. Написав процедурку на PL/SQL или на Т-SQL мы должны использовать команду CREATE PROCEDURE в которой наша процедура рассматривается практически как строковый аргумент. Вот это и есть непроцедурный доступ. Обращаясь с СУБД, дабы эта процедура была выполнена, мы будем использовать команду EXEC - и это тоже непроцедурный доступ. В данном случае я имею в виду то же самое, что имели в виду авторы "Манифеста СУБД третьего поколения" , когда писали следующее - "Все программируемые доступы к базам данных должны осуществляться через непроцедурный язык доступа высокого уровня". Мда. Что мы имеем сейчас в SQL. Мы имеем несто типа "CREATE TABLE...", "CREATE VIEW...", "CREATE PROCEDURE..." (еще мне нравиться "CREATE FUNCTION"? которое есть в MS SQL) - и это все мы имеем по отдельности. ИМХО все это можно заменить на нечто типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Команды высокого уровня остаются, но описание данных в них нескоько иное. Я пытаюсь показать, что вся это хренотень будет работоать и в ОО- и в реляционном- жанрах. Аналогия: раньше в языках програмирования мы описывали структуры и функции (по отдельности), а потом стали работать с объектами. Что мы получаем в конце концов? С одной стороны - гибкость и расширяемось объектных систем, с другой стороны - мы остаемся в рамках реляционной модели данных. 1. Можно ли обойтись без ЭТОГО? Конечно можно :) До сих пор обходились. С другой стороны есть "Манифест СУБД третьего поколения", в котором приведен ряд требований к этим самым СУБД3пок. ИМХО, то что я пытаюсь описать, очень хорошо на основные из этих требований ложиться. Опять же, можно писать на ассемблере (очень эффективно), но почемуто все пользуют всякие С++, Java и BASIC. Видимо потому, что это позволяет увеличить размер контролируемой сложности. 2. Чего мне ЭТО будет стоить? Дык, я уже написал. :) - мне уже ничего не стоит. 3. Что можно с ЭТОГО поиметь? Минимум ничего. Ну не убьют же меня за это, в самом деле? :) Я не знаю, как это будет реализовано. ИМХО как угодно. Мне это видится в виде сервера, представляющего собой среду существования объектов и управляемого непроцедурными выражениями. Как этот сервер будет реализован - тоже как угодно. Например, можно взять существующие SQL-сервера и иcпользовать их в качестве основы. Можно написать с нуля. Можно попросить производителей железа , что бы они спаяли :) "реляционное ОЗУ" и строить систему на нем. Речь идет не о реализации. Я просто взял рел. модель данных (домены,отношения, рел.операции, ключи) и попытался показать, что на основе описываемой реляционной моделью системы хранения данных (уж не знаю, что это за система), можно создать объектно-ориентированную информационную систему, которая работает в терминах "свойство", "класс", "атрибут", "метод", "объект" и реализует ОО-"". И что такое описание не противоречти реляционной модели и позволяет организавать основанный на рел. операциях групповой доступ к данным. Далее о терминах. "терминальный механизм" я вроде бы определяю - "механизм хранения с неизвестным устройством, который определен только через способ обращения к нему и действия, которые он производит по отношению к другим частям системы" (эту фразу я практически без изменений взял изочень умной монографии, найденной в сети, но, блин, сослаться не смог, потому что монография исчезла и "Cannot find server"...). Можно сказать, что терминальный механизм, это механизм, который обеспечивает поддержку переменных базовых типов (INT,FLOAT и т.п.). Слово "киберентическая" значит "управляемая". Система может определенным изменяться в ответ на определнные внешние воздействия (команды). Мож это и вправду не надо? Насчет данные "должны быть нормализованы" давно уболтали :). Как вам фраза "для обеспечения эффективного хранения данных (что подразумевает их целостность и непротиворечивость) , эти данные должны быть нормализованы "? 5. Между исходным множеством объектов и результирующим множеством отношений существует отношение "многие ко многим": каждое отношение может состоять из кортежей, описывающих Тут не используется один и тот же термин для обозначения разных понятий? Если "отношение" у вас означает аналог сущности/таблицы, то используйте термин "связь" (relationship, association) А фиг ё знает... Если у меня мат. статья, то надо писать "отношение". Если статья по БД - то "связь". Но раз в начале предложения говорится о двух множествах, то ИМХО "отношение" тоже уместно. Насчет терминологии - это правда трындец :) Но я могу оправдаться! Ортогональности объектных и реляционных типов в том числе подразумевает, что множество атрибутов класса и множество атрибутов отношения - это два разных множеста - и мы должны их как то отличать, в том числе и в тексте. Поэтому я всегда стараюсь уточнить - o a или r a - а порой перехожу на терминологию таблиц и столбцов, применительно ес-но к реляционным делам. Кстати 2 Cat2 ! Может быть именно со этим связано Ваша реплика Однако возможен и другой случай, когда значение атрибута объекта вычисляется исходя из значений других атрибутов данного объекта. Будем называть такие атрибуты вычисляемыми. В нормализованой базе невозможен . Я имел в виду атрибуты объекта. У меня вычисляемые атрибуты объектов по смыслу близки к видам SQL-систем. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
во втором классе, схема табличного значения, возвращаемого SELECT, должна совпадать со схемой, заданной в определии TABLETYPE. Простой пример (опять же - я не знаю насколько он жизненен - в связи с этим я прошу спецов по зарплате не пинать меня строго:) ). Итак, атрибут класса "служащий" содержит записи о его зарплате помесячно. Для класса "офисный работник" это хранимый атрибут, для класса "менеджер по продажам" этот атрибут вычисляется из объемов продаж. Но! обращаться к классу "служаший" мы будем одним запросом, и он вернет информацию, и для "офисных работников" и для "менеджеров по продажам". Создана форма (зарплатная ведомость) основанная на этом запросе. Предположим, что у нас появился новый тип работников, для которых мы расчитываем зарплату как-то по другому. Что нам надо было делать в традиционных системах? Нам надо было делать или пределывать UNION и добавлять в него записи из вновь созданного вида, когторый возвращает данные именно для этого типа служащих. Что нам надо делать здесь? Надо переопределить класс, после чего данные для вновь созданных объектов этого класса автоматично появется в расчетной ведомости. Именно для этого и нужны переопределяемые атрибуты. Аналогия: в дообъектных языках для обработки близких структур приходилось писать и переписывать IFы и CASEы (если флаг=1 то функция1 иначе если флаг = 2 то функция2); в объектных же мы просто переопределяем метод класса. О названии . Может я не прав, но из моего названия (даже не смотря на отсутсвие термина "реляционные данные") более-менее ясно о чем идет речь. Или название "Объектно-ориентированная организация данных в реляционных системах хранения" будет лучше? Насчет Word в ZIP'e.... Дело в том, что статья выложена на ряд источников именно в HTML-формате. И, поскольку приходиться вностить исправления, то желательно использовать более-менее один источник в одном формате. Вот. Ух. Писал пять часов. Плохой из меня поветсвователь, в связи с чем Ваши замечания очень кстати. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2003, 15:24 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
По поводу производительности... Для начала приведу цитату из того же "Манифеста СУБД третьего поколения" - "Показатели производительности не имеют почти ничего общего с моделями данных и не должны в них проявляться". Для себя я это понимаю как "можно извращаться как угодно, только модель не трогай..." И все же. Если кто в моей статье прочитал часть "проектированние данных", то он смог увидеть, что схема данных уровня хранения определяется схемой данных, возникшей в результате нормализации. Число таблиц уровня хранения, содержащих информацию например об отгрузках, не больше, чем число таблиц, которое существовали бы в традиционной отгрузочной РБД. И эти таблицы будут содержать практически те же записи, что и в традиционной реляционной СУБД (например для для отгрузки - одна запись на шапку и по одной на каждый отгруженный артикул). Именно это позволяет мне надеятся, что предлагаеемый мною подход достаточно эффективен. Что я видел в обсуждении на форуме MS SQL (если не ошибаюсь это статья Тенцера)? Создана таблица для целых, таблица для строк, таблица для чисел с плавающей точкой и т.п., и объектные атрибуты базовых типов храняться в соответсвйющих таблицах. То есть, если есть в объекте десять атрибутов типа INT- тупо получишь десять записей таблицы, предназначенной для хранения INT. Например, если шапка отгрузки содержит пять атрибутов - получим пять записей, если каждый отгруженный артикул описывается тремя атрибутами - получим еще три записи на каждый артикул (кстати! я не понял,как при этом подходе реализуются повторяющиеся группы). Естественно, что в этом случае об эффективной работе с БД говорить не приходится. ИМХО предложение Тенцера можно прочитать так: "Объектная системы строяться на основании терминального механизма, поддерживающего ограниченное число примитивных типов (int, char, float) и, следовательно БД должна хранить значения этих примитивных типов." Тем самым он кастрирует реляционный механизм, лежащий в основе БД, по самые уши. У меня совершенно другой подход- в качестве терминального механизма я использую реляционную систему хранения всю, целиком. Базовым типом у меня является отношение (а у отношения в свою очередь есть домены, которые и есть эти примитивные типы). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2003, 18:43 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
2 U-gene Еще раз. Наверное статья интересная, но читать ее невозможно. Можно ли убрать как-нибудь иероглифы, т.е. заменить их на человеческие символы, или выложить статью в человеческом формате (pdf,ps)? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2003, 01:15 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
U-gene что значит слово кибернетическая, я догадываюсь. у нас любая интерактивная система - кибернетическая. там есть прямая и обратная связи между управляющим (оператор) и управляемым (программа). просто это слово у тебя появилось только один раз в статье, и поэтому его появление достаточно бессмысленно. как и "линейная оперативная" память на картинке. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2003, 21:47 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
ssss ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2003, 08:42 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
2 чингиз Да, само это слово появляется один раз. Но ведь потом я практически постоянно рассматриваю возможнось однозначного преобразования выражений (которые можно рассматривать как команды или части команд) обращающихся к данным, описанным в терминах уровня представления (объекты), к выражениям,обращающимся к данным, представленным в терминах уровня хранения, т.е. в терминах реляционной модели. Может эта мысль не прозвучала достаточно явно? В тех строчках, где встречается обозначение "о(эквиваленитно)r" часть слева есть выражнений обращающееся к объектам, а часть справа есть выражение, обращающееся к отношениям. Причем слева как правило простые выражения, представляющие собой обращение к атрибуту объекта и группы объектов, а справа выражения, использующие операции реляционной алгебры. Таким образом, если есть команда, обращающаяся к атрибуту объекта, то ее можно однозначно (конечно, с учетом некоторых заранее определенных ...мммм... соотношений между уровнем представления и уровнем хранения) преобразовать в команду обращающуюся к подмножеству строк определенного отношения на уровне хранения. Опять же аналогия: Обращения к атрибуту объекта в традиционных объектных языках приводит к генерации ассемблерного кода, использующего адрес некого объекта как базу и некое смещение, однозначно соответсвеющее требуемому атрибуту указанного объекта. Фактически, описание структуры объекта, будучи преобразованным к терминам линейного ОЗУ (терминальной системы) - представляет собой набор смещений, который может быть применен к любой базе, т.е. к адресу любого объекта. Я же пытаюсь использовать в качестве терминальной систему, реализующую реляционую модель, являющуюся ИМХО единственно существующей моделью данных (во всяком случае математически обоснованной). Возвращаясь к термину "кибернетичесие", мне кажется, что я каким-то образом должен в самом начале определиться о каких системах я говорю, как-то навести читателей на мысль о их управляемости. ИМХО если написать просто "система", то это будет как-то...мммм... ненопределнно, что-ли.... А давайте поставим вопрос так - по-вашему, этот термин просто ни к чему, или он все же вредит восприятию написанного? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2003, 10:34 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
Тема меня интересует, но вот статью прочитать никак не могу - сервер попадает в запрещенный список нашей конторы. Может, если уж предполагается обсуждение на этом сервере, и статью выложить суда же? А то обсуждение - отдельно, статья - отдельно ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2003, 12:10 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
Здравствуйте-здравствуйте ! :) Прошу прощения за то, что оставил без ответа несколько последних сообщений. В связи с рождением дочки голова был сильно занята вещами, достаточно далекими от БД и СУБД и тп. Ну разве инода заглядывал... мимо пробегал, значица. :) Потенциальному читателю хочу сказать, что статья доступна на сервере CITFORUM по адресу http://www.citforum.ru/database/articles/ooo_rel_data/ . Кстати, ссылка имеется и на этом сервере - в разделе статьи от 26.06.03 c127 по этому же адресу может скачать файл в Вордовском формате. К сожалению PDF сделать не смог (4-й акробат рухает вместе с системой а 5-го у меня нет). Если у кого есть возможность конвертнуть (только 5-м!!! 4-й рухнет:) )- если не трудно, сделайте милость, а результат вышлите мне. По поводу благодарностей :) Я упомянул участников активного :) обсуждения на SQL.ru, но было бы неплохо, что бы Чингиз, репликант и Саt2 дешифровались и прислали мне свои мирские имена, если посчитаете нужным, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2003, 14:56 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
UG>связи с рождением дочки голова был сильно занята поздравляю -)) у меня первый ребенок тоже дочка. UG>авайте поставим вопрос так - по-вашему, этот термин просто ни к чему, UG> он все же вредит восприятию написанного? все что не помогает - мешает. (свободный пересказ бритвы оккама) -) все интерактивные системы - подпадают под это определение. если бы Вы сужали класс рассматриваемых систем, то был бы смысл вводить его определение и говорить о этом. а так - ни к чему, имхо. только отвлекает. если у Вас есть еще интерес к обсуждению - я могу почитать дальше. -)). тоже был занят. зы Ваше мыло скрыто. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 01:03 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
>поздравляю Спасибо >у меня первый ребенок тоже дочка. У меня их две (довелось услышать "бракодел".... естественно от бездетного человека ) >все что не помогает - мешает. Беда видимо в том, что я попытался запихнуть в одну кучу саму идею (типа "концепцию" значица), подводимый под нее формализм и вдобавок приправил это вариантами использования, причем эти варианты можно назвать деталями....достаточно существенными(такие как проектирование данных) и не очень. И даже не объяснил, что же это такое "объектно-ориентированная система управления реляционными базами данных". У меня возникает мысль написать что-то в виде "вопрос - ответ(на пару абзацев)" - типа ФАКа, начав с "что таке ООСУРБД?" и "а причем здесь реляционные БД?". Достаточно много такого рода вопросов я уже получил,в том числе и здесь. И возникающие вопросы мне очень интересны. >если у Вас есть еще интерес к обсуждению - я могу почитать дальше. Конечно интересует!!! Еще как. Поскольку я заморачиваюсь темой практически в одиночку, то отсутсвие обратной связи жутко угнетает. Два года назад я опубликовал статью "модель объект-качество" и уже думал, что про нее забыли.... и вдруг начал встечать какие то ссылки, в конфах вспоминают, а кто-то даже сказал, что это статья "формирует требования к универасльной модели данных" .... но два года - это очень много. -)). тоже был занят. А кому сейчас легко? :) >Ваше мыло скрыто. Это вряд ли ( (C) тов.Сухов) :) Адрес есть во всех статьях прямо под названием. Никак не могу понять почему , но как только в очередной публикуешь свой адрес в каком-нить открытом источнике, так количество спама увеличивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 18:09 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
2 U-gene . А ты бы не мог произвести сравнительный анализ ОО и реляционных БД? Но сделать это по всем правилам т.е описать их мат модели и т.д ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 18:42 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
Я конечно извиняюсь но ... в чем глубинный смысл статьи? :) Если это просто описание идеи object-relational mapping математическим языком, то по этому поводу уже слишком много работ написано имхо Очень похоже на переливание из пустого в порожнее... Вот ежели бы кто-нибудь предложил проект языка программирования, сочетающего в себе декларативные конструкции реляционной алгебры и императивные конструкции объектно-ориентированных языков, ну такой язык, который мог бы стать стандартом для написания хранимых процедур в современных субд вместо всяких убогих PL/SQL, вот это было бы сильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 20:14 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
"Вот ежели бы кто-нибудь предложил проект языка программирования, сочетающего в себе декларативные конструкции реляционной алгебры и императивные конструкции объектно-ориентированных языков, ну такой язык, который мог бы стать стандартом для написания хранимых процедур в современных субд вместо всяких убогих PL/SQL, вот это было бы сильно." 1)ну если Вы такой умный. Объясните что значит убогий PL/SQL. В теории формальных я такого слова не встречал :-). 2)И конечно, хорошо бы после ответа на пункт 1 услышать ответ на вопроса- А ЗАЧЕМ :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2003, 21:10 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
2 GrimReaper777 >Вот ежели бы кто-нибудь предложил проект языка программирования, сочетающего в себе декларативные конструкции реляционной алгебры и императивные конструкции объектно-ориентированных языков, ну такой язык, который мог бы стать стандартом для написания хранимых процедур в современных субд вместо всяких убогих PL/SQL, вот это было бы сильно. RSL (RAISE Specification Language). Не только проект - готовый язык с компилятором. Посмотреть можно например здесь: http://i.com.ua/~agp1 2 n >А ты бы не мог произвести сравнительный анализ ОО и реляционных БД? Но сделать это по всем правилам т.е описать их мат модели и т.д ИМХО главная проблема как раз в том, чтоб построить строгую модель ОО, причем чтоб все были довольны. Такой общепризнанной модели сейчас нет. Как мы только что видели в соседнем топике по ООДБ, взаимопонимания в области ОО нет даже в элементарных вещах. А сравнение это уже дело техники, хоть и тут попотеть придется, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2003, 01:11 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
Гы, ОО-модель говорите? а что это такое? Поди туда- не знаю куда, найдит то - не знаю что... Я уже писал тут, пробегая мимо, но не довел свою мысль до конца. Цитирую (сам себя :) >>>Мысль первая! вспомним определение модели данных: "1)множество типов, 2)множество операций над экземплярами типов, 3)множество ограничений, применимых к экземплярам типов". Мысль вторая! в ООП есть такие понятия как спецификация класса и реализация класса. Через эти понятия могут быть опрелены все три обсуждаемые концепции 1) Инкапсуляция означает, что пользователю предоставляется только спецификация класса, данные же о реализации для него недоступны 2) Наследование означает, что мы можем определить класс, спецификация которого повторяет спецификацию уже существующего класса. В этом случае пользователь будет обращаться с объектами класса-наследника точно также как с объектами базового класса. 3) Полиморфизм означает, что классы с одинаковой спецификацией могут иметь различную реализацию - например, в процессе наследования (см. выше) реализация класса может быть изменена. Итак, как мы видим, все три важнейшии ОО-концепции имеют прямое отношение к РЕАЛИЗАЦИИ. Так вот - фишка заключается в том, что говоря (в определении модели данных) про множествах типов, опреций и ограничений, мы фактически говорим о множестве классов, для которых совершенно четко определна их СПЕЦИФИКАЦИЯ - и ни слова о их РЕАЛИЗАЦИИ. <<< Конец цитаты. < Другими словами МОДЕЛЬ ДАННЫХ - это некая цель, а ОО - это способ достижения этой цели. Если модель данных соверщенно четко описывает некий набор ТИПОВ и определяет СПЕЦИФИКАЦИЮ этих типов , то ОО-парадигма утверждает, что имея некий исходный набор "примитивных" типов для которых определный исходный набор "примитивных" операторов, мы можем РЕАЛИЗОВАТЬ (описать) ЛЮБЫЕ типы. Именно поэтому я и говорю, что математическая модель ОО - это химера. Говоря образно, мы можем нарисовать чертеж детали (модель), но сделать деталь мы можем абсолютно разными способами, но если мы создали деталь, то пофигу, работали ли мы напильником (писали на ассемблере, значица:) или использовали роботизированную линию (испльзовали что-нить типа C++). Пример (я продолжаю цитирование) >>>Предположим, что используя ОО язык програмирования я создал класс "Абстрактная таблица" для которой определи набор методов, реализующих реляционные операторы, и два класса-наследника "Хранимая таблица" и "Вид" (у них могут быть конструкторы, принимающие в качестве параметров выраженияч типа "CREATE TABLE" и "CREATE VIEW"). Ну, я надеюсь вы понимаете, что у нас в конце концов должно получиться . И, наконец, мой вопрос - это объектная система или реляционная? Правильный ответ такой - для создания системы, реализующе реляционную модель использовалось средство, реализующее ОО парадигму. <<< Конец цитаты. < Используя это же средство мы можем написать систему моделирующую географические объекты, производственные процессы или реализующую виртальную Java-машину. В каждом случае у нас разная моделируемая предметная область - т.е. разная спецификация. Реляционеая моель полностью описывает СПЕЦИФИКАЦИЮ математическим языком, виртуальная Java-машину моделирует железо, а чем описываются производственные процесы? Далее... >>> ИМХО здесь надо отличать СИСТЕМУ от ИНСТРУМЕНТА, служащего для создания этой системы. Термин ОО в применении к СИСТЕМЕ действительно значит, что она состоит из объектов - а больше ничего и не нужно. Части системы - т.е. объекты - взаимодействуют на основании некой СПЕЦИФИКАЦИИ. Выполнена спецификация - есть рабочая система. Термин ОО в применении к ИНСТРУМЕНТУ создания системы означает некую методологию позволяющую описывать эти объекты на основанни существующих типов и операций. Другими словами речь идет о способах РЕАЛИЗАЦИИ заданной СПЕЦИФИКАЦИИ и именно на этом этапе возникают все эти вещи - инкап.,насл. и полиморф. То есть эти понятия нужны на этапе создания - когда же система функционирует то уже по барабану, является данный объект объектом наследуемого класса или же его класс написан с нуля. <<< Конец цитаты. < ...только я погорячился, обозвав СИСТЕМУ(результат) объектно-ориентированной. СИСТЕМА на самом деле просто ОБЪЕКТНАЯ, а вот ИНСТРУМЕНТ может быть ОБЪЕКТНО_ОРИЕНТИРОВАННЫМ. А может и не быть - в конце концов любую ОО-программу можно изобразить на ассемблере, но каких трудов это будет стоить? С другой стороны, используя ОО-инструмент легко можно написать какую-нить ерунду. Например, создавая прогамму можно ВСЕ впихнуть в один класс с кучей PRIVATE-арибутов примитивных типов, кучей таких же PRIVATE-методов и единственным PUBLIC-методом "run". Соответсвенно этот класс реализует функциональный подход к созданию программы ... но разве такая система объектная? (конечно она объектная, только в этом случае любую выполняемую программу можно рассматривать как объект, но разве мы этого хотели?) В общем я повторяю - ИМХО "строгая модель ОО" есть химера, этакий филосовсий камень, о которм все мечтают, но который, увы..... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2003, 10:53 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
Далее... про глубинный смысл и язык. И не слово о маппинге! Кстати, а что это такое? Не, я читал что-то, но объясните мне это на словах, как Вы это понимаете..... Ах да, глубинный смысл :) Ну если возвращаться к моему предыдущему посту, то я хочу показать, что если мы используем в качестве исходного "примитивного" типа то, что называется "отношением", то мы получяем огромное количестов очень интересных эффектов, и одним из этих эффектов как раз является возможность создания "языка программирования, сочетающего в себе декларативные конструкции реляционной алгебры и императивные конструкции объектно-ориентированных языков". Надо только включить воображение и прочитать внимательно. В том числе и мои предыдущие сообщения. Но на всякий случай повторюсь (на пальцах конечно) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Здесь я хотел бы обратить внимание на то факт, что атрибут t локально в классе представляет собой...мммм...... табличку - с ней мы може работать в области видимости класса, например выбирая из нее записи - SELECT ... FROM t (это может быть оформлено в виде хранимых процедур этого класса) . В случае, если атрибут является публичным, мы можем работать с ним, как с атрибутом объекта определенного некой ссылкой obj и написать SELECT ... FROM obj.t (Это может быть в другой хранимой процедуре, где такая ссылка определена). Важнейшая же фишка заключается в том, что, поскольку каждому объекту соответсвует некий уникальный OID , то АБСОЛЮТНО законным является также выражения SELECT ... FROM base_c.t! То есть становиться возможным групповой доступ ко множеству объектов, причем в это множество входит и объекты производного класса, в которых указанный атрибут переопределяется (это может быть и в хранимой процедуре и ...мммм.....как команда доступа к данным извне). И все это выражение является абсолютно реляционным. Развивая мысль мы можем дать абсолютно реляционное определние объекта "объект - это декартово произведение своих атрибутов", что позволяет смело написать SELECT ... FROM base_c - то есть организовывать групповой доступ к объектам класса. И поскольку класс inh_c наследует класса base_c (в.тч. и его спецификацию...т.е. набор сигнатур атрибутов) то этот SELECT относится и к объектам класса inh_c, тем самым являясь командой доступа к данным НАСЛЕДУЕМОГО ПОЛИМОРФНОГО класса не выходя за пределы реляционной модели данных. То есть классы как типы данных имы описываем ....мммм.....императивно :) но работать с ними можем и декларативно :)) ну или что-то типа того. Возвращаясь к предыдущему посту можно сказать так. Создавая объектную систему на базе аппратного компьютера мы ВЫНУЖДЕНЫ представлять наши объекты как набор переменных простых типов. Создавая объектную систему на базе реляционной БД мы должны представить ее как совокупность переменных типа "отношение", поскольку это единтсвенный тип, реализуемый реляционными системами. Можем ли мы это сделать? А нормализация то на что нам дана? именно для этого. В результате нормализации мы и получаем требуемую струкутру атрибутов объекта. Это не маппинг. Маппинг подразумевает, что данные преобразуются из "объектных структук в реляционные". У меня объекты изначально представляют собой совокупность реляционных структур. А зачем преобразовывать что-то во что-то если требуемое уже и так есть? Вот такой вот "глубинный смысл".... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2003, 11:56 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
1)ну если Вы такой умный. Объясните что значит убогий PL/SQL. В теории формальных я такого слова не встречал :-). Ну конечно это не на формальном уровне, а на уровне ощущений. Как бы это обьяснить... Basic - убогий по сравнению с C++ Язык машины Тьюринга хоть и встречается в теории формальных систем но с точки зрения практического программирования он - убогий CURSOR C1 IS SELECT ... FROM ... WHERE ... OPEN C1; LOOP FETCH C1 INTO ... EXIT WHEN C1%NOTFOUND; <действия> END LOOP; CLOSE C1; выглядит убого по сравнению с foreach( i in c1 = <реляционное выражение>) { <действия> } 2)И конечно, хорошо бы после ответа на пункт 1 услышать ответ на вопроса- А ЗАЧЕМ :-) Для того чтобы работа программиста приносила моральное и эстетическое удовлетворение :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2003, 12:04 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
А такой вариант цикла не пробывали использовать?: for переменная in наименование_курсора(список параметров) /*можно и сразу select без объявления курсора писать*/ loop список операторов; end loop; На мой взгляд тоже самое что foreach( i in c1 = <реляционное выражение>) { <действия> } ИТОГО: Возможно стоит лучше изучить синтаксис PL/SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2003, 12:35 |
|
Объектно-ориентированная система управления реляциоными базами данных.
|
|||
---|---|---|---|
#18+
А такой вариант цикла не пробывали использовать?: for переменная in наименование_курсора(список параметров) /*можно и сразу select без объявления курсора писать*/ loop список операторов; end loop; В любом случае эта конструкция подразумевает FETCH то есть 1. Сформировать текст запроса (если запрос динамический то путем хитроумных строковых операций) 2. Скопировать параметры в запрос 2. Выполнить запрос 3. Скопировать данные из результата запроса в переменные То есть по сути это не один язык программирования с единой системой типов а язык слепленный из трех частей 1. Язык запросов - SQL 2. Императивный язык 3. Механизм перегонки данных из запросов в переменные императивного языка и наоборот Вот этого механизма перегонки и хочется избежать. Хочется чтобы система типов данных в языке запросов была та же что и в императивном языке. Хочется чтобы в этой системе типов были объекты, такие как в C++, Java или С#. Хочется напрямую использовать эти объекты в запросах, вызывать методы. Хочется не делать различий между реляционными операторами и остальными операторами языка. Динамические запросы хочется формировать средствами языка а не путем конкатенации строк. Есть подозрение что оптимизатор для такого языка будет работать эффективнее так как получит возможность оптимизировать запросы в контексте всей программы а не сами по себе. Вместо этого имеем различные диалекты SQL и узенькое горлышко для перекачки данных между SQL-сервером и программами на объектно-ориентированных языках: текст запроса -> курсор -> буферные переменные -> свойства объектов Ok, возможно PL/SQL вуалирует этот механизм , но дотягивает ли система типов PL/SQL до языков типа Java/C++? Сильно сомневаюсь ИТОГО: Возможно стоит лучше изучить синтаксис PL/SQL. Да уж, придется изучить синтаксис PL/SQL, а потом еще Transact-SQL, а потом еще кучу недоделаных языков от различных поставщиков субд ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2003, 15:00 |
|
|
start [/forum/topic.php?fid=32&msg=32205424&tid=1546673]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
183ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
1ms |
others: | 247ms |
total: | 550ms |
0 / 0 |