Lection_Iformatika_5.ppt
- Количество слайдов: 17
1 ЛЕКЦИЯ № 5 Введение в базы данных
2 1. Понятие базы данных Под базой данных (БД) понимается хранилище структурированных данных, при этом данные должны быть непротиворечивы, минимально избыточны и целостны. Как правило, базы данных создаются для хранения и доступа к данным, содержащим сведения о некоторой предметной области, то есть некоторой области человеческой деятельности или области реального мира. Таким образом, всякая база данных должна представлять собой систему данных о некоторой предметной области. База данных относящихся к одной предметной области, в различных ситуациях содержат более или менее детализированную информацию о ней. Степень детализации определяется рядом факторов, прежде всего целью использования информации из базы данных и сложностью производственных (деловых) процессов, существующих в пределах предметной области в конкретных условиях. Рассмотрим в качестве примера предметной области отпуск товара со склада. Предположим, что существует две организации, независимые друг от друга, и испытывающие потребность в автоматизации своих производственных процессов. Для организации А характерно невысокий ассортимент хранимых и отпускаемых товаров. Ассортимент отличается стабильностью. Состав реальных покупателей товаров исчисляется
3 Потребности в автоматизации учета отпуска товаров определяется двумя задачами: 1) быстрой выдачей информации о текущих остатках товара на складе; 2) ежемесячной выдачей отчета об общих суммарных отпусках товара. Организация Б характеризуется множеством территориально распределенных складов, в том числе в различных государствах ближнего зарубежья. Ассортимент отпускаемых товаров высок и быстро изменчив в силу изменчивости спроса. Состав покупателей разнообразен, в число покупателей входят как физические лица, так и юридические лица. Практикуется система скидок постоянным покупателям, приобретающим товар свыше определенного количества и (или) суммы. Развита система предоплат, отпуска товаров в кредит. Оплата производится в местной валюте по текущему курсу доллара, реже – рубля. Потребности в автоматизации учета отпуска товаров определяется широким диапазоном целей: 1) быстрым получением информации о текущих остатках товара, в том числе а) на конкретном складе; б) по регионам; в) по всей организации; 2) получением счета об общих суммарных отпусках товара за любой временной интервал в любой валюте, в том числе а) по всей организации; б) по конкретному региону, где расположены склады;
4 3) зачетом предоплат и задолженностей отдельных покупателей; 4) автоматическим переводом покупателей в льготные категории, имеющие право на тот или иной вид скидки; 5) прогнозированием с определенным уровнем вероятности будущего спроса (по покупателю, товару, региону и т. д. ). В виду различия целей внедрения БД и содержания деловых процессов в организациях А и Б, созданные в них БД будут существенно различаться друг от друга – прежде всего детализацией хранимой информации и, следовательно, структурой данных. Если в организации А в БД достаточно хранить сведения о приходе и расходе товаров и о ценах на них, то в БД организации Б необходимо хранить десятки таблиц и в процессе работы тратить дополнительные усилия для того, чтобы поддерживать их в согласованном состоянии. В настоящее время широко используются реляционные базы данных, представляющие связанную совокупность таблиц, хранящие информацию о какой-либо предметной области.
5 2. Проектирование реляционных баз данных Прежде чем приступать к рассмотрению конкретных проблем и алгоритмов проектирования БД, необходимо иметь четкое представление о процессе и целях проектирования. Цели и этапы проектирования БД. Прежде чем переходить к целям, перечислим некоторые из этапов проектирования реляционных БД: 1) Определение объектов (источников данных), которые должны быть включены в БД; 2) Выявление связей между объектами; 3) Определение основных свойств объектов; 4) Определение отношений между таблицами БД, на основе связей между объектами данных, содержащимся в них; 5) Определение операций, выполняемых при создании и изменении информации в таблицах, включая обеспечение целостности данных; 6) Выявление индексов, необходимых для ускорения выполнения запросов;
6 Представленный список конечно же не полон, но позволяет составить представление о тех действиях, которые необходимо выполнить. Каждый этап проектирования зависит от результатов предыдущих, и чем тщательнее он будет продуман, тем меньше итераций (возвратов) понадобится в дальнейшем. Среди целей наиболее важным представляются следующие: а) возможность хранения в БД всех необходимых данных; б) исключение избыточности данных; в) сведение к минимуму числа хранимых в БД таблиц; г) нормализация таблиц для упрощения решения проблем, связанных с обновлением и удалением данных. Рассмотрим каждую из этих целей подробнее. Возможность хранения в БД всех необходимых данных. Первым шагом в процессе проектирования БД является определение всех атрибутов, которые должны быть помещены в БД, поскольку отсутствие в ней представляющей в интерес информации сводит на нет ценность всей БД. После определения всех атрибутов нужно решить, сколько требуется таблиц и какие атрибуты в какие таблицы надо включать. Это определяется целью использования информации и набором производственных процессов, требующих своей автоматизации.
7 Исключение избыточности данных. Суть этой цели очевидна проектировщику БД. Основным здесь является четкое понимание различия между дублированием данных и избыточным дублированием данных. Рассмотрим эту разницу на примере. В качестве примера возьмем таблицу Книга – Автор имеющую вид Книга Таблица 1 Автор Разработка клиентских приложений для SQL Server 7 Тихомиров Юрий Visual C++ и MFC, т. 1 Мешков Андрей Open GL: Программирование трехмерной графики Тихомиров Юрий Visual C++ и MFC, т. 2 Мешков Андрей Таблица 1 имеет два атрибута Книга (название книги) и Автор (фамилия и имя автора книги) и содержит данные, указывающие авторов каждой конкретной книги. Фамилии авторов могут появляться неоднократно, поскольку один автор может написать не одну книгу. При этом Тихомиров Юрий и Мешков Андрей в таблице появляются дважды, ни одно из них не является избыточным. Причина в том, что удаление любого из них приводит
8 Таблица 2 Книга Автор Разработка клиентских приложений для SQL Server 7 Тихомиров Юрий Visual C++ и MFC, т. 1 Мешков Андрей Open GL: Программирование трехмерной графики - Visual C++ и нет т. 2 В данном случае. MFC, возможности узнать кто написал книги: Open GL: Программирование трехмерной графики и Visual C++ и MFC, т. 2. Рассмотрим появление избыточного дублирования данных на примере Таблицы 3 Книга – Автор - Телефон Таблица 3 Книга Автор Телефон Разработка клиентских приложений для SQL Server 7 Тихомиров Юрий 777 -77 -77 Visual C++ и MFC, т. 1 Мешков Андрей 444 -44 -44 Open GL: Программирование трехмерной графики Тихомиров Юрий 777 -77 -77
9 Имеем избыточное дублирование телефонов. Таблица 4 Книга Автор Телефо н Разработка клиентских приложений для SQL Server 7 Тихомиров Юрий 777 -7777 Visual C++ и MFC, т. 1 Мешков Андрей 444 -4444 Open GL: Программирование трехмерной Тихомиров графики Юрий Но у нас появились пустые ячейки, наличие которых в таблицах Мешков Visual C++ и MFC, т. 2 недопустимо, так как при удалении первой строки произойдет потеря Андрей информации о телефона Тихомирова для третьей строки. Есть выход разбить Таблицу 3 на две, имеющих вид Таблица 5 Книга Автор Разработка клиентских приложений для SQL Server 7 Тихомиров Юрий Visual C++ и MFC, т. 1 Мешков Андрей Open GL: Программирование трехмерной графики Тихомиров Юрий Visual C++ и MFC, т. 2 Мешков Андрей
10 Таблица 6 Автор Телефон Тихомиров Юрий 777 -77 -77 Мешков Андрей 444 -44 -44 Сведение к минимуму числа хранимых в БД таблиц. Эта цель обусловлена тем, что разбиение одной таблицы на две или более таблиц меньшего размера желательно с точки зрения исключения определенных проблем, но не совсем удобно для пользователя. Таким образом, нельзя допускать неограниченного роста числа таблиц. Нормализация таблиц. Практически для всех таблиц очень важны проблемы удаления и обновления (как это было продемонстрировано на предыдущем примере). Поэтому необходимо уметь различать эти потенциально опасные таблицы и «нормализовать» их посредством разбиения определенным образом. Нормализация представляет собой формальную процедуру, в ходе которой одна таблица разбивается на две или несколько в соответствии со специальной процедурой разбиения. Задачами нормализации являются: а) исключение из таблиц повторяющейся информации; б) создание структуры, в которой предусмотрена возможность ее будущих изменений; в) создание структуры, в которой влияние структурных изменений на приложения использующие информацию этой БД, сведены к минимуму.
11 Наиболее распространенной процедурой является приведение базы данных к третьей нормальной форме (3 NF), так как в большинстве случаев этот уровень нормализации является компромиссом между полной нормализацией и простотой нормализации. Существуют уровни и выше, чем 3 NF, но на практике они применяются достаточно редко, так как сильно затрудняют разработку структур данных и снижают их функциональность. Первая нормальная форма (1 NF). Первая нормальная форма – это основа реляционных баз данных. При ней требуется, чтобы таблица была двумерной и не содержала ячеек, включающих несколько значений. Приведем пример таблицы, которая не приведена к 1 NF Страниц Телефо Таблица 7 Название Автор Цена Тираж ы н Microsoft Office Visual C++ и MFC, т. 1 Visual C++ и MFC, т. 2 Каменский Юрий Никитин Павел Мешков Андрей Тихомиров Юрий Мешков Андрей 224 464 20 32 10000 111 -1111 222 -2222 10000 333 -3333 777 -7777 333 -3333
12 продолжени Таблицы 7 Название Автор Open GL: Программирование трехмерной графики Тихомиров Юрий е Страниц Телефо Цена Тираж ы н 256 25 7000 777 -7777 Программирование в Шведов 444 -44192 18 7000 Delphi 3 Дмитрий 44 Приведение таблицы к 1 NF выполняется достаточно легко – при помощи простого процесса вставки, в результате чего в таблицу добавляется большой объем избыточных данных. Таблица приведенная к 1 NF примет вид Таблица 8 Название Microsoft Office Автор Страниц Телефо Цена Тираж ы н Каменский Юрий 224 20 10000 111 -1111 Никитин Павел 224 20 10000 222 -2222 Visual C++ и MFC, т. 1 Мешков Андрей 464 32 10000 333 -3333 Visual C++ и MFC, т. 1 Тихомиров 464 32 10000 Microsoft Office 777 -77 -
продолжение Таблица 8 13 Название Автор Страниц Телефо Цена Тираж ы н Visual C++ и MFC, т. 2 Тихомиров Юрий 464 32 7000 777 -7777 Visual C++ и MFC, т. 3 Мешков Андрей 384 30 5000 333 -3333 Visual C++ и MFC, т. 3 Тихомиров 777 -77384 30 7000 Юрий 77 Таблица 8 представляет собой экземпляр корректной таблицы, которую Программирование в Шведов 444 -44192 18 7000 называют универсальной таблицей проектируемой базы данных. В нее Delphi 3 Дмитрий 44 включают все представляющие интерес атрибуты, и она может содержать все данные, которые предполагается размещать в этой БД. Если число атрибутов не превышает 15, то универсальная таблица может использоваться в качестве отправной точки проектировании БД. Вторая нормальная форма (2 NF). Вторая нормальная форма требует, чтобы данные во всех не ключевых столбах полностью зависели от первичного ключа или каждого поля первичного ключа, если он является составным. Под полной зависимостью понимается то, что значение в каждом столбце однозначно определяется значением первичного ключа. Если же в таблице имеется хотя бы одно поле, которое не зависит от величины первичного ключа, то в этот ключ необходимо включить дополнительные столбцы. Перед проверкой на соответствие 2 NF таблица должна быть приведена к
14 В нашем примере Таблицу 8 необходимо разбит на две, вынеся в одну информацию о книгах, а во вторую – об авторах. Видно, что в таблице Книга (Таблица 9) поле номер книги однозначно идентифицирует все остальные столбцы таблицы и поэтому может использоваться в качестве первичного ключа. Аналогично в таблице Автор (Таблица 10) поле автор однозначно позволяет определить номер телефона автора. Однако при этом мы потеряли информацию о том, какой автор написал какую книгу. Для решения этой проблемы нужна таблица соответствия (Таблица 11). Представим набор таблиц, удовлетворяющий 2 NF. Номер Страни Цен. Таблица 9 Тира Название книги цы а ж 1 Microsoft Office 224 20 10000 2 Visual C++ и MFC, т. 1 464 32 10000 3 Visual C++ и MFC, т. 2 464 32 7000 4 Visual C++ и MFC, т. 3 384 30 5000 5 Open GL: Программирование трехмерной графики 256 26 7000 6 Программирование в Delphi 3 192 18 7000
Таблица 10 15 Автор Телефон Мешков Андрей 333 -33 -33 Тихомиров Юрий 777 -77 -77 Каменский Юрий 111 -11 -11 Шведов Дмитрий Автор 444 -44 -44 Номер книги Никитин Павел 222 -22 -22 Мешков Андрей 2 Тихомиров Юрий 2 Каменский Юрий 1 Шведов Дмитрий 6 Никитин Павел 1 Мешков Андрей 3 Тихомиров 3 Таблица 11
16 Легко убедится, что совокупность таблиц Табл. 9 – Табл. 11 удовлетворяет 2 NF. Третья нормальная форма (3 NF). Третья нормальная форма требует, чтобы все не ключевые столбцы таблицы зависели от первичного ключа, но были независимы друг от друга. Очевидно, что для этого таблицы должны быть приведены к первой и второй нормальным формам. В нашем примере все рассматриваемые таблицы уже приведены и к 3 NF, поскольку они не содержат повторяющихся данных и данные не ключевых полей зависят от значения первичного ключа. Нормализация один из методов проектирования БД. Его достаточно легко использовать при числе атрибутов меньше 15. В противном случае лучше пользоваться er-методом, в котором используется схема «сущность-связь» .
17 СПАСИБО ЗА ВНИМАНИ Е!
Lection_Iformatika_5.ppt