Нормализация баз данных.
Понятие БД, СУБД.
ВВЕДЕНИЕ В БАЗЫ ДАННЫХ
Лекция № 5.
1. Базами данных (БД) называют электронные хранилища информации, доступ к которым осуществляется с помощью одного или нескольких компьютеров. Обычно БД создается для хранения и доступа к данным, содержащим сведения о некоторой предметной области, то есть некоторой области человеческой деятельности или области реального мира.
Системы управления базами данных (СУБД) - это программные средства, предназначенные для создания, наполнения, обновления и удаления баз данных. Различают три основных вида СУБД: промышленные универсального назначения, промышленные специального назначения и разрабатываемые для конкретного заказчика. Специализированные СУБД создаются для управления базами данных конкретного назначения - бухгалтерские, складские, банковские и т.д. Универсальные СУБД не имеют четко очерченных рамок применения, они рассчитаны «на все случаи жизни» и, как следствие, достаточно сложны и требуют от пользователя специальных знаний. Как специализированные, так и универсальные промышленные СУБД относительно дешевы, достаточно надежны (отлажены) и готовы к немедленной работе, в то время как заказные СУБД требуют существенных затрат, а их подготовка к работе и отладка занимают значительный период времени (от нескольких месяцев до нескольких лет). Однако, в отличие от промышленных, заказные СУБД в максимальной степени учитывают специфику работы заказчика (того или иного предприятия), их интерфейс обычно интуитивно понятен пользователям и не требует от них специальных знаний.
|
|
В зависимости от расположения СУБД различают локальные и распределенные (удаленные) СУБД. Все части локальной СУБД размещаются на компьютере пользователя базы данных. Если к одной БД обращаются несколько пользователей одновременно, каждый пользовательский компьютер должен иметь свою копию локальной СУБД. В отличие от этого, значительная часть программно-аппаратных средств распределенной СУБД централизована и находится на одном достаточно мощном компьютере (сервере), в то время как компьютеры пользователей несут относительно небольшую часть СУБД, которая называется клиентом. Локальные СУБД могут работать в сети, но могут и не использовать ее, в то время как распределенные (клиент-серверные) СУБД обязательно работают в компьютерной сети. Заметим, что местонахождение собственно базы данных никак не влияет на специфику СУБД: в локальных СУБД сама БД может располагаться как на компьютере пользователя, так и на удаленном сетевом компьютере (файл-сервере). Безусловным достоинством клиент-серверных систем является возможность централизованного управления доступом к БД. В таких системах база данных в значительной мере защищена как от случайных, так и намеренных искажений, в них проще реализовать целостность и непротиворечивость данных.
|
|
Единицей хранящейся в БД информации является таблица. Каждая таблица представляет собой совокупность строк и столбцов, где строки соответствуют экземпляру объекта, конкретному событию или явлению, а столбцы - атрибутам (признакам, характеристикам, параметрам) объекта, события, явления. На рис. 1.1. приведен пример таблицы, в которой содержатся сведения об отпуске товаров со склада. Столбцы представляют собой такие параметры, как дата отпуска товара, наименование товара, наименование покупателя, количество единиц отпущенного товара. Каждая строка содержит сведения о конкретном событии - отпуске товара покупателю. В терминах БД столбцы таблицы называются полями, а ее строки - записями.
Дата | Товар | Покупатель | Отпущено (ед.) |
10.02.97 | Сахар | Геракл, ТОО | |
10.02.97 | Сахар | Геракл, ТОО | |
12.02.97 | Сахар | Пищеторг, ЗАО | |
12.02.97 | Макароны | Пищеторг, ЗАО | |
14.02.97 | Сахар | Геракл, ТОО | |
15.02.97 | Дрожжи | База № 28 |
Рис. 1.1. Пример таблицы «Отпуск товаров».
Между отдельными таблицами БД могут существовать связи. Например, информация о покупателе в предыдущей таблице может дополняться в другой:
Покупатель | Адрес | Телефон |
Геракл, ТОО | 107005 Москва, 2-я Бауманская ул., 12 | 273-00-14 |
Пищеторг, ЗАО | 105066 Москва, Измайловский б-р, 18/11 | 165-18-99 |
База № 28 | 274088 Хотьково МО, ул. Лесная, 1 | 17-54 |
Рис. 1.2. Пример таблицы «Покупатель».
Базы данных, между отдельными таблицами которых существуют связи, называются реляционными (от relation - связь, отношение).
Связанные отношениями таблицы взаимодействуют по принципу главная (master) -подчиненная (detail). В нашем примере таблица «Отпуск товаров» - главная, а таблица «Покупатель» - подчиненная. Главную таблицу часто называют родительской, а подчиненную - дочерней. Одна и та же таблица может быть главной по отношению к одной таблице БД и дочерней по отношению к другой.
Одной записи из родительской таблицы «Товары» может соответствовать несколько записей в дочерней таблице «Отпуск товаров».
Различают две разновидности связи один-ко-многим. в первом случае выдвигается жесткое требование, согласно которому всякой записи в родительской таблице должны соответствовать записи в дочерней таблице; во втором случае подобное требование не носит жесткого характера и подразумевается (как в описанном выше случае), что некоторые записи в родительской таблице могут не иметь связанных с ними записей в дочерней таблице.
Связь один-ко-многим является самой распространенной для реляционных баз данных. Как можно заметить, она позволяет моделировать иерархические структуры данных.
Отношение один-к-одному имеет место, когда одной записи в родительской таблице соответствует одна запись в дочерней таблице. Данное отношение встречается много реже, чем отношение один-ко-многим. Его используют, если не хотят, чтобы таблица БД «распухала» от второстепенной информации. Связь один-к-одному приводит к тому, что для чтения связанной информации в нескольких таблицах приходится производить несколько операций чтения, что замедляет получение нужной информации. Кроме того, базы данных, в состав которых входят таблицы со связью один-к-одному, не могут считаться полностью нормализованными (о нормализации см. ниже).
Подобно связи один-ко-многим, связь один-к-одному может быть жесткой и нежесткой.
|
|
Между записями одной таблицы также могут существовать связи, то есть одни записи могут ссылаться на другие.
Пусть в реляционной БД необходимо хранить древовидную структуру произвольного уровня, например, структуру организации (рис. 1.3).
Департамент автоматизации Техническое управление
Отдел сетевого оборудования Ремонтный отдел АТС
Управление программными системами Отдел эксплуатации
Информационная группа Административная группа
Диспетчерское бюро Отдел разработки
Рис. 1.3. Структура организации.
В этом случае можно создать таблицу (рис. 1.4), в которой каждому подразделению организации соответствует одна запись. Эта запись ссылается на запись, соответствующую подразделению более высокого уровня, в которое входит данное подразделение. И только в записи о подразделении самого высокого уровня нет подобной ссылки.
№ подразделения | Название подразделения | № подразделения предыдущего уровня | |
Департамент автоматизации | |||
Техническое управление | |||
Управление разработки и эксплуатации программных систем | |||
Отдел сетевого оборудования | |||
Ремонтный отдел | |||
АТС | |||
Отдел эксплуатации | |||
Отдел разработки | |||
Информационная группа | |||
Административная группа | |||
Диспетчерское бюро |
Рис. 1.4. Табличное представление структуры организации.
СУБД обычно блокирует действия, которые нарушают целостность связей между таблицами, т.е. нарушают ссылочную целостность. Когда говорят о ссылочной целостности, имеют в виду совокупность связей между отдельными таблицами во всей БД. Нарушение хотя бы одной такой связи делает информацию в БД недостоверной.
Чтобы предотвратить потерю ссылочной целостности, используется механизм каскадных изменений. Он состоит в обеспечении следующих действий:
• при изменении поля связи в записи родительской таблицы следует синхронно изменить значения полей связи в соответствующих записях дочерней таблицы;
|
|
• при удалении записи в родительской таблице следует удалить соответствующие записи в дочерней таблице.
2. При проектировании структуры новой БД определяют сущности (объекты, явления) предметной области, которые должны найти свое отражение в базе данных. Анализ предметной области обычно осуществляется на основании известных сведений о ней с учетом целей проектирования программной системы. В результате анализа создается проект БД..
Процесс проектирования БД в немалой степени зависит от опыта и интуиции разработчика, т.е. является творческим, однако некоторые его моменты можно формализовать. Одной из таких формализации является требование, согласно которому реляционная база данных должна быть нормализована. Процесс нормализации имеет своей целью устранение избыточности данных и заключается в приведении к третьей нормальной форме (ЗНФ).