ответы к зачёту по Базам Данных (2009), страница 10
Описание файла
Документ из архива "ответы к зачёту по Базам Данных (2009)", который расположен в категории "". Всё это находится в предмете "базы данных" из 5 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "ответы к зачёту по Базам Данных (2009)"
Текст 10 страницы из документа "ответы к зачёту по Базам Данных (2009)"
Стереотип – механизм расширения семантики UML, позволяющий создать новые элементы UML на основе существующих, с учетом особенности решения задачи.
В стандарте предусмотрен набор стереотипов.
Класс
Стереотип
<<enumeration>> Sex |
М |
Ж |
//Определение перечисляемого типа |
-
Диаграммы классов языка UML. Категории связей и их отображение на диаграмме. Примеры.
Связью-обобщением называется связь между общей сущностью (суперкласс/родителем) и более специализированным типом этой сущности (подкласс/потомок).
Полиморфизмом по включению – объекты потомка могут использоваться везде, где могут использоваться объекты предка. Потомок наследует все атрибуты и операции предка.
У класса есть скрытое свойство isAbstract – может ли класс иметь объекты.
Множественное наследование – подкласс определяется на основе нескольких суперклассов.
Ассоциацией называется структурная связь между объектами одного класса и объектами другого или того же самого класса (изображается линией).
В ассоциации могут связываться два класса, и тогда она называется бинарной. Допускается создание ассоциаций, связывающих n классов – n-арные ассоциации.
С ассоциацией связаны 5 важных понятий: имя, роль, кратность, агрегация и навигация.
У связи может быть имя, треугольник указывает направление чтения имени связи; у каждого класса может быть роль в ассоциации;
кратность (задается числом, интервалом, списком значений и интервалов, * - бесконечность) показывает, сколько объектов класса может/должно участвовать в экземпляре ассоциации.
А грегация в UML используется для отображения связи «часть-целое» (класс-целое имеет более высокий концептуальный уровень).
И ногда связь «части» и «целого» настолько сильна, что «часть» может быть частью только 1 «целого», и уничтожение «целого» приводит к уничтожению всех его «частей». Такие агрегации– композитные.
Н авигация может осуществляться в обоих направлениях. Для некоторых ассоциаций желательно ограничить навигацию (стрелка).
С точки зрения библиотеки разумно произвести навигацию от объекта-библиотеки к связанным с ним объектам-книгам. Однако вряд ли потребуется по данному экземпляру книги узнать, в какой библиотеке она находится
-
Язык OCL. Инварианты OCL. Основные типы данных и выражения.
В UML 2 способа определения ограничений: на естественном языке и на языке OCL. Более точный и лаконичный способ формулировки ограничений обеспечивает язык OCL (Object Constraints Language).
Из языка UML в OCL заимствованы, в первую очередь, следующие концепции:
-
класс, атрибут, операция;
-
объект (экземпляр класса);
-
ассоциация;
-
тип данных (включая набор типов Boolean, Integer, Real и String);
-
значение (экземпляр типа данных).
В OCL предопределены структурные типы, которые являются разновидностями типов коллекций (collection):
-
математическое множество (set), неупорядоченная коллекция, нет одинаковых элементов;
-
мультимножество (bag), неупорядоченная коллекция, которая может содержать элементы-дубликаты;
-
последовательность (sequence), упорядоченная коллекция, которая может содержать элементы-дубликаты.
-
упорядоченное множнество (ordered set), упорядоченная коллекция, нет одинаковых элементов;
OCL может применяться для определения ограничений, описывающих пред- и постусловия операций классов, и ограничений, представляющих собой инварианты классов.
Инвариант класса – это логическое выражение, вычисление которого должно давать true при создании любого объекта данного класса и сохранять истинное значение в течение всего времени существования этого объекта.
Синтаксис определения инварианта:
context <class_name> inv:
<OCL-выражение>
Пример (существует человек, обладающий контрольным пакетом акций)
Context Компания inv:
Self.акционер =>Exists
(a:человек|a.количествоакций >= self.количествоакций div 2 +1)
Операции над объектами
<объект>.<имя_атрибута> (значение атрибута)
<объект>.<имя_роли> (переход по соединению, под именем имеется ввиду имя роли объекта на другом конце связи)
<объект>.<имя_операции>(фактический параметр, т.е. можно вызвать операцию)
Операции над коллекциями
<коллекция> <имя операции> (<список фактических параметров>)
Select(iterat/логическое выражение) | Результат – новая коллекция (из старых элементов, удовлетворяющих логическому выражению) |
collect(iterat/выражение) | Результат – новая коллекция (элементы вычисляются по выражению) |
exists(iterat/логическое выражение) | True, если выполнено хоты бы для 1 элемента |
forAll(iterat/логическое выражение) | True, если выполнено для всех элементов |
Size() | Число элементов |
union, intersect, symmetricDifference | |
At(index) | |
Count(element) | |
Includes/excludes(element) |
Тип | Операции |
Boolean | And or xor implies if_then_else |
Integer | +-*/ div mod min max сравнение |
Real | +-*/ abs float round min max сравнение |
String | Concat size substring toUpper toLower |
-
Получение реляционной схемы из диаграммы классов. Основные проблемы и рекомендации.
Рекомендации:
-
не увлекайтесь определением операций в классах
-
старайтесь избегать множественное наследие и осторожно использовать одиночное
-
реализ. в СУБД с точно заданными кратностями возможно, но предпочтит. доп. триггеров и ограничений (уменьшает эффективность)
-
агрег. ассоциации не естественны, компоретные (ПОПРАВЬТЕ, НЕ РАЗОБРАЛ) влияют только на способ поддержки ссылочной целостности
-
однонаправленные связи естественны только для объектно-ориентированных СУБД. Для реляционных БД поддержка вызывает дополнительные накладные расходы, значит, снижается эффективность.
-
не злоупотребляйте ограничениями (снижается эффективность)
-
Язык баз данных SQL. Основные отличия SQL-ориентированной модели от реляционной модели. Стандарт SQL:2003 – основные тома. Структура языка SQL (три различных схемы).
В стандартах SQL определяется собственная модель данных, она похожа на реляционную, но значительно отличается. Итак, 2 важных отличия:
-
В SQL данные – это набор таблиц, каждая таблица содержит мультимножество строк, соответствующих заголовку таблицы. В реляционной модели “фундаментальная абстрактная «родовая» структура данных отношение, представляет собой множество кортежей.” (прим.Валеры. Я сам не понял смысла, извините)
-
В SQL для таблицы поддерживается порядок столбцов, соответствующий порядку их определения. В реляционной модели атрибуты отношения не упорядочены.
Другими словами, таблица – это вовсе не отношение, хотя во многом они похожи.
Отмечается, что из этого следует, что:
-
в SQL отсутствует обязательное предписание об ограничении целостности сущности.
-
В базе данных могут существовать таблицы, для которых не определен первичный ключ.
С другой стороны, если для таблицы определен первичный ключ, то для нее ограничение целостности сущности поддерживается так же как и в реляционной модели данных.
Ссылочная целостность в модели данных SQL поддерживается в обязательном порядке, но в трех разных вариантах, лишь один из которых полностью соответствует реляционной модели. Это связано с интенсивным использованием в SQL неопределенных значений.
Стандарт SQL:2003 – основные тома:
-
9075-1, SQL/Framework;
-
9075-2, SQL/Foundation;
-
9075-3, SQL/CLI;
-
9075-4, SQL/PSM;
-
9075-9, SQL/MED;
-
9075-10, SQL/OLB;
-
9075-11, SQL/Schemata;
-
9075-13, SQL/JRT;
-
9075-14, SQL/XML.
Структура языка SQL
1. Классификация, ориентированная на производителей СУБД (изнутри). Здесь каждая компания может выбрать уровни, которые они реализуют для своей БД. Язык разбивается на базовый (entry), промежуточный (intermediate) и полный (full) уровни.
2. Классификация, ориентированная на программиста приложений БД(снаружи):
Прямой – например,интерактивная консоль(вы пишете SELECT * FROM… , и вам сразу выдают результат)
встраиваемый – например, реализация библиотек для языков программирования, что бы можно было в этих программах использовать SQL,
динамический – здесь сам SQL запрос может динамически формироваться по ходу программы(в предыдущем сама “строка SQL запросы” была как бы “постоянна”).
3. Не нашел. В лекциях Маши нету.(прим.Валеры. Подтверждаю, тоже не нашел)
-
Основные типы данных языка SQL (без учета объектных расширений). Преобразования типов данных
Все данные, хранящиеся в таблицах, типизированы. Каждому столбцу определяемой таблицы приписывается свой собственный тип. СУБД должна следить за соответствием типов (допустимыми значениями).
Типы данных