- •Базы данных
- •Введение
- •Часть 1. Проектирование баз данных
- •1.1. Некоторые понятия и определения
- •1. 2. Модели данных
- •1.2.1. Иерархическая модель данных
- •1.2.2. Сетевая модель данных
- •1.2.3. Реляционная модель данных Основные определения
- •Типы связей между отношениями
- •1.3. Классификация баз данных
- •1.4. Цели проектирования баз данных
- •1.5. Проектирование баз данных с использованием универсального отношения
- •1.5.1. Универсальное отношение
- •1.5.2. Проблемы, вызываемые использованием универсального отношения
- •Проблема вставки
- •Проблемы обновления
- •Проблемы удаления
- •1.5.3. Нормальная форма Бойса -Кодда
- •Функциональные зависимости
- •Возможный ключ и детерминант
- •Общий подход к декомпозиции
- •Анализ исходных аномалий
- •1.5.4. Возможные потери фз при декомпозиции
- •1.5.5. Избыточные функциональные зависимости
- •Приемы удаления избыточных фз
- •Минимальное покрытие
- •Модернизированный алгоритм проектирования бд
- •1.5. Метод er - проектирования
- •1.5.1. Сущности и связи
- •1.5.2. Степень связи
- •1.5.3. Переход от диаграмм er – типа к отношениям
- •Предварительные отношения для бинарных связей степени 1:1
- •Предварительные отношения для бинарных связей степени 1:n.
- •Предварительные отношения для бинарных связей степени n:m
- •1.5.4. Дополнительные конструкции, используемые в er - методе
- •Необходимость связей более высокого порядка
- •Предварительные отношения для трехсторонних связей
- •Использование ролей
- •1.5.5. Последовательность проектирования бд при использовании er- метода
- •1.5.5. Проверка отношений на завершающейся фазе проектирования
- •1.7. Другие нормальные формы
- •Часть 2. Специальные аспекты работы с базами данных
- •2.1. Защита данных в базе
- •2.2.1. Общие вопросы защиты данных
- •2.2.2. Реализация защиты данных в различных системах
- •Управление доступом в sql
- •Реализация системы защиты в ms sql Server
- •2.2. Обеспечение целостности данных
- •2.3. Организация параллельных процессов обработки данных
- •2.4. Восстановление бд
- •2.4.1. Уровни восстановления.
- •2.4.2. Восстановление и логический элемент работы
- •Требования к лэр
- •2.4.3. Промежуточное восстановление
- •2.4.4. Длительное восстановление
- •2.5. Математический аппарат, используемый при работе с реляционной базой данных
- •2.5.1. Теоретико-множественные операции реляционной алгебры
- •2.5.2. Специальные операции реляционной алгебры
- •Часть 3. Разработка приложений для работы с базами данных
- •3.1. Краткий обзор субд
- •3.2. Субд Access
- •3.2.1. Вводные замечания
- •3.2.2. Создание базы данных
- •3.2.3. Создание и работа с таблицами
- •3.2.4. Работа с запросами
- •3.2.5. Создание форм
- •3.2.5. Отчеты в Access
- •3.2.7. Макросы в Access
- •Преобразование макросов в программы на Visual Basic
- •3.2.8. Работа с внешними данными
- •3.3. Программирование в Access
- •3.3.1. Вводные замечания
- •3.3.2. Объявление переменных
- •3.3.3. Константы
- •3.3.4. Тип данных Variant
- •3.3.5. Пользовательские типы данных
- •3.3.5.Операторы, команды и выражения в vba
- •3.3.7. Процедуры vba
- •3.3.8. Управляющие структуры в vba
- •Работа с управляющими структурами
- •3.3.9. Объекты в Access
- •3.3.10. Классы в Access
- •3.3.11. Работа с ошибками в vba
- •3.4.Работа в ms sql –Server
- •3.4.1. Основные количественные показатели системы sql-сервер
- •3.4.2. Создание баз данных
- •3.4.3. Создание таблицы
- •3.4.4. Извлечение данных
- •3.4.5. Добавление данных
- •3.4.5. Изменение данных
- •3.4.7. Удаление данных
- •Цитированная литература
- •Оглавление
- •Часть 1. Проектирование баз данных 3
- •Часть 2. Специальные аспекты работы с базами данных 70
- •Часть 3. Разработка приложений для работы с базами данных 113
Предварительные отношения для бинарных связей степени n:m
Если степень бинарной связи равна N:M, то для хранения данных требуется три отношения вне зависимости от класса принадлежности как первый, так и второй сущностей. При использовании одного или двух отношений неизбежно возникновение пробелов и/или повторяющихся групп данных в экземплярах этих отношений. Какая из этих двух проблем возникает при использовании двух отношений зависит от классов принадлежности двух сущностей. Предлагается следующие правило генерации предварительных отношений для степени связи m:n.
ПРАВИЛО 5. Если степень бинарной связи равна N:M, то для хранения данных необходимо три отношения: по одному для каждой сущности, причем ключ каждой сущности используется в качестве первичного ключа соответствующего отношения, и одного отношения для связи. Последние отношение должно иметь в числе своих атрибутов ключ сущности каждой сущности.
Для случая, когда степень связи равна N:M и ни один класс принадлежности не является обязательным экземпляры отношений соответствуют рис. 6.12.
В этом случае отношение ЧИТАЕТ целиком является ключом. Аналогичными будут экземпляры отношений, содержащие те же данные в тех случаях, когда один или оба класса принадлежности являются обязательными.
1.5.4. Дополнительные конструкции, используемые в er - методе
Не все ситуации можно свести к бинарным связям. Поэтому представляет интерес дополнительные конструкции, позволяющие решать задачи при наличии связей более высокого порядка.
Необходимость связей более высокого порядка
Спроектируем БД, предназначенную для хранения информации о рабочих и станках, которые ими обслуживаются. Каждый рабочий обслуживает только один станок. Представляющими интерес атрибутами являются: фамилия рабочего (рфам), номер цеха (нцех), тарифная ставка (тстав), номер станка (сном), тип станка (стип), основной тип деталей, обрабатываемых на станке (дтип) и материал детали (мдет).
Сущностями в данном случае будут РАБОЧИЙ и СТАНОК и связь между ними ОБСЛУЖИВАЕТ. Типичные диаграммы ER-экземпляров и ER-типа приведены на рис.6.13.
РАБОЧИЙ ОБСЛУЖИВАЕТ СТАНОК
Р1 С1
Р2 С2
Р3 С3
Р4 С4
С5
а)
1 1
РАБОЧИЙ СТАНОК ОБСЛУЖИВАЕТ
рфам …. сном…
б)
Рис.6.13. Диаграммы ER-экземпляров (а) и ER-типа (б)
для рассматриваемого примера.
При составлении диаграмм учитывалось, что все рабочие имеют работу, фамилии рабочих уникальны, некоторые станки рабочими не обслуживаются.
Т.к. степень связи равна 1:1 и класс принадлежности одной сущности является обязательным, а другой - нет, то используется правило 2 при генерации предварительных отношений. В результате получаем отношения: РАБОЧИЙ (рфам .... сном) и СТАНОК (сном ....).
Остается найти место атрибутам, не используемым в качестве ключей сущности: нцех, тстав, стип, дтип. Атрибуты нцех и тстав находят свое место в отношении РАБОЧИЙ, т.к. они содержат информацию о рабочих; стип, дтип и мдет помещаются в отношение СТАНОК, т.к. в них содержится информация о станках и деталях, на них обрабатываемых. Таким образом, предлагаются следующие отношения:
РАБОЧИЙ (рфам, нцех, тстав, сном),
СТАНОК ( сном, стип, дтип, мдет).
На рис.6.14 для обоих отношений изображены диаграммы ФЗ, позволяющие заключить, что каждое отношение находится в НФБК.
сном стип
рфам нцех сном мдет
тстав дтип
а) б)
Рис.6.14. Диаграмма ФЗ для отношений (а) РАБОЧИЙ
и (б) СТАНОК в примере ER-проектирования.
На рис.6.15 приводятся типичные экземпляры отношений, используемых при создании БД.
РАБОЧИЙ СТАНОК
рфам |
нцех |
тстав |
сном |
сном |
стип |
дтип |
мдет |
Р1 |
3 |
500 |
С1 |
С1 |
Токар. |
1Т |
М1 |
Р2 |
3 |
400 |
С3 |
С1 |
Токар |
2Т |
М2 |
Р3 |
3 |
300 |
С2 |
С2 |
Фрез. |
1Т |
М1 |
Р4 |
3 |
200 |
С4 |
С3 |
Свер. |
1Т |
М1 |
|
С4 |
Шлиф |
3Т |
М3 |
Рис.6.15.Типичные экземпляры отношений РАБОЧИЙ и СТАНОК.
Эта же БД будет проанализирована при различных предположениях далее в этой теме.
В основе рассмотренного примера лежит необходимость хранения информации о рабочих; станках, обслуживаемых рабочим; типах деталей, обрабатываемых на этих станках. Предположим, что нам необходимо знать, какой-тип детали предпочитает изготавливать тот или иной рабочий. Если посмотреть на диаграмму экземпляров, изображенную на рис. 6.13, а) то может показаться естественным заключение о том, что раз рабочий Р1 обслуживает станок С1, на котором обрабатываются детали 2Т и 1Т, то следовательно Р1 любит изготавливать детали 2Т и 1Т. Это может быть правдой, а может и не быть.
Если связь между сущностями РАБОЧИЙ и ДЕТАЛЬ существует, то эта связь, назовем ее ПРЕДПОЧИТАЕТ, должна быть представлена на диаграмме ER - экземпляров, как это показано на рис. 6.15.
Пунктирные линии использованы с целью выделения экземпляров связи ПРЕДПОЧИТАЕТ. Кроме того, во избежание путаницы приведены только несколько экземпляров.
Р1 С1 1Т
Р2 С3 2Т
Р4 С4 3Т
Рис. 6.15. Диаграмма ER - экземпляров в случае, когда рабочие отдают предпочтение некоторым типам деталей.
На диаграмме ER – типа связь ПРЕДПОЧИТАЕТ должна соединять сущности РАБОЧИЙ и ДЕТАЛЬ.
Из диаграммы экземпляров следует, что рабочий Р1 обслуживает токарный станок, что на токарном станке обрабатывается два типа деталей, а также то, что Р1 предпочитает изготавливать деталь 1Т. В силу того, что связь между сущностями РАБОЧИЙ и ДЕТАЛЬ имеет степень n:1 и, поскольку каждый рабочий обслуживает только один станок, то при построении отношения, отражающего ситуацию, приведенную на рис. 6.16, единственным изменением, которое требуется ввести в отношения, приведенные на рис. 6.15, является добавление в отношение РАБОЧИЙ атрибута дтип из отношения СТАНОК (этот атрибут указывает тип детали, изготавливать который предпочитает данный рабочий).
Таким образом, в этом расширенном примере бинарные связи также позволяют получить адекватную модель ситуации.
Если продолжить модернизацию проблемы, то можно показать недостаточность бинарных связей для корректного моделирования некоторой ситуации. Предположим, что рабочие обслуживают более чем по одному станку и каждый рабочий может предпочитать изготавливать один тип детали на одном станке, а другой - на другом станке. Рабочий Р1, например, обслуживает станки С1 и С2 и предпочитает изготавливать деталь 1Т на станке С1 и 2Т на станке С2. Рабочий Р2 в свою очередь, обслуживает только станок С2 и предпочитает изготавливать деталь 2Т. Собрав вместе эти данные, получим следующий перечень утверждений:
Рабочий Р1 обслуживает два станка – С1 и С2.
Рабочий Р2 обслуживает только станок С2.
Рабочий Р1 предпочитает изготавливать деталь 1Т на станке С1.
Рабочий Р1 предпочитает изготавливать деталь 2Т на станке С2.
Рабочий Р2 предпочитает изготавливать деталь 2Т на станке С2.
На рис. 6.17 приведена диаграмма ER- экземпляров, в которой использованы бинарные связи, включающие только указанные 5 единиц информации.
Важно заметить, что хотя из диаграммы можно вывести все характеризующие Р1 и Р2 (см. выше) утверждения, также можно заключить, что Р1 предпочитает изготавливать деталь 2Т на станке С1, а это неверно.
Рабочий Станок Деталь
Р1 С1 1Т
Р2 С2 2Т
Рис. 6.17. Диаграмма ER - экземпляров (а) и ER - типа (б) в случае, когда все связи имеют степень m:n.
Проблема возникает из того факта, что в данном случае все связи имеют степень m:n и, следовательно, отсутствует уникальный путь, соединяющий вместе три экземпляра сущности единственным образом. Причину возникновения подобной проблемы можно понять, обратив внимания на то, что каждое из утверждений "Рабочий Р1 предпочитает изготавливать деталь 1Т на станке С1" и "Р1 предпочитает изготавливать деталь 2Т на станке С2" связывает вместе три информационные единицы. Та же информация не может быть заключена в выражениях "Р1 обслуживает станки С1 и С2"; "На станках С1 и С2 обрабатываются детали 1Т и 2Т; " Р1 предпочитает изготавливать детали 1Т и 2Т."
Суть в том, что информационные триплеты нельзя предоставить в виде набора из трех бинарных связей. Правильная модель приведена на рис. 6.18 и требует использования трехсторонних связей.
Рабочий Станок Деталь
С1
Р1
1Т
С2
Р2
2Т
а)
Станок
n
Р_С_Д Рабочий Деталь
рфам….. дтип….
б)
Рис. 6.18. Диаграммы ER - экземпляров (а) и ER - типа (б) в случае трехсторонней связи Р_С_Д.