Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика..rtf
Скачиваний:
5
Добавлен:
24.09.2019
Размер:
20.35 Mб
Скачать

4. Проектирование баз данных (бд)

  1. Основные понятия

В широком смысле слова база данных - это совокупность сведений о конкретных объектах реального мира в какой-либо области.

Создавая базу данных, пользователь стремится упорядочить информацию по различным признакам и быстро извлекать выборку с произвольным сочетанием признаков. Сделать это возможно, только если данные структурированы. Структурирование - это введение соглашений о способах представления данных. Неструктурированными называют данные, записанные, например, в текстовом файле.

На рис.13 приведен пример неструктурированных данных, содержащих сведения о студентах (номер личного дела, фамилию, имя, отчество и год рождения). Понятно, что организовать поиск необходимых данных, хранящихся в неструктурированном виде сложно, а упорядочить подобную информацию практически не представляется реальным.

Личное дело №16495, Сергеев Петр Михайлович, дата рождения 1 января 1976г.; Л/д №16593, Петрова Анна Владимировна, дата рожд.15 марта 1975г.; № личн. дела 16693, д.р. 14.04.76, Анохин Андрей Борисович

Рис. 13

Чтобы автоматизировать поиск и систематизировать эти данные, необходимо выработать определенные соглашения о способах представления данных, т. е. дату рождения нужно записывать одинаково для каждого студента, она должна иметь одинаковую длину и определенное место среди остальной информации. Эти же замечания справедливы и для остальных данных (номер личного дела, фамилия, имя, отчество). Структурированная запись данных приведена в табл. 41.

Таблица 41

№ личного дела

Фамилия

Имя

Отчество

Дата

рождения

16493

Сергеев

Петр

Михайлович

01.01.76

16593

Петрова

Анна

Владимировна

15.03.75

16693

Анохин

Андрей

Борисович

14.04.76

Итак, база данных (БД) - это поименованная совокупность структурированных данных, относящихся к определенной предметной области.

Система управления базами данных (СУБД) - это комплекс

программных и языковых средств, необходимых для создания баз данных, поддержания их в актуальном состоянии и организации поиска в них необходимой информации.

  1. Структурные элементы базы данных

Понятие базы данных тесно связано с такими понятиями, как поле, запись, отношение, файл, ключ.

Поле - элементарная единица логической организации данных. В двумерной таблице поле - один из столбцов таблицы. При создании БД нужно предварительно описать все поля. Для описания поля используются следующие характеристики:

имя (например, Фамилия, Имя, Отчество, Дата рождения - т. е. название столбца таблицы);

тип (например, символьный, числовой, календарный - в памяти компьютера разный тип информации кодируется различным образом. Для поля Фамилия задается символьный тип информации, для поля Дата рождения - календарный);

длина (например, 15 символов, причем длина будет определяться

максимально возможным количеством символов в данном поле и служит для предварительного задания ширины столбца. Так для поля Фамилия достаточно задать длину 15 символов, поскольку большинство фамилий не содержит более 15 букв, а для столбца Пол достаточно одного символа, т.к. туда будет вводится признак пола - одна буква “м” или буква “ж”);

точность - необходимо задавать ее только для числовых данных (например, два десятичных знака для отображения дробной части числа 15.28);

Запись (рис.14) - совокупность логически связанных полей. Экземпляр записи - отдельная реализация записи, содержащая конкретные значения ее полей т.е. одна строка двумерной таблицы. (В табл. 41 один экземпляр записи характеризует студента Сергеева, второй - Петрова).

Имя поля 1

Имя поля 2

Имя поля 3

Запись

Рис.14

Отношение - совокупность однородных записей (одна таблица, например, табл. 41).

Файл - совокупность объектов одной базы данных.

Обычно база данных включает следующие объекты:

Таблицы (для хранения данных).

Запросы (для отбора информации).

Формы (для просмотра, ввода и вывода информации).

Отчеты (для подготовки информации к печати).

Ключ - это поле, по которому можно однозначно найти любую запись в БД. В табл. 41 ключом является № личного дела. Если, например, выбрать в качестве ключа поле Фамилия, то однозначность поиска нужной записи о студенте не будет обеспечена, т.к. в любой достаточно большой БД обязательно окажется несколько студентов с фамилией Иванов, Смирнов и т.д.

Описание логической структуры записи файла содержит последовательность расположения полей записи и их основные характеристики, как это показано в табл. 42.

Таблица 42

Имя файла

Поле

Признак

ключа

Формат поля

Имя Полное (обозн.) наименов.

Тип

Длина

Точность (для чисел)

Имя 1

Имя n

Как видно из табл. 42, кроме уже известных характеристик, в структуре записи файла указываются поля, значения которых являются ключами.

В табл.43 приведен пример описания логической структуры записи файла (таблицы) СТУДЕНТ, содержимое которого приводится на рис.13

.Имя файла

П

оле

Признак

ключа

Формат поля

Обозначение в БД

Полное

наименование

Тип

Длина

Точность (для чисел)

Номер

№ личн.дела

ключ

Числ.

5

Фамилия

Фамилия студ

Текст.

15

Имя

Имя студента

Текст.

10

Отчество

Отчество студ

Текст.

15

Дата

Дата рождения

Дата

8

  1. Реляционная модель данных

Существует несколько типов (моделей) организации БД: иерархический, сетевой, реляционный. В настоящее время наиболее распространенной является реляционная модель.

Понятие реляционный (англ. relation - отношение) связано с разработками известного американского специалиста в области баз данных Е. Кодда. Эти модели характеризуются простотой структуры данных, удобным для пользователя табличным представлением и возможностью использования формального аппарата алгебры отношений и реляционного исчисления для обработки данных.

Реляционная модель представляет собой организацию данных в виде двумерных таблиц. Каждая реляционная таблица представляет собой двумерный массив и обладает следующими свойствами:

  • каждый элемент таблицы - один элемент данных;

  • все столбцы в таблице однородные, т.е. все элементы в столбце имеют одинаковые тип (числовой, символьный и т.д.) и длину;

  • каждый столбец имеет уникальное имя;

  • одинаковые строки в таблице отсутствуют;

  • порядок следования строк и столбцов может быть произвольным.

Наиболее популярные СУБД (Paradox, FoxPro, Access) основаны на использовании реляционной модели данных.

Реляционной таблицей можно представить информацию о студентах, обучающихся в вузе (табл.44)

Таблица 44

№ личного дела

Фамилия

Имя

Отчество

Дата

рождения

Группа

16493

Сергеев

Петр

Михайлович

01.01.76

111

16593

Петрова

Анна

Владимировна

15.03.75

112

16693

Анохин

Андрей

Борисович

14.04.76

111

Таблицы БД в реляционных моделях называются отношениями, строки соответствуют записям, а столбцы - атрибутам отношений (полям). Поле, каждое значение которого однозначно определяет соответствующую запись, называется простым ключом (ключевым полем). Если записи можно однозначно определить только значениями нескольких полей, то такая

таблица базы данных имеет составной ключ. В примере, показанном в табл. 44, простым ключевым полем таблицы является '№ личного дела". Чтобы связать две реляционные таблицы, необходимо ключ первой таблицы ввести в состав ключа второй таблицы (возможно совпадение ключей).

На рис. 15 показан пример реляционной модели, построенной на основе отношений (таблиц): СТУДЕНТ, СЕССИЯ, СТИПЕНДИЯ.

Рис. 15

Таблицы, входящие в состав модели рис.15, могут включать, например, следующие поля:

СТУДЕНТ(Номер, Фамилия, Имя, Отчество, Пол, Дата рождения, Группа); СЕССИЯ (Номер, Оценка1, Оценка2, Оценка3, Оценка4, Результат); СТИПЕНДИЯ (Результат, Процент).

Выделенные поля в описанных таблицах являются ключевыми. Поле Номер - это номер личного дела студента. Поле Результат - средний балл студента за сессию.

Таблицы СТУДЕНТ и СЕССИЯ имеют совпадающие ключи (Номер), что дает возможность легко организовать связь между ними. Таблица СЕССИЯ имеет первичный ключ Номер и содержит внешний ключ Результат, который обеспечивает ее связь с таблицей Стипендия.

  1. Нормализация отношений

Одни и те же данные могут группироваться в таблицы (отношения) различными способами. Возможная организация различных наборов отношений должна быть рациональной, т.е. исключающей дублирование данных и упрощающей процедуры их обработки и обновления.

Нормализация отношений - формальный аппарат ограничений на формирование отношений (таблиц), который позволяет устранить

дублирование, обеспечивает непротиворечивость хранимых в базе данных, уменьшает трудозатраты на ведение (ввод, корректировку) базы данных. Е. Коддом выделены три нормальные формы отношений и предложен механизм, позволяющий любое отношение преобразовать к третьей (самой совершенной) нормальной форме.

Первая нормальная форма

Отношение называется нормализованным или приведенным к первой нормальной форме, если все его атрибуты простые (далее неделимы). Преобразование отношения к первой нормальной форме может привести к увеличению количества реквизитов (полей) таблицы и изменению ключа.

Например, отношение Студент (Номер, Фамилия, Имя, Отчество, Дата, Группа) находится в первой нормальной форме. (Каждое поле однозначно описывает какую-то характеристику студента. Ни одно поле не требует дополнительных разъяснений). Отношение Студент1 (Номер, Фамилия, Имя, Отчество, Группа, Дети) не находится в первой нормальной форме, т.к. студент может иметь несколько детей и тогда об одном и том же студенте придется ввести в таблицу несколько записей. Например, пусть студент Иванов Иван Иванович, номер личного дела 11111 учится в 215 группе и имеет двоих детей

  • Максима и Ольгу. Тогда таблица с записью о нем будет иметь вид табл. 45.

Таблица 45

Номер

Фамилия

Имя

студента

Отчество

Группа

Имя

ребенка

Возраст

ребенка

11111

Иванов

Иван

Иванович

215

Максим

10

11111

Иванов

Иван

Иванович

215

Ольга

3

Чтобы привести отношение СТУДЕНТ1 к первой нормальной форме, нужно разбить эту таблице на две:

СТУДЕНТ1 (Номер, Фамилия, Имя, Отчество, Группа)

ДЕТИ (Номер, Имя ребенка, Возраст ребенка).

Теперь каждая из таблиц СТУДЕНТ1 и ДЕТИ не содержат повторной информации, т.е. БД приведена к первой нормальной форме.

Вторая нормальная форма.

Чтобы рассмотреть вопрос приведения отношений ко второй нормальной форме, необходимо дать пояснения к таким понятиям, как функциональная зависимость и полная функциональная зависимость.

Функциональная зависимость реквизитов - зависимость, при которой в одном экземпляре информационного объекта определенному значению ключа соответствует только одно значение описательного реквизита. В случае составного ключа вводится понятие функционально полной зависимости. Функциональная полная зависимость неключевых атрибутов заключается в том, что каждый неключевой атрибут функционально зависит от ключа, но не находится в функциональной зависимости ни от какой части составного ключа.

Отношение будет находиться во второй нормальной форме, если оно находится в первой нормальной форме, и каждый неключевой атрибут функционально полно зависит от составного ключа.

Отношение Студент (Номер, Фамилия, Имя, Отчество, Дата, Группа) находится в первой и во второй нормальной форме одновременно, так как описательные реквизиты однозначно определены и функционально зависят от ключа Номер.

Отношение Успеваемость (Номер, Фамилия, Имя, Отчество, Дисциплина, оценка) находится в первой нормальной форме и имеет составной ключ Номер + Дисциплина. Это отношение не находится во второй нормальной форме, так как атрибуты Фамилия, Имя, Отчество не находится в полной функциональной зависимости с составным ключом отношения.

Чтобы привести это отношение ко второй нормальной форме, следует разбить его на два: Успеваемость (Номер, Фамилия, Имя, Отчество, Дисциплина) и Дисциплина (Дисциплина, Оценка).

Третья нормальная форма.

Понятие третьей нормальной формы основывается на понятии нетранзитивной зависимости. Транзитивная зависимость наблюдается в том случае, если один из двух описательных реквизитов зависит от ключа, а другой описательный реквизит зависит от первого описательного реквизита. Отношение будет находиться в третьей нормальной форме, если оно находится во второй нормальной форме, и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.

Если в состав описательных реквизитов информационного объекта Студент включать фамилию старосты группы (Староста), которая определяется только номером группы, то одна и та же фамилия старосты будет многократно повторяться в разных экземплярах данного информационного объекта. В этом случае наблюдаются затруднения в корректировке фамилии старосты в случае назначения нового старосты, а также неоправданный расход памяти для хранения дублированной информации.

Для устранения транзитивной зависимости описательных реквизитов необходимо провести "расщепление" исходного информационного

объекта. В результате расщепления часть реквизитов удаляется из исходного информационного объекта и включается в состав других (возможно, вновь созданных) информационных объектов.

"Расщепление" информационного объекта, содержащего транзитивную

зависимость описательных реквизитов, показано на рис.16. Как видно из рис.16, исходный информационный объект Студент группы представляется в виде совокупности правильно структурированных информационных объектов (Студент и Группа), реквизитный состав которых тождественен исходному объекту. Отношение Студент (Номер, Фамилия, Имя, Отчество, Дата, Группа) находится одновременно в первой, второй и третьей нормальной форме.

Студент

Номер*

Фамилия

Имя

Отчество

Дата

Группа

Студент группы

Номер* Фамилия Имя

Отчество

Дата

Группа

Староста

Группа

Группа*

+ Старост

а

Рис.16

  1. Типы связей

Все информационные объекты предметной области связаны между собой. Различаются связи нескольких типов, для которых введены следующие обозначения:

  • один к одному (1:1);

один ко многим (1:М) или (1:к>)

;

  • многие ко многим (М:М) или (да;да).

Рассмотрим эти типы связей на примере.

Дана совокупность информационных объектов, отражающих учебный

процесс в вузе:

СТУДЕНТ (Номер, Имя, Отчество, Пол, Дата рождения, Группа)

СЕССИЯ (Номер, Оценка1, Оценка2, ОценкаЗ, Оценка4, Результат) СТИПЕНДИЯ (Результат, Процент)

ПРЕПОДАВАТЕЛЬ (Код преподавателя, Фамилия, Имя, Отчество).

Связь один к одному (1:1) предполагает, что в каждый момент времени одному экземпляру информационного объекта А соответствует не более одного экземпляра информационного объекта В и наоборот.

Рис.17 иллюстрирует указанный тип отношений.

■ В1

А

В

В2

А1

А2

АЗ

Рис. 17

Примером связи 1:1 может служить связь между информационными объектами СТУДЕНТ и СЕССИЯ:

СЕССИЯ

СТУДЕНТ

Каждый студент имеет определенный набор экзаменационных оценок в сессию. При связи один ко многим (1:М) одному экземпляру информационного объект А А соответствует 0,1 или больше экземпляров объекта В, но каждый экземпляр объекта В связан не более чем с 1 экземпляром объекта А. Графически данное соответствие имеет вид, представленный на рис.1

8

А1

А2

АЗ

В1

В2

ВЗ

А

В

Рис. 18

Примером связи 1: М служит связь между информационными объектами СТИПЕНДИЯ и СЕССИЯ:

СТИПЕНДИЯ Установленный размер

СЕССИЯ

стипендии по результатам сдачи сессии может повторяться многократно для различных студентов.

Связь многие со многими (М:М) предполагает, что в каждый момент времени одному экземпляру информационного объекта А соответствует 0,1 или более экземпляров объекта В и наоборот.

На рис.19 графически представлено указанное соответствие

.

А1

А2

АЗ

В1

В2

ВЗ

А

В

Рис.19

Примером данного отношения служит связь между информацион­ными объектами СТУДЕНТ и ПРЕПОДАВАТЕЛЬ:

СТУДЕНТ ПРЕПОДАВАТЕЛЬ

Один студент обучается у многих преподавателей, один преподаватель обучает многих студентов.