Тема_7 (1122352), страница 11
Текст из файла (страница 11)
Кузнецов. Базы данных.139Проектирование РБДДиаграммы классов языка UML(60) Определить ограничение, что у каждогоотделадолжен иметьсяменеджер,иОграниченияцелостностии языкOCLлюбой отдел должен быть основан нераньше соответствующей компании(29) Инвариант класса (20)context Отдел inv:self.служащий → exists (должность= “manager”) andself.компания.годОснования ≥self.годОснования Если бы в ограничении мы потребовали, чтобы у каждого отдела былтолько один менеджер, то следовало бы написать … count () = 1, и этобыло бы не эквивалентно варианту с exists Обратите внимание, что в этом случае снова законным являетсяподвыражение self.компания.годОснования, поскольку кратность роликомпания в ассоциации классов Отдел и Компания равна единице29.10.2009С.Д.
Кузнецов. Базы данных.140Проектирование РБДДиаграммы классов языка UML(61) Условие четвертого инвариантаОграничениямаксимальноцелостности и язык OCL (30) Инвариант класса (21)ограничиваетвозможное количество сотрудниковкомпании числом 1000context Компания inv:self.отдел → collect (служащие) →count () < 1000 Здесь полезно обратить внимание на использование операции collect Проследим за вычислением условного выражения В нашем случае в классе Компания всего один объект, и он сразу становится текущим В результате выполнения операции self.отдел будет получено множество объектов,соответствующих всем отделам компании При выполнении операции collect (служащие) для каждого объекта-отдела по экземпляруассоциации с объектами класса Служащие будет образовано множество объектов-служащихданного отдела, а в результате будет образовано множество объектов, соответствующих всемслужащим всех отделов компании, т.е.
всем служащим компании29.10.2009С.Д. Кузнецов. Базы данных.141Проектирование РБДДиаграммы классов языка UML(62)Ограниченияязык OCL (31) Инварианткласса (22)Плюсы целостностии минусыииспользованияязыкаOCLприпроектировании реляционных баз данныхЯзык OCL позволяет формально и однозначно(без двусмысленностей, свойственныхестественным языкам) определять ограниченияцелостности БД в терминах ее концептуальнойсхемыСкорее всего, наличие подобной проектнойдокументации будет полезным длясопровождения БД, даже если придетсяпреобразовывать инварианты OCL вограничения целостности SQL вручную29.10.2009С.Д.
Кузнецов. Базы данных.142Проектирование РБДДиаграммы классов языка UML(63)Ограниченияцелостности и языкOCL (32) использованияИнвариант класса (23)К отрицательнымсторонамOCLотносится, прежде всего, сложность языка инеочевидность некоторых его конструкцийКроме того, строгость синтаксиса и линейнаяформа языка в некотором роде противоречатнаглядности и интуитивной ясности диаграммнойчасти UMLДа, в инвариантах OCL используются те жепонятия и имена, что и в соответствующейдиаграмме классов, но используются совсем вдругой манере29.10.2009С.Д. Кузнецов. Базы данных.143Проектирование РБДДиаграммы классов языка UML(64)Ограниченияязык опровергнутьOCL (33) Инвариант классаТрудно целостностидоказатьииликак (24)предположение, что на языке OCL можновыразить любое ограничение целостности,которое можно определить средствами SQL, таки утверждение, что на языке OCL нельзявыразить такой инвариант, для которогоокажется невозможным сформулироватьэквивалентное ограничение целостности наязыке SQLНеизвестны работы, в которых бы сравниваласьвыразительная мощность этих языков в связи сограничениями целостности реляционных БД29.10.2009С.Д.
Кузнецов. Базы данных.144Проектирование РБДДиаграммы классов языка UML(65)Получениереляционнойбазынаданныхиз диаграммыклассов UMLЕсли несхемыобращатьвниманияразличияв терминологии,тоздесь выполняются практически те же шаги, что и в случае(1) преобразования в схему реляционной БД ER-диаграммы Поэтому ограничимся только некоторыми рекомендациями,специфичными для диаграмм классов. Рекомендация 1. Прежде чем определять в классахоперации, подумайте, что вы будете делать с этимиопределениями в среде целевой РСУБД Если в этой среде поддерживаются хранимые процедуры, то,возможно, некоторые операции могут быть реализованыименно с помощью такого механизма Но если в среде РСУБД поддерживается механизмопределяемых пользователями функций, возможно, онокажется более подходящим29.10.2009С.Д.
Кузнецов. Базы данных.145Проектирование РБДДиаграммы классов языка UML(66)Получениесхемы реляционнойбазы данныхдиаграммы классов UML Рекомендация2. Помните,чтоиз сравнительно(2) эффективнов РСУБД реализуются толькоассоциации видов «один ко многим» и «многиеко многим»Если в созданной диаграмме классов имеютсяассоциации «один к одному», следует задуматься оцелесообразности такого проектного решенияРеализация в среде РСУБД ассоциаций с точнозаданными кратностями ролей возможна, но требуетопределения дополнительных триггеров, выполнениекоторых понизит эффективность29.10.2009С.Д.
Кузнецов. Базы данных.146Проектирование РБДДиаграммы классов языка UML(67)Получениесхемы реляционнойбазы данных из диаграммыклассов UMLРекомендация3. В спецификацииUML говоритсяо том, что, определяя однонаправленные связи,(3)вы можете способствовать эффективностидоступа к некоторым объектамДля технологии реляционных баз данных поддержкатакого объявления вызовет дополнительныенакладные расходы и тем самым снизитэффективностьРекомендация 5.
Не злоупотребляйтевозможностями OCLДиаграммы классов UML – это мощныйинструмент для создания концептуальных схембаз данных, но, как известно, все хорошо в меру29.10.2009С.Д. Кузнецов. Базы данных.147Проектирование РБДДиаграммы классов языка UML(68)Нельзя сказать, что проектирование баз данныхЗаключение(1)на основе семантическихмоделей в любомслучае ускоряет и/или упрощает процесспроектированияВсе зависит от сложности предметной области,квалификации проектировщика и качествавспомогательных программных средствНо так или иначе этап диаграммного моделированияобеспечивает следующие преимущества:На раннем этапе проектирования до привязки кконкретной РСУБД проектировщик можетобнаружить и исправить логические недочетыпроекта, руководствуясь нагляднымграфическим представлением концептуальнойсхемы29.10.2009С.Д. Кузнецов. Базы данных.148Проектирование РБДДиаграммы классов языка UML(69)Нельзя сказать, что проектирование баз данных на основесемантических моделей в любом случае ускоряет и/илиупрощает процесс проектированияВсе зависит от сложности предметной области,квалификации проектировщика и качества вспомогательныхпрограммных средствНо так или иначе этап диаграммного моделированияобеспечивает следующие преимущества: На раннем этапе проектирования до привязки к конкретнойРСУБД проектировщик может обнаружить и исправитьлогические недочеты проекта, руководствуясь нагляднымграфическим представлением концептуальной схемыЗаключение (2)29.10.2009С.Д.
Кузнецов. Базы данных.149Проектирование РБДДиаграммы классов языка UML(70)Окончательный вид концептуальной схемы, полученнойнепосредственно перед переходом к формированиюреляционной схемы, а может быть, и промежуточнойверсии концептуальной схемы, должен стать частьюдокументации целевой реляционной БДЗаключение (3)Наличие этой документации очень полезно длясопровождения и, в особенности, для изменения схемыБД в связи с изменившимися требованиями.При использовании CASE-средств концептуальноемоделирование БД может стать частью всего процессапроектирования целевой информационной системы,что должно способствовать правильной структуризациипроцесса, эффективности и повышению качествапроекта в целом29.10.2009С.Д.
Кузнецов. Базы данных.150Проектирование РБДДиаграммы классов языка UML(71)В контексте проектирования реляционных БД структурныеЗаключение(4) основанные на использовании ERметоды проектирования,диаграмм, и объектно-ориентированные методы,основанные на использовании языка UML, различаются,главным образом, лишь терминологиейER-модель концептуально проще UML, в ней меньшепонятий, терминов, вариантов примененияИ это понятно, поскольку разные варианты ER-моделейразрабатывались именно для поддержки проектированияреляционных БД, и ER-модели почти не содержатвозможностей, выходящих за пределы реальныхпотребностей проектировщика реляционной БД29.10.2009С.Д.
Кузнецов. Базы данных.151Проектирование РБДДиаграммы классов языка UML(72)Язык UML принадлежит объектному мируЗаключение(5)Этот мир гораздо сложнее (если угодно, непонятнее,запутаннее) реляционного мираПоскольку UML может использоваться дляунифицированного объектно-ориентированногомоделирования всего чего угодно, в этом языке содержитсямасса различных понятий, терминов и вариантовиспользования, избыточных с точки зрения проектированияреляционных БДЕсли вычленить из общего механизма диаграмм классов то,что действительно требуется для проектированияреляционных БД, то мы получим в точности ER-диаграммы сдругой нотацией и терминологией29.10.2009С.Д. Кузнецов.
Базы данных.152Проектирование РБДДиаграммы классов языка UML(73)Поэтому выбор конкретной концептуальной модели – этоЗаключение(6)вопрос вкуса и сложившихсяобстоятельствПонятно, что если в организации уже имеется сложившаясяинфраструктура проектирования приложений, то разумнопродолжать ею пользоваться до тех пор, пока это не станеттормозомПри построении же новой инфраструктуры стратегическиесоображения высшего руководства компании имеютбольший вес, чем предпочтения технических специалистов,хотя эти предпочтения тоже обязательно должныучитываться29.10.2009С.Д.
Кузнецов. Базы данных.153Проектирование РБД.