- •Глава 1 введение в банки данных 12
- •Глава 2 концептуальное проектирование 72
- •Глава 3 даталогическое проектирование 183
- •Глава 4 целостность базы данных 233
- •Глава 5 создание и ведение баз данных 251
- •Глава 6 язык запросов qbe 294
- •Глава 7 язык sql 347
- •Глава 8 создание экранных форм и страниц доступа 400
- •Глава 9 создание отчетов 441
- •Глава 10 распределенные банки данных 474
- •Предисловие
- •Глава 1 введение в банки данных
- •1.1. Понятие банка данных
- •1.2. Компоненты банка данных
- •1.2.1. Информационный компонент
- •1.2.2. Программные средства БнД
- •1.2.3. Языковые средства БнД
- •1.2.4. Технические средства БнД
- •1.2.5. Организационно-методические средства
- •1.2.6. Администраторы банка данных
- •1.2.7. Взаимодействие компонентов БнД
- •1.3. Классификация банков данных
- •1.3.1. Классификация баз данных
- •1.3.2. Классификации субд
- •1.3.3. Классификационные группировки, относящиеся к БнД в целом
- •1.4. Выбор субд
- •1.4.1. Тенденции развития субд
- •1.4.2. Общая характеристика проблемы выбора субд
- •1.4.3. Факторы влияния на выбор субд
- •1.4.4. Выбор субд
- •1.5. Уровни моделей и этапы проектирования бд
- •1.5.1. Уровни моделей
- •1.5.2. Взаимосвязь этапов проектирования бд
- •1.5.3. Факторы влияния на проектирование бд
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 2 концептуальное проектирование
- •2.1. Общие сведения о моделировании предметной области
- •2.1.1. Уточнение понятия концептуальной модели
- •2.1.2. Основные компоненты концептуальной модели
- •2.1.3. Требования, предъявляемые к концептуальной модели
- •2.1.4. Преимущества использования er-моделирования
- •2.2. Описание базовой er-модели
- •2.2.1. Понятия «объект» и «класс объектов»
- •2.2.2. Разновидности объектов
- •2.2.3. Изображение простого объекта
- •2.2.4. Описание свойств объекта. Разновидности свойств
- •2.2.5. Алгоритмические зависимости
- •2.2.6. Интегральные характеристики класса объектов
- •2.2.7. Связи между объектами
- •2.2.8. Сложные объекты
- •2.2.9. Рекомендации по построению базовой er-модели
- •2.3. Сравнение методик построения er-моделей
- •2.3.1. Несущественные различия в использовании условных обозначений
- •2.3.2. Различия в использовании и изобразительных средств, приводящие к изменениям в методике построения модели
- •2.3.3. Пространственное размещение элементов er-модели
- •2.3.4. Отсутствующие возможности
- •2.3.5. Различия в классификации объектов и отношений между ними
- •2.3.6. Терминологические различия
- •2.3.7. Соглашения по именованию элементов er-модели
- •2.3.8. Дополнительные характеристики case-средств
- •2.3.9. Использование графических пп для изображения er-моделей
- •2.4. Особенности методологии построения er-моделей
- •2.5. Использование Design/idef для проектирования баз данных
- •2.5.1. Построение er-модели при использовании Design/idef Общая характеристика
- •Описание сущности
- •Описание связи
- •Описание обобщенного объекта
- •2.5.2. Методология построения er-модели при использовании Design/idef
- •2.6. Особенности моделирования в erWin
- •2.6.2. Построение логической модели Создание новой сущности
- •Описание свойств сущности
- •Дополнительные свойства атрибутов
- •Описание обобщенных объектов
- •Задание связей между сущностями
- •2.6.3. Особенности методологии моделирования
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 3 даталогическое проектирование
- •3.1. Общие сведения о даталогическом проектировании
- •3.1.1. Исходные данные для даталогического проектирования
- •3.1.2. Результат даталогического проектирования
- •3.1.3. Подход к даталогическому проектированию
- •3.1.4. Определение состава базы данных
- •3.1.5. Введение искусственных идентификаторов
- •3.1.6. Критерии оценки бд
- •3.2. Особенности даталогических моделей
- •3.2.1. Внутризаписная структура
- •3.2.2. Межзаписная структура
- •3.3. Проектирование логической структуры реляционной базы данных
- •3.3.1. Вводные положения
- •3.3.2. Алгоритм перехода от базовой er-модели к схеме реляционной базы данных
- •Отображение простых объектов
- •Отображение связи между объектами
- •Отображение сложных объектов
- •Использование дополнительных характеристик концептуальной модели
- •Дополнительные рекомендации по проектированию бд
- •3.4. Создание физической модели в erWin
- •3.4.1. Выбор целевой субд
- •3.4.2. Нотации, используемые при построении физической модели
- •3.4.3. Уровни просмотра физической модели
- •3.4.4. Сравнение логической и физической моделей
- •3.4.5. Создание хранилищ данных
- •3.4.6. Переход к даталогической модели
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 4 целостность базы данных
- •4.1. Классификация ограничений целостности
- •4.2. Er-модели и ограничения целостности
- •4.3. Задание ограничений целостности в erWin
- •4.3.1. Обязательный атрибут
- •4.3.2. Ограничения целостности связи
- •4.3.3. Триггер ссылочной целостности
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 5 создание и ведение баз данных
- •5.1. Описание структуры баз данных. Общие сведения
- •5.2. Создание бд в Microsoft Access
- •5.2.1. Создание новой таблицы путем описания ее структуры
- •Описание полей таблицы
- •Определение ключа таблицы
- •Свойства полей
- •Сохранение описания таблицы
- •Создание таблиц для контрольного примера
- •5.2.2. Изменение структуры таблиц
- •5.2.3. Другие способы создания таблиц
- •5.2.4. Связывание таблиц
- •5.2.5. Просмотр связанных таблиц
- •5.2.6. Задание ограничений целостности в Access
- •Ограничения, относящиеся к полю
- •Ограничения, относящиеся к записи
- •Целостность связи
- •5.3. Организация ввода и корректировки данных в бд
- •5.3.1. Общие сведения
- •5.3.2. Возможности ввода данных в Access
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 6 язык запросов qbe
- •6.1. Общая характеристика языка qbe
- •6.2. Реализация ове в Access
- •6.2.1. Общие сведения
- •Добавление таблиц в запросе
- •Удаление таблицы из запроса
- •6.2.4. Включение полей в запрос
- •6.2.5. Поля, выводимые в ответ
- •6.2.6. Управление выводом повторяющихся строк
- •6.2.7. Простые запросы
- •6.2.8. Сложные запросы
- •6.2.9. Просмотр ответа
- •6.2.10. Определение числа записей, выводимых в ответ
- •6.2.11. Формирование запросов к связанным таблицам
- •6.2.12. Выполнение агрегирующих операторов
- •6.2.13. Вычисляемые поля
- •6.2.14. Перекрестные запросы
- •6.2.15. Создание запроса с параметрами
- •6.2.16. Корректирующие запросы
- •6.2.17. Запрос на создание таблицы
- •6.2.18. Специальные запросы
- •6.2.19. Режим сводной таблицы и сводной диаграммы
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 7 язык sql
- •7.1. Общая характеристика sql
- •7.2. Описание базы данных
- •7.2.1. Описание таблиц
- •7.2.2. Ограничения целостности
- •7.3. Запросы на выборку
- •7.4. Возможности корректировки хранимых данных
- •7.5. Создание представлений (view)
- •7.6. Создание и использование курсоров
- •Управление транзакциями
- •7.8. Стандартный sql-92
- •7.8.1. Создание объектов Виды объектов
- •Определение таблицы
- •Определение домена
- •7.8.2. Запросы Оператор select
- •Запросы, затрагивающие несколько таблиц
- •Корректирующие операторы
- •7.8.3. Создание представлений (view) Оператор create view
- •Цели использования представлений
- •Ограничения при использовании представлений
- •Создание представлений с использованием erWin
- •7.8.4. Курсоры
- •7.9. Ms Jet Access sql
- •7.9.1. Оператор select Общая характеристика оператора
- •Предложение select
- •Предложение from
- •Предложение where
- •Предложение group by
- •Предложение having
- •Предложение order by
- •7.9.2. Подчиненные запросы sql
- •7.9.3. Корректирующие операторы Добавление
- •Обновление
- •Удаление записей
- •7.9.4. Запрос к серверу
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 8 создание экранных форм и страниц доступа
- •8.1. Понятие, классификация и роль экранных форм
- •8.2. Рекомендации по созданию форм
- •8.3. Создание экранных форм в субд Access
- •8.3.1. Выбор способа создания формы
- •8.3.2. Создание форм с помощью Мастера Создание простой связанной формы с помощью Мастера
- •Создание многотабличной формы с помощью Мастера
- •8.3.3. Корректировка формы в режиме Конструктор
- •Изменения, связанные с уже включенными в форму элементами управления
- •Включение новых элементов в форму
- •Изменение типа элемента управления
- •Создание форм, состоящих из нескольких страниц
- •Последовательность обхода полей
- •Свойства формы
- •Задание ограничений целостности при создании форм
- •Добавление кнопок в форму
- •8.3.4. Кнопочная форма
- •8.3.5. Возможные случаи возникновения ошибок
- •8.3.6. Открытие формы в режиме сводной таблицы или в режиме диаграммы
- •8.3.7. Создание страниц доступа
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 9 создание отчетов
- •9.1. Общая характеристика отчетов
- •9.2. Создание отчетов в системе Access
- •9.2.1. Выбор способа создания отчета
- •9.2.2. Создание отчетов с использованием Мастера отчетов
- •9.2.3. Корректировка отчета в режиме Конструктор Переход в режим Конструктор
- •Корректировка отчета
- •Вычисления в отчете
- •Ввод нового поля в отчет
- •Группировка
- •Использование графических элементов
- •Задание номеров страниц
- •9.2.4. Создание отчета, базирующегося на нескольких таблицах
- •9.2.5. Создание сложных отчетов
- •9.2.6. Свойства
- •9.2.7. Создание отчета анкетной формы
- •9.2.8. Совместная работа с другими приложениями ms Office
- •На это следует обратить внимание
- •Контрольные вопросы
- •Глава 10 распределенные банки данных
- •10.1. Основные понятия
- •10.2. Классификация рБнД
- •10.3. Транзакции
- •10.3.1. Понятие транзакции
- •10.3.2. Плоские транзакции
- •10.3.3. Контрольные точки
- •10.3.4. Многозвенные транзакции
- •10.3.5. Вложенные транзакции
- •10.4. Проблемы параллелизма и пути их решения
- •10.4.1. Параллелизм
- •10.4.2. Блокировки
- •10.4.3. Режимы доступа к информации
- •10.4.4. Уровни изоляции в sql
- •10.4.5. Использование хранимых процедур и триггеров для контроля целостности бд
- •10.5. Тиражирование данных
- •10.5.1. Основные понятия
- •10.5.2. Преимущества и недостатки тиражирования
- •10.5.3. Виды тиражирования
- •10.6. Обеспечение целостности и безопасности данных в рбд
- •10.6.1. Особенности обеспечения целостности в рбд
- •10.6.2. Средства защиты данных Способы защиты данных
- •Создание и удаление пользователей
- •Определение и отмена привилегий
- •10.7. Работа в распределенной среде при использовании субд Access
- •10.7.1. Способы совместного использования данных в Access
- •10.7.2. Виды блокировок
- •10.7.3. Проекты Microsoft Access
- •10.7.4. Средства защиты Microsoft Access Управление правами доступа пользователей
- •Средства защиты бд
- •На это следует обратить внимание
- •Контрольные вопросы
- •Приложения
- •1. Основные понятия реляционной модели данных
- •1. Информационные единицы.
- •2. Ключи.
- •3. Связи.
- •2. Сквозной пример использования er-моделирования для проектирования бд
- •Глоссарий
- •Литература
- •Сокращения
Описание обобщенных объектов
В ERWin можно изображать обобщенные объекты. Для этого следует предварительно изобразить как родовой, так и видовые объекты. Далее нужно на панели элементов выбрать кнопку после чего щелкнуть левой кнопкой мыши по родительской, а затем по видовой сущности. Для установления связи со следующим видовым объектом надо сначала щелкнуть левой кнопкой мыши на схеме по символу категории, а затем - по следующей видовой сущности.
На рис. 2.84 изображен фрагмент модели, на котором для сущности СОТРУДНИК выделены две категории: ШТАТНЫЕ и СОВМЕСТИТЕЛИ.
Рис. 2.84. Изображение обобщенного объекта
Обобщенный объект называют иерархией категорий. Различают полные (Complete sub-category) и неполные (Incomplete sub-category) категории. На панели элементов имеется только знак полной категории. Чтобы изменить знак категории, необходимо позиционироваться на нем, щелкнуть левой кнопкой мыши и в контекстном меню выбрать позицию Subtype Relationship. В появившемся окне (рис. 2.85) следует выбрать переключатель Incomplete.
Рис. 2.85. Редактор связи подтипов
Чтобы задать имя признака, по которому проведено деление класса на подклассы, соответствующий атрибут должен быть введен в описание родовой сущности. После этого во внутреннем окне Discriminator Attribute Choice окна редактирования связи подтипа следует позиционироваться на этот атрибут (рис. 2.86).
Рис. 2.86. Определение дискриминатора
После выполненных манипуляций фрагмент логической модели, отражающий обобщенный объект СОТРУДНИК, приобрел вид, изображенный на рис. 2.87.
Рис. 2.87. Изображение обобщенного объекта
с заданным именем дискриминатора
Задание связей между сущностями
Виды связей. Прежде чем задавать связь между сущностями, необходимо определить тип этой связи. В ERWin, как и в большинстве других систем, можно задавать только бинарные связи (связи между двумя сущностями). Могут быть заданы:
идентифицирующая связь «один ко многим» ()
неидентифицирующая связь «один ко многим» ()
связь «многие ко многим» ()
Для того чтобы задать связь, нужно выбрать соответствующую этой связи кнопку, после чего щелкнуть кнопкой мыши сначала на родительской, а потом - на дочерней сущности. При задании связи М:М направление связи значения не имеет.
Чтобы отредактировать свойства связи, следует, установив указатель мыши на линии связи, щелкнуть правой кнопкой мыши и в контекстном меню выбрать позицию Relationship Editor. В появившемся окне (рис. 2.88) следует выбрать подходящие для данной связи характеристики. Кроме выбора/изменения типа связи (идентифицирующая/неидентифицирующая) можно задать подходящее кардинальное число. Смысл каждого из возможных значений кардинальности понятен из их названий.
Рис. 2.88. Задание типа и кардинальности связи
Для обозначения типа связи в нотации ERWin/IDEF используются следующие обозначения: идентифицирующая связь изображается сплошной линией, неидентифицирующая - пунктирной. Множественный конец связи обозначается точкой, для единичного конца не используется никакого специального обозначения. Если при описании неидентифицирующей связи выбрана опция Null Allowed, то на соответствующем конце связи используется символ ромбика.
Для обозначения кардинального числа используются символы:
Р - один или много;
Z - нуль или один;
выбранное при описании связи число - Exactly.
По умолчанию символ, определяющий кардинальное число, не отображается на схеме. Для его отображения следует из контекстного меню включить соответствующую опцию (рис. 2.89).
Рис. 2.89. Опции отображения для связей
Примеры изображения связей. На рис. 2.90 отображено описание связи между объектами ПОДРАЗДЕЛЕНИЕ и СОТРУДНИК. В подразделении должен работать хотя бы один сотрудник; идентификатор сотрудника не зависит от идентификации подразделений; сотрудник обязательно приписан к какому-либо подразделению.
Если между объектами задана идентифицирующая связь, то блок Nulls является неактивным.
При соединении объектов идентифицирующей связью графическое представление целевой сущности автоматически изменяется (вместо прямоугольника используется фигура с закругленными углами; такая сущность называется зависимой по идентификации сущностью).
На рис. 2.91 изображен фрагмент ER-модели, включающий все допустимые типы связи и кардинальности. Связь между ГРУППОЙ и СЛУШАТЕЛЕМ означает, что занятия проводятся либо в группах численностью 10 человек, либо индивидуально. При задании связи между СОТРУДНИКОМ и ЗАГРАН_ПАСПОРТОМ предполагалось, что сотрудник может иметь только один загранпаспорт либо не иметь его вообще.
Рис. 2.90. Пример описания неидентифицирующей связи
Рис. 2.91. Фрагмент ER-модели. Виды связи
Задание имен связи. В ERWin, так же как и в нашей базовой модели, можно задавать, а можно и не задавать имена связи (Verb Phrase). Для того чтобы задать имя связи, необходимо войти в редактор связей (Relationship Editor) и на вкладке General в блоке Verb Phrase в окнах Parent-to-Child и Child-to-Parent задать имя связи в прямом или обратном направлении соответственно (рис. 2.92).
Рис. 2.92. Задание имен связи
Заданные при описании связи имена могут отображаться, а могут и не отображаться на экране. Для управления этим процессом можно воспользоваться позицией Display Options/Relationships (рис. 2.93).
Рис. 2.93. Опции отображения связи (выбрана позиция Verb Phrase)
На рис. 2.94 представлен фрагмент ER-модели с отображенными на ней именами связей.
Рис. 2.94. Отображение имени связи
Задание нескольких связей между парой сущностей. В ERWin возможно задание нескольких связей между парой объектов (рис. 2.95). По умолчанию в этом случае на схеме в подчиненной сущности появляется только один внешний ключ.
Рис. 2.95. Задание двух связей между сущностями (вариант по умолчанию)
Для того чтобы появились оба ключа, при описании связи на вкладке Rolename/RI Action (рис. 2.96) следует указать ролевые имена (Rolename).
Рис. 2.96. Задание ролевого имени связи
На рис. 2.97 представлен фрагмент модели после задания ролевых имен и с опциями отображения, отмеченными на рис. 2.98.
Рис. 2.97. Задание двух связей между сущностями
(с указанием ролевых имен)
Рис. 2.98. Опции просмотра сущности
Вид модели в нотации IE. Модель в нотации IDEF (рис. 2.99) в нотации IE имеет вид, представленный на рис. 2.100.
Идентифицирующая связь, так же как и в нотации IDEF1X, изображается в нотации IE сплошной линией, а неидентифицирующая -пунктирной.
Соответствие между условными обозначениями нотаций IDEF1X и IE отражено в табл. 2.4.
Уровни отображения логической модели. Модель можно отображать на экране с разной степенью детализации: только сущности (Entity), все атрибуты (Attribute), сущности и их первичные ключи (Primary Key), описания (Definition), иконки (Icon). Для выбора нужного уровня отображения можно воспользоваться контекстным меню (рис. 2.101).
Во всех предшествующих примерах при изображении модели использовался уровень Attribute. На рис. 2.102 показан вид модели при выборе уровня Entity.
При выборе уровня Definition внутри прямоугольника, отображающего сущность, пишется то определение, которое было в окне Definition при описании сущности (рис. 2.103).
При использовании уровня иконок в прямоугольнике, соответствующем сущности, кроме названия сущности изображается специально подобранная иконка (рис. 2.104), что может повысить наглядность модели.
Рис. 2.99. ER-модель в нотации IDEF
Рис. 2.100. ER-модель в нотации IE
Таблица 2.4
Рис. 2.101. Выбор уровня отображения модели (Display Level)
Рис. 2.102. Уровень сущности
Рис. 2.103. Уровень описаний
Рис. 2.104. Уровень иконок