- •Глава 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-моделирования для проектирования бд
- •Глоссарий
- •Литература
- •Сокращения
Сокращения
АБД - администратор базы данных
АБнД - администратор банка данных
АИС - автоматизированная информационная система
БД - база данных
БнД - банк данных
ДЛМ - даталогическая модель базы данных
ИБД - интенсиональная база данных
ИЕ - информационная единица
ИЛМ - инфологическая модель предметной области
ИО - идентификатор объекта
ИС - информационная система
КБнД - коммерческий банк данных
КМ - концептуальная модель
ООБД - объектно-ориентированные базы данных
ОС - операционная система
ПО - предметная область
ПП - программный продукт
ППП - пакет прикладных программ
РБД - распределенные базы данных
РБнД - распределенные банки данных
РСБД - расширяемая система баз данных
СВТ - средства вычислительной техники
СЕИ - составная единица информации
СОД - система обработки данных
СООБД - система объектно-ориентированных баз данных
СППР - система поддержки принятия решений
СУБД - система управления базами данных
ЭБД - экстенсиональная база данных
ЯЗ - язык запросов
ЯМД - язык манипулирования данными
ЯОД - язык описания данных
ЯОПС - язык описания подсхем
ЯОС - язык описания схем
ЯОСХ - язык описания схем хранения
ЯОХД - язык описания хранимых данных
2РС (Two-Phase Commit) - двухфазная фиксация - метод синхронного внесения изменений в несколько БД
ACID (Atomicity, Consistency, Isolation, Durability) - атомарность, непротиворечивость, изолированность, долговечность
AL (Access Layer) - уровень доступа к ресурсам
API (Aplication Programming Interface) - интерфейс прикладного программирования
BL (Business Layer) - уровень бизнес-логики
BPM (Business Process Model) - модель бизнес-процесса
BPR (Business Process Re-engineering) - бизнес-процесс реинжиниринг (БПР)
CASE (Computer-Aided Software Engineering,) - система автоматизированной разработки программ
CODASYL (Conference on DAta SYstems Languages) - Конференция по языкам информационных систем
CORBA (Common Object Request Broker Architecture) - единая архитектура программы-брокера Объектных Запросов. Составная Часть (ОМА); другой перевод - общий брокер объектных заявок
DBA (DataBase Administration) - администрирование базы данных DBMS (DataBase Management System) - система управления базами данных (СУБД)
DCL (Data Control Language) - язык управления данными
DDB (Distributed DataBase) - распределенная база данных (РБД)
DDE (Dynamic Data Exchange) - динамический обмен данными
DDL (Data Definition Language) - язык определения данных
DFD (Data Flow Diagrams) - диаграммы потоков данных
DSS (Decision Support Systems) - системы поддержки принятия решения (СППР)
EIS (Executive Information System) - исполнительная информационная система (информационная система руководителя)
ERD (Entity-Relationship Diagrams) - диаграммы «сущность-связь»;
GUI (Graphical User Interface) - графический интерфейс пользователя (ГИП)
HTML (Hypertext Markup Language) - язык гипертекстовой разметки
ID API (Integrate Database Application Program Interface) - набор функций для доступа к разным базам данных
IE (Information Engineering) - информационный инжиниринг
IQ (Interactive Query) - интерактивные запросы
MDD (MultiDimensional Database ) - многомерные БД
ODBC (Open DataBase Connectivity) - стандарт интероперабельной работы с данными
OLAP(On-Line Analytical Processing) - оперативная аналитическая обработка данных
OLE (Object Linking Embedding) - метод связывания документа-контейнера и документа-сервера, при котором данные сервера сохраняются в том же файле, что и данные контейнера
OLTP (On-Line Transaction Processing) - система оперативной обработки транзакций
PL (Presentation Layer) - презентационный уровень
QBE (Query-By-Example) - запрос по примеру
RAD (Rapid Application Development) - средства быстрой разработки приложений
RDA (Remote Data Access) - доступ к удаленным данным
ROWA (Read-Once/Write-All) - одно чтение, запись во все копии
SQL (Stratured Query Language) - структурированный язык запросов
UML (Unified Modeling Language) - унифицированный язык моделирования
WYSIWYG (What You See Is What You Get) - «что видишь, то и получишь» (режим полного соответствия изображения на экране и распечатки)
XML (Extensible Markup Language) - расширяемый язык разметки
Общеотраслевые руководящие материалы по созданию банков данных. -М.: ГКНТ, 1982.
Закон «О правовой охране программ для электронных вычислительных машин и баз данных» от 23.09.92 № 3523-1.
Понятие «программа» здесь трактуется широко. Это могут быть, например, и экранные формы, созданные с использованием визуальных средств, и запросы, написанные на любом языке запросов.
Позднее появились предложения создавать сетевые компьютеры с собственными накопителями.
Первая коммерческая реляционная СУБД была выпущена фирмойOracleв 1979 г.
Во многих современныхCASE-средствах концептуальной моделью называетсяER-модель предметной области(см. главу 2), а физической - модель, поддерживаемая конкретной СУБД. Если первое еще можно считать удачным использованием термина (так какER-модель действительно отражает общую «концепцию» системы), то второе крайне неудачно, поскольку ни о какой «физике» речь здесь не идет.
Так, например, сертификация в России сервера баз данных Огас1е8 на аппаратной платформеHPс операционной системойUnixна соответствие высшему на сегодняшний день классу систем безопасности 1в обошласьOracleв 1 млн. долл. и длилась полтора года. За это время было проведено 12 тыс. штатных и примерно 5 тыс. специализированных испытаний. [Зырянов М. СУБД в законе //ComputerwordРоссия. - № 23 (136), 23 июня 1998 г.].
В предыдущих изданиях учебника [17, 18] для этого уровня моделирования использовался термин «инфологическое». Последнее время в литературных источниках этот термин используется редко. В данном издании учебника термины «инфологическое» и «концептуальное» моделирование используются как синонимы.
Следует обратить внимание на различие терминологии, используемой как в литературных источниках, так и в конкретныхCASE-системах. Так, во многихCASE-системахER-модель предметной области называется концептуальной схемой, а представление логической структуры целевой базы данных - физической моделью.
ER (Entity-Relationship) - сущность-связь.
Будем придерживаться следующего правила: если роль связи очевидна, то ее имя можно не указывать на схеме. Но в любом случае указание этого имени (или, наоборот, его отсутствие) не является ошибкой. Указание имени связи делает модель более информативной, легкой для понимания, но не оказывает влияния на алгоритм проектирования БД.
Другое название - взаимно исключающие подклассы (когда объект может входить в один из подклассов, но не в несколько одновременно).
CASE-системы являются сравнительно новым направлением в информационных технологиях. Так, первая версияCASE-инструментария фирмыOracleпоявилась в 1989 г.
Поскольку сущности в методологииIDEFфактически соответствуют таблицам реляционной базы данных, то целесообразно сначала изучить разд. 3.3, тогда рекомендации, излагаемые в данном разделе, будут более понятными.
В некоторых СУБД каждой таблице ставится в соответствие файл базы данных, в других - вся база данных хранится в одном файле. Здесь термины «файл», «таблица» и «отношение» используются как синонимы и не отражают способ физического хранения данных
В русскоязычной литературе не сложилась устойчивая терминология по хранилищам данных. В [25]Dimensional Model переведено какРазмерная модель. Иногда ее называютМодель измерений.
Для простоты изложения будем далее пользоваться в основном терминологией реляционных СУБД. Однако все сказанное ниже относится и к СУБД других классов.
* Поскольку в разных СУБД используется разная терминология, а изложение материала не привязано к какой-то конкретной СУБД, то все эти термины здесь используются как синонимы, хотя на самом деле это не так.
Если вы изучаете данный учебник, выполняя на компьютере описываемые действия, то временно отложите выполнение шагов по созданию поля подстановки из другой таблицы. Завершите создание таблицы «Сотрудник», как описано далее; затем создайте таблицу «Кафедры», свяжите эти таблицы. После этого откройте таблицу «Сотрудник» в режиме Конструктор и выполните описанные здесь шаги.
При работе сAccess(как, впрочем, и с другимиWindows-системами) рекомендуется активно пользоваться правой кнопкой мыши для вызова контекстного меню. Часто это бывает самым простым путем выбора нужного действия.
1В реляционной теории различают операции соединения и объединения. То, о чем идет сейчас речь, является реляционной операцией соединения. Но в системе Access обе эти операции называются «объединением», и когда рассматриваем, как это сделать в Access, то приходится переходить на терминологию этой системы
2 Запрос на добавление соответствует команде APPEND FROM в dBase и осуществляет вставку записей в конец таблицы; в SQL это соответствует команде Insert.
3Стандарт SQL был впервые опубликован в 1986 г. и обновлялся в 1989 и 1992 гг.
4Многие как настольные (например, dBase, FoxPro), так и корпоративные (например, MS SQL-сервер, Oracle) СУБД поддерживают механизм представлений. СУБД Access, на примере которой рассматривались выше основные конструкции SQL, такой механизм не поддерживает. Однако аналогичного эффекта можно достичь, используя предварительно сохраненные запросы при формировании новых запросов.
5Скобки сохранены в том виде, в котором они выданы системой при генерации запроса.
6Представление можно создать с помощью нового синтаксиса ANSI SQL CREATE VIEW, доступного через Microsoft® OLE DB Provider для Jet.
7Правильнее было бы это называть «соединением», а не «объединением», поскольку в реляционной алгебре операции «соединение» и «объединение» - это две разные операции, и операция JOIN соответствует «соединению».
8Американский формат даты означает «месяц-число-год», в то время как европейский формат означает «число-месяц-год».
9Так, например, в Access включено приложение «Решения», в котором иллюстрируются различные приемы работы с системой, и именно несвязанная форма исполняет роль Главного меню и служит для обращения к тем или иным формам и документам.
10Здесь под управляющими элементами будем понимать только те компоненты формы, которые выполняют какое-то действие над отдельными элементами формы или над всей формой, или над записями БД при манипулировании ими (например, кнопки, обеспечивающие переход к записи, выбор вводимого значения, закрытие формы и т.п.).
11Название вида формы «в один столбец» несколько условно. Действительно, при данном выборе создается экран «анкетной» формы: одна под другой располагаются пары «название поля/ содержание поля». Но когда полей много и они все не умещаются в один столбец на экране, система автоматически помещает их в два столбца, три и т.п.
12Такая возможность появилась начиная с версии Access 2002.
13На последнем шаге создания отчета можно было задать и другое имя отчета, в том числе и совпадающее с названием документа, которое указывается в его заголовочной части; в этом случае корректировки заголовка отчета не потребовалось бы.
14Решения Microsoft'99 (выпуск 7). Microsoft Corporation, 1999//Компьютер-Пресс.