Введение в системы БД (542480), страница 259
Текст из файла (страница 259)
° Инкапсуляция. Как уже отмечалось в разделе 24.2, "инкапсулированный" означает просто скахярный, и мы бы предпочли именно такой термин, всегда помня при этом, что некоторые "объекты", тем ие менее, ие являются скалярами. В Переменные экземпляра. Во-первых, закрытые (и защищенные) переменные экземпляра по определению относятся к реализации, поэтому они ие соответствуют определению абстрактной модели, которую мы здесь рассматриваем. Во-вторых, открытых переменных экземпляра не сушествует в чисто объектной системе, поэтому оии также здесь неуместны.
Таким образом, приходим к заключению, что переменные экземпляра можно игнорировать, а "объекты" должны обрабатываться исключительно "методами". В Иерархия вложения, Как уже отмечалось в разделе 24Рь мы считаем, что понятие иерархии вложения вводит в заблуждение и иа самом деле является неверным, поскольку речь идет о содержании идентификаторов, а не "объектов", 982 Часть ~7. Объектные и объекпзно-реляционные базы данных Заиечание. Иерархия (некапсулированная), которая действительно включала бы объекты как таковые, могла бы быть возможной, хотя и противопоказанной. Это могло бы быть аналогом чему-то, подобному переменной-отношению, имеющей атрибуты, значением которых служат отношения (см.
часть П и И!этой книги). 6 Методы. Это, конечно, важное понятие, хотя мы предпочли бы более привычный термин операторы. Но объединение методов с операторами не является обязательным и приводит к некоторым проблемам [3.3). Раздельное определение "классов" (типов) и "методов" (операторов), как было показано в главе 5, позволяет обойтись без использования понятия объекта-получателя.
Существуют некоторые операторы, на включении которых мы бы настаивали; операторы выборки, которые, кроме всего прочего, предоставляют возможность записи литеральных значений соответствующего типа, операторы ТНЕ, операторы присвоения и сравнения на эквивалентность, а также операторы проверки типа (см. главу 19). Заиечание.
Однако мы бы отказались от функций-конструкторов. Конструкторы создают переменные. А поскольку для нас единственными необходимыми переменными в базе данных являются переменные-отношения, единственный "конструктор", который нам нужен, — это оператор создания переменной-отношения, т.е. СНЕАТЕ ТАНЕЕ или СНЕАТЕ Ч!ЕН (по терминологии языка БЯ(.), Операторы выборки, наоборот, выбирают значения, Конечно, дополнительное отличие в том, что конструкторы возвращают указатели на созданные переменные, в то время как операторы выборки возвращают сачи выбранные значения. м Сообщения.
Это также одно из основных понятий, хотя мы предпочли бы более привычный термин вызов. Опять же, можно обойтись без использования понятия объекта-получателя, если отказаться от требования непосредственного обращения к некоторому объекту-получателю, а считать все аргументы равноправными. ° Иерархия классов. С иерархией классов связаны такие понятия, как наследование, полиморфизм, перегрузка, переопределение и т.д. Считаем, что понятие нужное, но производное.
Мы рассматриваем поддержку иерархии классов как составляющую поддержки самих классов. ° Классы, экземпляры, коллекции. Различия между этими понятиями, конечно, существенные, но они касаются не только объектного подхода (здесь мы ограничимся констатацией, что данные понятия различаются). ° Связи. В главе 13 (раздел 13.6) уже оспаривалась идея трактовки "связей" как формально отдельной конструкции (особенно если это лишь бинарная связь, которая и заслужила такую специальную трактовку). Мы также не считаем удачной трактовку связанных ограничений ссылочной целостности, которая расходится с трактовкой ограничений целостности вообще (см. ниже).
° Интегрированные языки программирования баз данных. Весьма полезны, но не относятся исключительно к объектной технологии. Тем не менее следует отметить, что языки, которые поддерживаются современными объектными системами, обычно являются процедурными (языки третьего поколения), поэтому, что можно доказать, они неудачны (фактически это огромный шаг назад). Глава 24. Объектные базы даннъп 983 Теперь перечислим возможности, которые в "обьектных моделях" обычно не поддерживаются или поддерживаются не в полной мере.
° Произвольные запросы. В ранних версиях объектных моделей поддержка произвольных запросов обычно не предусматривалась, поскольку в той среде, в которой возникли объектные системы, в них не было особой необходимости. В более поздних версиях появилась поддержка произвольных запросов, но для их выполнения обычно требуется либо отказываться от инкапсуляции, либо вводить ограничения на виды запросов, которые могут быть выполнены (думается, что в последнем случае такие запросы вряд ли заслуживают того, чтобы называться произвольными).
° Представлении. Обычно не поддерживаются (в основном по тем же причинам, что и обработка произвольных запросов). Замечание. В некоторых объектных системах поддерживаются "производные" или "виртуальные" переменные экземпляра (обязательно открытые). Например, переменная экземпляра АОЕ (возраст) может наследоваться с помощью вычитания значения переменной экземпляра В1НТН-ПАТЕ (дата рождения) от текущей даты. Однако такая возможность еше очень далека от возможностей, которые предоставляются с помощью механизма представлений; и кроме того, мы уже отказались от понятия открытой переменной экземпляра.
° Декларативные ограничения целостности. Обычно не поддерживаются (в основном, по тем же причинам, что и представления и обработка незапланированных запросов ). Более того, они обычно не поддерживаются даже теми системами, которые поддерживают незапланированные запросы. ° Внешние ключи. В "обьектной модели" предусмотрено несколько разных методов поддержки целостности на уровне ссылок, ни один из которых не похож на более универсальный метод внешних ключей, используемый в реляционной модели.
Такие понятия, как ограниченное (ОН РЕАЕТЕ НЕЯТН1СТ) и каскадное (ОН РЕЬЕТЕ САБСАОЕ) удаления, обычно реализуются с помощью процедурного кода (размещенного либо в методах, либо в коде приложений). ° Замыкание. Сложно найти объектный аналог реляционному свойству замкнутости. ° Каталог. Где же каталог в объектной системе? Как он выглядит? Есть ли какие- либо стандарты? Замечание. Конечно, это вопросы риторические. Каков будет реальный результат, если такой каталог будет создан специалистом-профессионалом, которому будет поручено выполнить подгонку объектной СУБД, устанавливаемой для какого-либо приложения, как обсуждалось в разделе 24.5.
(Такой каталог будет специфическим для данного приложения, как, впрочем, и вся настроенная СУБД.) Подытожив сказанное выше, можно отметить полезные (существенные, фундаментальные) понятия и концепции "объектной модели" (такие, которые желательно поддерживать). 984 Часть И. Объектные и обьектно-раляиионныа базы данных хгчннгг(г гчегг9 эгчншмэчггО рг ггвггп г $86 «яэомош мом вошмэчуо эмждэррои м онн«эшпнснэм -зп кзшпзоншо эн кпноворэкзпн омжгГэррон ошн 'нгонг он яэовпошзон чти« о п«эожоЖов ан огошс впшогГн ягсг мари потоссох эжмош — оипш эпноворэгзон ошн чшисогйов шажои. ошм-эом 91 ззекм кипкпЛзиемни воззепм кихс(есгаи кннэжопв кикс)ессеи и.мэчдо сгохемифигнэпи ес(ккияасме кеннэяэсгэи кеннэгписпее ес(кпияасме кеннаяэс(аи ке«гчсгмес яенияоэс яипгогЛпакз кинэкэпэс(ио эгце)( кинэнжвйщ ;цовон чгеасен онжои ип пксгв смаки огЛннеп оН .,(иапи цоге еи гэЛпэкз *яэкагеаосчкои хсчиаккэпэс(ио 'восгогесгэио ки«кнои кеьошма 'эончпехзо эзв) гичинвп воин« вмжсгзппои квнгежэкпен оге — шок -эп а яэгзиз хгчнзлэчдо кэпи кегпос)ох кеннэагзнипэ охь 'ч«ееемз онжоя омгесгм завод вопниЬио „хгчвэпэп„химемин еии« имс)звони оогеоэио и „=„ '„=:„ "„ ццг...
гчоогеоэио 'имс)одгча яро«ес(эио гэеьогкмд оккемззн и с(ккемд оккемзэн и с1ккемд вгэкзгевосчкои кзчзлкзп -зс(ио «зжоя .'окиемзэн и бккемд еоозесгэио восгча зинэгпдоод <1огесЬиО кеннэяэсЬц эинэьенр по«э)эг «мэчдо цгчязкнэясИ гмэ до цгчиэкнзшсиэН ии( е«мэ до ззеп)( иии аа кинвьэнея цгчнчкззяхьоипэця эизкиоц 8 рг. 9 р~ сгиЛ эжин хгчннзпэвис(и ккп ваонзо мем кзч«евосчпоизи «зпЛ9 «змея «о«к эпноьэпчгр цэквсзп и аомннгвехз -ои хгчннеп гчсед эзинм цо«е в цояэЛечкоизи иизсЬа ионзмэчдо гемен а«чввсзо г 9ре ;„,кипеис)офни кепгогЛвгз«Лз«о„ кзгаеагч.седес(до ме)( 8(цинэквегзпэс(и эинзпвондо цэн в ик кзыеаижсгэппои 'сгэяис(иен) инэиэ«з нохем в о« 'ензс)зояз -Лпэс(и иком „.цинапвеипэг)и емжс(эппои эяа«зиз цозе в ик енасггоязЛпэс((( уоквсем гаевипгесгио чкагевосчкои мщ ггчяэгзиз зоьегем невосинезс(о ме)( „.
(Д8 гичск язь 'ягчнпгои пекод 'сминани Ляаигев ои 'но ип кзхэкквц „.номом о« 'кз«аевижсгэппои ии -зд Лвозос(иес гичск цэн а нк кзгэевнжс(зппо() Лэязгзиз цо«е а кзгзевижсгзппои кин -овос(иияессгос)и гичск цоме)( ')(9ЛЭ огЛнгмэчдо яев огЛииЛ«зоп огЛдогп эюцЛпзкззи р'р~ гчн«нэпевивме имвос(икЛяс)оф и«е охь 'эгижем -о1( „() ') '9 '9) егес)певм чгзепдо чпЛдин-огЛмем з«меагчс)мои агчс)охом 'иминчпозЛоя -кс(и азв игцен„езос(иес- )дд никос)ипЛяс(оф эвп гчнэквызпзс(и икгчд х р~ акзпсес) гг р.рх Лгчйиемифигнзпи ч«евосикеас( онжоя яоеес)до яиме)( „.во«мзчдо вос(огемифигнзпи кинеаосчпоизи евгзапсЛяиэс(и и имгегзопэн кзз«меьсмпмес яаь гг ес(о«мЛс(гоном кипмнЛф эинагидооз эзевм циппмккэпэсгио '«мзчдо гмачдо ес(кпияэсме кеннэяэс)эи кеичс)мхе кеннаяэсгаи кенгесгдо погон 24.6.
Составьте подходящий набор утверждений определения данных на языке ОРАЬ для объектной версии базы данных поставщиков и деталей. 24.7. Схематически обрисуйте детали методов "пополнения базы данных" объектной версии базы данных поставщиков и деталей. 24.8. Составьте код на языке ОРАЬ для реализации приведенных ниже запросов в объектной версии базы данных поставщиков и деталей. а) Выбрать сведения обо всех поставщиках, находящихся в городе '1опдоп'. б) Выбрать сведения обо всех деталях красного цвета ('йед').