Дж. Рамбо, М. Блаха - UML 2.0 - Объектно-ориентированное моделирование и разработка (1158633), страница 101
Текст из файла (страница 101)
19.2. В листинге 19.12 приведен код ЯОЕ, который создает соответствующие структуры в базе данных Огас!е. Каждый оператор зег1иепсе создает счетчик, используемый для выделения идентификаторов. Например, зев Ьапя используется для выделения Ьапя !О при создании очередного объекта ВапЬ. Мы упорядочили код по смыслу, поэтому его придется изменить, чтобы выполнить в реальной базе данных. Сначала выполняются операции создания таблиц и счетчиков, затем создания индексов и наконец — операции изменения таблиц. Мы не включили в листинг операции создания представлений для СйесйтяАссоипг и 5аглпдзАссоипд В табл. 19.2 приведены дополнительные правила, касающиеся реализации моде- лей классов в РСУБД.
Эти правила включены в большинство систем автоматиче- ской генерации баз данных из моделей. 19.5. Реализация структуры из примера с Банкоматом 425 Таблица Сцв1оп)ег Таблица Вала ЬапЫО пвгпе (ск() Таблица Ассооп( сов!огпег(0 (ге(егепсев Сов!оп)ег) ассоцп1 сгее(! Ьапи0 (св1) ассооп1 ассоип! !О Ыгп(! (ге!егепсев Вапв) Соее (св1) Туре Таблица Сап(Ац!Ьог)кобол Таблица СавЬСап) Таблица Зае!пбвдссооп1 Таблица Ассоип1 СагОАцб)олаабоп Таблица Аббгевв Таблица Слава(пяАссоцп1 Рис. АЯ.10. Таблицы РСУБД для сокращенной модели банкомата Г)истииг АЯ.12. Код 5(2Ь, реализующий модель классов банкомата 1ВЕАтЕ тАВ) Е Васк Ьапк 10 МОНВЕК(30) СОМЗтВА1нт пп ЬапВ1 МОт МОЕЬ, Ьапв пате ЧАКСНАК2(50) СОМЗТВА1МТ пп ЬапВ2 МОТ МОЕЕ, 1ОМЕтВА1нт рВ Ьапв ВВТНАВТ КЕТ (Ьапв 1щ, 1омзтвА1мт еч ь к1 ом1аое (ьапк папе))) 1кеАте ееооемсе аеч ьапк; 3ВЕАтЕ ТАВЬЕ Сев!сепг ( сиагоеег 10 МОМНЕК(30) сваг паве НАКСНАК2(50) Геев аеоипг МОМВЕК(12,2), сомзтввгмт рв сев!спет рвгнввт кет (спасе 1о)) СОМЗтВАТМт пп спасееег1 МОт МОЬЬ, СОМЕТВА1МТ пп сиасотег2 МОТ МОЕЬ, продолжение Р саго ..
ЬапЫО (са1) саге сов!огпег(0 Ацб)ог(аа!)оп!О ' ' (ге!егепсев Вапв) Сог)е (св1) (ге(егепсев Сов!огпег) 426 Глава 19 ° Базы данных Листинг 19.12 (продолжение) СКЕАтв ЕЕОоеисе аес( соаеовег( СВЕАТЕ ВЕООЕМСЕ аег) сагбаось( СКЕАТЕ 1ИРЕХ гпбех сагбапСЛ1 ОМ Сагб Апгьогггасгоп (соасовег 1Р)) АЬтЕК тАВЬЕ Сага Апгьогггаггоп АОО СОИЯтвкхмт 1К сагбаоСЛ) ГОКЕ)ОИ ХЕХ Ьапв 10 КЕГЕВЕИСЕЯ Вапв( АЬтвк тАВЬЕ Сагб Аооьогггас'оп АОО СОИЕтВАхит ХК са баоСЛЕ ГОКЕЬВИ ВЕХ спаговег 1О ВЕГЕВЕИСЕЕ Соаговег) СВЕАтв тАВЬЕ Сьесвьпв Ассоппе ( сЛК асса 10 йОМВЕК(30) СОИятввьмт пп сьвассг) ИОт ИОЬЬ, р песо обгхг ЧАКСНАКВ(1) соивтввхмт пп сьвассс2 иот НРЬЬ, соивтввхит рк слкассс гкхмввх хех (слк асса 10))) АЬтвк тАВЬЕ Сьесвьпв Асаоппг АОО СОИВтввгмт 1К аьвасас) гове16м кех слк асса 1О КЕГЕКЕИСЕВ Асаоппг ОМ ОЕЬЕтв СввсАОЕ) АЬтЕК тАВЬЕ Сьессьпв Ассоппо АЬО СОИятвв)мт впав сьвассг) СНЕСК (ргооесг обгхС 1М ('Х','М')]) СВЕАтв тАВЬЕ Аасоопо *ссоопС 10 ИОМВЕК(30) Ьа1апсе МРМВЕК(12,2) соиятвкхит пп ассоопг) ИОт МОьь, соиятвк(ит ассоопс2 иот моль, сгеб)С 11в1С МОМВЕК(12,2), ЬапК 10 ИОМВЕК(30) СОМВТГА)ит пп асаоопгз ассоппс сабе ЧАКСНАК2(50) соиятввхит ассоопса асаоппа Туре оАКСНАК2(20) СОИВтВАтмт пп *ссоппС5 аоаговег 10 ИОМВЕК(30) СОМВТВА1МТ пп ассоппгб соизтввьит рк ассоопс гвхмвкх вех (аасоопс 10), сомяткА1мт аг( ассоопс1 ом1оое (ьапк 10, ассоппс сабе)); иот Моль, иот иоьь, иот иоьь, иот иоьь, СКЕАтв ЕЕОоеиСЕ аео ассоопС( СКЕАТЕ 1МРЕХ гпбех ассоопг1 Ои Ассоппг (со*Совег 1Р)) выев тввье Аасоопс Аоо соизтввхит хк ассоопсь ГОКЕ)ОИ КЕХ Ьапв 1О КЕГЕКЕИСЕЯ Вапв) СВЕАтв тАВЬЕ Сага Аоопогьгагьоп ( сагб аоСЛ 1О ИОМВЕК(ЗО) СОМятВА)мт пп сагбаоСЛ) ИОт ИРЬЬ, раааеогб ЧАКСНАК2(50), 1)в1с МОМВЕВ(12,2), Ьапв 10 МОМВЕК(30) СОИВтВА)мт пп сагбаогьз ИОт ИОЬЬ, сагб сабе уАКСНАК2(50) СОМЕТВАТИТ пп сагбапСЛЗ Мот МОЬ(., спаговег 10 ИОМВЕК(30) СОИзтввхмт с б СЛА ИОт ИОЬЬ, СОИВтВАьмт рк сагбаоСЛ ркьМАКХ НЕХ (сага апСЛ 10), сомвтввхмт ог( сагбапсьь омьсое (Ьапв (О, сааб сабе))) 19.5.
Реализация структуры из примера с банкоматом 427 ЛЕТЕК ТЛВЬЕ Лссоппс ЛОО СОМятКЛ>нт ЕХ ассоппсг ГОКЕТЯМ КЕУ спасове 1О кегекемсея спвгоеег( ЛЮТЕЕ ТАВОТЕ Лссоппс ЛОО СОМятКЛ>ит еппе ассоппсз снеск (ассоопг туре 1м ('снесхгпд йссоппг', 'яангпдв Ассоппг')) СКЕЛтя тЛВЕЕ Лосс Сагг>йосй ( ассоппс 1О МОМВЕК(ЗО> сомяткл>мт ассгса) мот моьь, сагг( апсл 1О МОМВЕК(ЗО) сомяткл>мт пп ассгсаг мот моьь, сомяткл)нт рй ассгса ГК>МЛКУ КЕУ (ассоопс 1О, сагг( апсл 1О) » СКЕАТЕ 1МОЕХ 1поех асссса1 ОМ Ассс Сагг(лосл (сагг> аисл 1О» ЛОТЕК ТЛВЕЕ йссс Сагалссл ЛОО СОМЯтвйткт Гх асссса> ГОКЕ>ан ХЕТ ассоппс 1О кегекемсея лссоопг( ЛЬТЕК ТЛВОЕ Ассе С Вйпсй ЛОО СОНЕТКА>МТ Гл ассссаг ГОКЕ>ОМ Кву с с> аппп 1О кегекемсея саго легло аг оп> скейте тлвье я пдв йссо г вач ассс 1О момвек(зо> СОМятмй>ит ваеассс> Мст МОЬЬ, сомятклтмт рх вачассг рктмйку хеу (вае ассг 1о> » АЬТЕК ТАВОТЕ я Епдв Лссоопс ЛОО СОМятКЛ)ит ТХ вавассс) ГОКЕГЕМ Кву в а Г 1О КЕГЕКЕМСЕЯ Ассоипс ОМ ОЕЬЕТЕ САЯСАОЕ> СКЕЛтв ТАВОТЕ Савл Сагс( ( савй саго 1О МОМВЕК(ЗО) СОМЯтКЛ>нт пп савЬсагж МОт МОЬЬ, вег1а1 псе НАКСНАК2(50) сомяткл>мт пп савьсагг>г мот моьь, сагг> ассл 1О МОМВЕК(ЗО) СОМЯтКЛ>нт саввсагМЗ Мст МОЬЬ, СОМятКЛ>ит ррл савйсагв ГК(МЛКТ Кву (савв сагг> 1О» сомяткл(мт пд савпсагс) ОМ>ООЕ (вегта1 поп> » СКЕЛтв ЯЕООЕМСЕ вед савйсагв( СКЕйтя 1МОЕХ )поев савйса аз ОМ Савй Сага (сагг( апой 1О> йьтек тлвье савь са В ЛОО СОМЯтвй>нт )К савйсагм) ГОКЕ>ОМ КЕХ сагг> апсл 1О КЕГЕКЕМСЕЯ Сага Лосйогтгаггоп> СКЕЙТЕ ТАВОЕ Ас(г(геев ( аг>с(геев 1О момвек(зо) СОМЯтКЛ>кт пп аог(геев) Мвт МОЬЬ, аг(г(геев ЧЛКСНЛКЗ(ЗОО) СОМЯтвйзнт пп ааг(гавот Мвт МОЬЬ, спвгоеег 1О МОМВЕК(ЗО) СОМЯтКЛ)нт пп аосгеввя МОт МОЬЬ, СОМЯтКЛ>Мт рх ааг(геев ГК>МЛКУ КЕУ (аог(геев 1О) » СКЕйтя ЯЕООЕМСЕ *ед ааогевв( скелте 1МОЕХ тпаех аг(агава> ОМ Лямгевв (ссвгоеег 1О» ЛЬТЕК ТАВОТЕ ЛОО вв ЛОО СОМятКЛ)ит 1Х ага>ге ГОКЕТОМ Кву сивсоеег 1О кегекемсея спвгоеег ом овеете сляслое> 428 Глава 19 ° Базы данных 19.6.
Реализация функциональности Обычно базы данных используются для построения приложений. Самое важное при реализации — это структура базы данных, но функциональность приложения (пользовательский интерфейс, сложная логика н другое поведение) тоже очень важна. Модель 11МБ — это первый шаг к объединению базы данных и программы, потому что она дает единый подход к обоим аспектам. Тем не менее вы все равно должны рассмотреть дополнительные вопросы, связанные с реализацией функциональности. ° Связь языка программирования с базой данных (раздел 19.6.1).
° Преобразование данных (раздел 19.6.2). ° Инкапсуляция и оптимизация запросов (разлел 19.6.3). ° Использование кода ЯО1. (раздел 19.6.4). 19.6.1. Связь языка программирования с базой данных Стили реляционных баз данных и стандартных языков программирования сушественно отличаются друг от лруга, что затрудняет взаимодействие между ними.
Базы данных объявляются декларативно: разработчики описывают данные, которые им нужны, а нс процедуры получения этих данных. Большинство языков программирования используют императивное описание и требуют выражения логики приложения в виде последовательности шагов. Для объединения баз данных с языками программирования сушествует множество методик, и очень важно иметь представление о всех доступных средствах.
° Препроцессор и постпроцессор. Препроцессоры и постпроцессоры полезны для пакетных приложений. Основная идея проста: создать запрос для базы данных, получить входной файл, запустить приложение, проанализировать его вывод и сохранить результаты в базе данных. Недостаток состоит в том, что взаимодействие с базой данных посредством промежуточных файлов может быть достаточно неудобным. Препроцессор должен запросить всю необходимую информацию, прежде чем вызывать приложение. Столь же трудной может быть обработка выходных файлов приложения, особенно в сложном формате. Эта методика полезна для старых программ или для сертифицированного программного обеспечения, которое не может быть молифицировано. ° Файлы сценариев.
Иногда вам нужно просто создать файл с командами РСУБД. Например, ввод команды Ф/11епате в интерактивном приглашении ЯОЕ (ЯО1. Р1вэ) системы Огас!е запускает выполнение команд, содержашихся в файле г'11епате. Разработчики могут использовать язык сценариев операционной системы для запуска множества сценариев и для управления их выполнением. Сценарии полезны для простого взаимодействия с базой данных, например для создания структур. Они полезны и для прототипирования.
19.6. Реализация функциональности 429 ° Встроенные команды СУБД. Еще одна методика состоит во включении команд БЯ) в код приложения. Она пропагандируется во многих книгах по базам данных. К сожалению, получающиеся в результате программы довольно сложно читать и обслуживать. Основная проблема состоит в том, что базы данных концептуально отличаются от большинства языков программирования. Мы не рекомендуем прибегать к этому методу.