Код студента Номер семестра Дисциплина
Рис. 3.7. Простая сетевая структура (варианты 3.6 б и г)
Пример на рис. 3.7 хотя и является лишь фрагментом в модели организации учебного процесса в вузе, тем не менее, иллюстрирует наиболее важные особенности сетевой структуры: более одного старшего и циклы. Пример составлен на основе примера на рис. 3.5, поэтому в уже известных элементах опущены имена не ключевых данных. Элемент ИТОГОВАЯ АТТЕСТАЦИЯ отличается от элемента АТТЕСТАЦИЯ только в том случае, если дисциплина читается несколько семестров, а элемент ДИСЦИПЛИНА содержит характеристики дисциплины, единые для всех студентов, ее изучающих.
К сетевым следует отнести также связи многие к многим (М:М) и связь один к одному (1:1)
Связь М:М - это когда каждому элементу одной структуры можно поставить в соответствие несколько элементов другой, но и наоборот каждому элементу второй структуры можно поставить в соответствии несколько экземпляров первой (рис 3.8 и 3.9).
ДИСЦЕ | [ПЛИНА | |
Код | Дисциплина | Рейтинг студента |
студента | по дисциплине |
I СЕМЕСТР |
Код | Номер | Тип | Рейтинг |
студента | семестра | стипендии | за семестр |
Рис 3.8 Связь типа М:М (вариант 1) |
Каждому экземпляру структуры Дисциплина (дисциплина, изучаемая студентом) можно поставить в соответствие несколько экземпляров структуры Семестр (столько, сколько семестров отучился соответствующий студент) и наоборот, каждому экземпляру структуры Семестр (любой из семестров, который уже завершил студент) в структуре Дисциплина можно поставить несколько экземпляров, с каждой из дисциплин, которые уже изучил соответствующий студент.
На одной и той же кафедре обучается множество студентов и работает множество преподавателей, поэтому каждому экземпляру структуры Студент можно поставить в соответствие столько экземпляров структуры Преподаватель, сколько преподавателей работает на соответствующей кафедре и наоборот.
СТУДЕНТ
|
t
ПРЕПОДАВАТЕЛЬ
Код | Кафедра | Должность | Стаж рабо |
преподавателя | ты |
Рис 3.9 Связь типа М:М (вариант2) |
Связь 1:1 - это когда каждому элементу одной структуры можно поставить в соответствие только один (или ни одного) экземпляр другой, но и наоборот каждому элементу второй структуры можно поставить в соответствии только один экземпляров первой (рис 3.10).
СТУДЕНТ1
|
СТУДЕНТ2
|
Рис 3.10 Пример связи типа 1:1 |
Если предположить, что в обеих структурах нет дублирования информации по каждому студенту (противное не имеет смысла), то каждому экземпляру одной структуры можно поставить в соответствии только один экземпляр в другой структуре (для того же студента) и наоборот.
Пример, иллюстрирующий возможность нескольких связей между парой линейных структур (вариант 3.6 а), а также типы связей 1:1 и М:М, представлен на рис. 3.11.
Первая связь 1:1- каждому медицинскому работнику обязательно соответствует один экземпляр в структуре застрахованных личностей, так как каждый медицинский работник должен быть застрахован и застрахован единожды как любая личность, но не все застрахованные личности являются медицинскими работниками, т.е. связь фактически 1:1 или 1:0.
Вторая связь М:М, по месту работы - на одном месте работы несколько личностей как среди застрахованных так и среди медицинских работников (свяжутся не все экземпляры застрахованных , а только соответствующих медицинских работников).
Третья связь М:М, по поликлиникам прикрепления застрахованных, которые являются местом работы части медицинских работников (не все работают в поликлиниках), поэтому эта связь типа М:М, но с возможностью отсутствия связи некоторых экземпляров как первой так и второй структуры.
Застрахованные личности
|
Медицинские работники |
ИНН | Место | Стаж | Пол | Дата рож |
личности | работы | работы | дения |
Рис 3.11. Несколько связей между парой линейных структур (связи 1:1, М:М) - вариант 3.6 а) |
Связь типа петля - например, связь между экземпляром, соответствующим начальнику и экземплярами, соответствующими его подчиненным или работники одного места работы (рис. 3.12).
Работники ( ^
ИНН | Место | Стаж | Пол | Дата ро |
личности | работы | работы | ждения |
Рис 3.12. Связь типа петля вариант 3.6. д) |
Достоинством сетевой структуры данных является возможность эффективной реализации по показателям затрат памяти и возможности реализации специальных операций, использование которых позволяет существенно упростить программы обработки связанных элементов.
В сравнении с иерархической сетевая структура данных предоставляет большие возможности в смысле допустимости образования произвольных связей. Недостатком этой структуры является высокая сложность для понимания, реализации и выполнения обработки информации в БД. Кроме того, в такой структуре ослаблен контроль целостности связей вследствие допустимости установления произвольных связей между записями.
В процессе рассмотрения особенностей иерархической и сетевой структур данных мы одновременно определили классические типы связей между парой линейных структур -1:1, 1:М, М:М. В разделе, связанном с проектированием баз данных будет приведен более детальный анализ этих типов связей.
Следует заметить, что в полном объеме сетевая структура не поддерживается ни одной реально действующей СУБД. Она была определена группой CODASYL [3] как универсальная структура, позволяющая реализовать информационную модель практически любой ПрО. Это направление отражало интересы проектировщиков БД и прикладных программистов, с которых во многом снимались проблемы отслеживания связей между записями различных файлов. Однако в 80-ые гг. в связи с широким распространением ПК преобладающее развитие получило второе направление, которое использует реляционную модель данных, описание которой представлено ниже.
Контрольные вопросы и задания к разделам 3.1, 3.2, 3.3, 3.4
1) Что такое структура данных?
2) Что такое логическая и физическая структуры данных?
3) Назовите основные требования, которым должна удовлетворять:
- линейная структура данных;
- иерархическая структура данных;
- сетевая структура данных.
4) Назовите и поясните существо типовых связей между парой линейных структур.
3.5. Реляционная модель данных
3.5.1. История применения реляционной модели данных
Появление концепции баз данных сопровождалось развитием теории структуризации данных, в которой наметились два направления. Первое, реализуемое группой CODASYL, было ориентировано на построение сложных информационных моделей различных предметных областей (сетевые модели) и их поддержку средствами СУБД. Это направление отражало интересы системных аналитиков, проектировщиков баз данных и прикладных программистов, с которых во многом снимались проблемы отслеживания связей между записями различных файлов.
Второе направление, предложенное Коддом [4], с одной стороны, подкреплено реляционной алгеброй (строгой математикой), а значит, можно было ожидать создания корректно работающих СУБД. С другой стороны, оно было ориентировано на конечного пользователя, так как использовало простую интерпретацию основных понятий и столь же простое отображение информационной модели в виде традиционно используемых пользователем таблиц.
Первое направление преобладало в 70-е годы видимо, потому что конечные пользователи чисто технически не имели возможности по непосредственному доступу к базам данных из-за отсутствия вычислительных сетей.
В 80-е годы, в связи с широким распространением персональных компьютеров, применением их непосредственно конечными пользователями (неспециалистами в области программирования) преобладающее развитие (точнее широкое практическое применение) получило второе направление.
3.5.2. Основные понятия реляционной модели данных
В основе реляционной модели данных лежит понятие отношения. Неформализованное отношение представляется в виде двумерной таблицы, на которую накладываются определенные ограничения. Столбец таблицы соответствует понятию атрибута отношения, строка - понятию кортежа отношения. Множество возможных значений, которые могут появляться в столбце таблицы, - понятию домена, на котором определен соответствующий атрибут.
Аналогично можно установить соответствие и с понятиями, используемыми при определении файлов линейной структуры: отношение - файл; атрибут - данное; кортеж - запись файла; домен - множество возможных значений данного.
Формализованное определение основных понятий реляционной модели данных базируется на теории множеств.
Отношение, с одной стороны, представляется (по «горизонтали») как множество атрибутов, а с другой (по «вертикали») - как множество кортежей. Каждому элементу множества атрибутов ставится в соответствие множество возможных значений - домен. Тогда можно осуществить следующую формальную запись основных понятий реляционной модели данных.
Пусть дана совокупность множеств каждое из кото
рых () представляет собой множество возможных значений /-го атрибута (^) отношения R. Множества D могут пересекаться и даже совпадать, т.е. различные атрибуты могут быть определены на пересекающихся или даже на одном и том же домене. Например, атрибуты дата приема на работу и дата увольнения.
Схемой отношения R называется конечное множество имен атрибутов {4>A2>->An}f причем каждому атрибуту ставится в соответст- А- —> D-
вие домен 1 1' Схема отношения R записывается в виде R(AbA2,...,An) или R(DbD2,...,Dn).
Пусть множество D есть декартово произведение доменов схемы
D={L\*D*,...*Dn}.
Тогда отношение R со схемой R (D\, D2, ...,Dn) есть подмножество Z),
По существу, отношение соответствует рассмотренной нами линейной структуре с соблюдением всех присущих ей требований (один и тот же порядок следования атрибутов, один и тот же размер и тип значений одного атрибута во всех кортежах отношений). Дополнительные, присущие реляционной модели требования - обязательное наличие в отношении ключа и удовлетворение нормальным формам. Так, приведенные на рис. 3.1 и 3.2 линейные структуры СТУДЕНТ и СЕМЕСТР в реляционной модели данных будут отношениями, а данные - № зачетной книжки, Ф.И.О., Пол, Цата рождения и Номер семестра, Оценка, Рейтинг по дисциплине - атрибутами отношений с ключами, отмеченными жирным шрифтом на рис. 3.13.
Схема отношения СТУДЕНТ
|
Схема отношения СЕМЕСТР
|
Рис. 3.13. Схемы простых отношений |
В реляционной модели обязательно устанавливается и имеет определяющее значение понятие функциональной зависимости одного атрибута X от другого Y в отношении R, означающее, что если известно значение первого атрибута (<детерминанта) X, то значение второго атрибута {зависимой части) Y определено и имеет единственное значение. Формальное определение функциональной зависимости: X—>Y. Например, если в отношении Студент известен № зачетной книжк, то для любого кортежа отношения Студент однозначно определены значения его атрибутов ФИО, Номер группы, Пол, Цата рождения, т.е. № зачетной книжки ->{ФИО, Номер группы, Пол, Цата рождения), аналогично для отношения Семестр:
№ зачетной книжки, Номер семестра ->{Тип стипендии, Рейтинг за семестр}
3.5.3. Ключ отношения
В реляционной модели понятие функциональной зависимости прежде всего связано с понятием ключа. В отношении должны быть такие атрибуты, называемые ключом, что все остальные (называемые неключевыми) функционально зависят от ключа. Другими словами, если известны значения атрибутов ключа, то не ключевые атрибуты отношения имеют вполне определенное, единственное значение.
Другое определение ключа - один либо несколько атрибутов, значения которых однозначно определяют (идентифицируют) каждый кортеж отношения.
Требование обязательности наличия ключа в отношении приводит к важному свойству - в отношении не может быть двух одинаковых кортежей.
Учитывая, что все данные также будут являться ключом, речь идет о минимальном числе данных, сохраняющем свойство ключа. Такой ключ называют также первичным.
Рассмотрим понятие ключа более пристально для отношений, приведенных ранее на рис. 3.13.
Драганов М. получает дополнительное образование и имеет, в связи с этим, две зачетной книжки. Есть два различных студента с одинаковой фамилией Гончар А. (например, Анна и Алексей), поэтому Ф.И.О. не является ключом. Ключом является атрибут № зачетной книжки, так как для конкретного значения этого атрибута значения остальных атрибутов имеют единственное значение (рис. 3.14).
Схема отношения СТУДЕНТ
|
Рис.3.14. Ключ состоит из одного атрибута |
Здесь некоторое сомнение вызывает тот факт, что в кортежах, относящихся к Драганову М. мы имеем дублирование (неоднозначность), однако, по прежнему, для любого значения атрибута № зачетной книжки остальные атрибуты имеют единственное значение (функционально зависят от него), а в отношении нет двух одинаковых кортежей-строк, т.е. атрибут № зачетной книжки является ключом. Здесь, тем не менее, надо отметить, что существует некоторая ненормальность, связанная с отмеченным дублированием, которая может (и должна) быть исключена при проектировании БД как системы взаимосвязанных отношений.
Рассмотрим вариант, когда вместо № зачетной книжки возьмем атрибут ИНН студента (личности) (рис. 3.15). Тогда для одного значения ИНН студента может быть два различных кортежа для студентов обучающихся параллельно на нескольких специальностях (студент Дра- ганов М.).
ИНН студента | Ф.И.О. | Номер группы | Пол | Дата рождения |
Гончар Е. | Ж | 29.04.78 | ||
Драганов М. | М | 19.01.79 | ||
Зюкин М. | м | 26.03.79 | ||
•• | ||||
Акулинин А. | м | 29.04.76 | ||
Драганов М. | м | 19.01.79 |
Рис 3.15. Изменение ключевого атрибута |
В этом случае ключ отношения будут составлять два атрибута ИНН студента и Номер группы потому, что только комбинация значений этих атрибутов уникальна в отношении (нет двух одинаковых кортежей).
Другой, более простой пример отношения, ключ которого состоит из двух атрибутов № зачетной книжки и Номер семестра, приведен на рис. 3.16.
Схема отношения СЕМЕСТР
|
Кортежи отношения СЕМЕСТР
|
Рис. 3.16. Отношение, ключ которого состоит из двух атрибутов |
Следует отметить, что значения атрибутов ключа определяют смысл остальных (неключевых) атрибутов. Так, если в последнем примере убрать первый столбец, то информация в таблице-отношении потеряет смысл.
3.5.4. Нормализация отношений
Общие положения
Кроме отмеченных выше ограничений на обязательное наличие ключа, в реляционной модели данных вводится требование нормализации отношений. Теория реляционной модели данных различает пять нормальных форм, однако для практических целей достаточно соблюдать первые три формы.
Нормализация заключается в исключении частных функциональных зависимостей путем разбиения не нормализованных отношений на более простые, в которых все не ключевые атрибуты функционально зависят от полного ключа.
Требование нормализации отношений направлено на обеспечение такой их структуры, которая исключает некорректное обновление значений некоторых атрибутов и ошибки в выполнении определенных операций выборки.
Теория реляционной модели данных рассматривает пять уровней нормализации отношений - пять нормальных форм, но наибольшую практическую значимость имеют первые три нормальных формы. Аномалии более высоких форм не оказывают существенного влияния на результаты обработки отношений и встречаются крайне редко.
Первая нормальная форма (1НФ)
Отношение удовлетворяет первой нормальной форме, если все его атрибуты атомарны (неделимы), т.е. среди атрибутов нет составных или с множественными значениями.
Например, приведенное на рис. 3.17 отношение СТУДЕНТ не удовлетворяет первой нормальной форме, так как имеет атрибут место рождения, состоящий из атрибутов республика, область, город (село), а также атрибут иностранный язык (которым владеет студент) с множественными значениями для некоторых студентов.
СТУДЕНТ
|
Рис. 3.17. Отношение не удовлетворяющее 1НФ по наличию составного атрибута |
Когда говорится о невозможности иметь составной атрибут (например, место рождения) имеется в виду, что невозможно одновременно иметь (обращаться к ним) атрибуты республика, область, город и те же самые значения именовать как место рождения. Необходимо принять либо первый (детальные атрибуты), либо второй вариант. Если все же необходимо кроме места рождения иметь возможность обращаться и к атрибуту город, то необходимо ввести дополнительный атрибут город, где родился.
Более значительная специфика связана с атрибутом с множественными значениями.
Соблюдая требования одного размера атрибута во всех кортежах, мы должны бы были представить исходное отношение либо в виде рис. 3.18, либо в виде рис. 3.19.
Код | Ф.И.О. | № груп | Иностранный язык |
студента | пы | ||
Гончар А. | немецкий, английский | ||
Драганов М | немецкий, шведский, польский | ||
Зюкин М. | латынь | ||
• • • | |||
Акулин А. | не владеет |
Рис. 3.18. Размещение множества значений в одном атрибуте |
В этом случае размер атрибута иностранный язык, рассчитанный под максимально возможное число языков, будет неоправданно большим, к тому же процедура поиска кортежей с заданным значением языка будет отличаться от аналогичной процедуры для атрибутов с атомарными значениями.
Код | Ф.И.О. | Номер | Иностранный |
студента | группы | язык | |
Гончар А. | немецкий | ||
Гончар А. | английский | ||
Драганов М. | немецкий | ||
Драганов М. | шведский | ||
Драганов М. | польский | ||
Зюкин М. | латынь | ||
• • • | |||
Акулинин А. | не владеет |
Рис. 3.19. Организация хранения атрибутов с множественными значениями в виде типичной для реляционной модели однородной структуры |
Такое представление снимает предыдущие проблемы, однако, порождает новые, связанные с дублированием значений первых атрибутов для студентов, владеющих несколькими языками. Кроме излишнего расхода памяти здесь возникают проблема обработки, например, подсчета числа студентов, родившихся в некоторый день или в диапазоне дат. Кроме того, что более опасно, возможна аномалия обновления. Например, решено исключить значение латынь из учитываемых языков и при удалении соответствующего кортежа в приведенном примере приведет к потере всей информации о студенте Зюкине М.
Реляционная модель требует нормализации (приведения к 1НФ) путем разбиения исходного отношения на два следующим образом: из исходного отношения СТУДЕНТ исключается атрибут с множественным значением и получается новое отношение СТУДЕНТ 1, а исключенный атрибут вместе с ключом исходного отношения образуют новое отношение СТУДЕНТ2 (рис. 3.20), причем оба атрибута являются ключевыми.
СТУДЕНТ1
Код студента Ф.И.О. Дата рождения
СТУДЕНТ2