Модели данных

Для реализации основных функций в ИС используется различные принципы описания данных. Ядром любой БД является модель представления данных. Подробному описанию различных моделей посвящена следующая глава. Пока же рассмотрим реляционную модель данных, ориентированную на организацию данных в виде двумерных таблиц. Реляционная модель данных является наиболее универсальной, к ней могут быть сведены другие модели.

Важнейшим понятием реляционных моделей данных является сущность. Сущность – это объект любой природы, данные о котором хранятся в БД. Данные о сущности хранятся в двумерных таблицах, которые называют реляционными.

Каждая реляционная таблица должна обладать следующими свойствами:

· один элемент таблицы – один элемент данных;

· все столбцы таблицы содержат однородные по типу данные (целочисленный, числовой, текстовый, и т.д.);

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

· число столбцов задаётся при создании таблицы;

· порядок записей в отношении может быть произвольным;

· записи не должны повторяться;

· количество записей в отношении не ограничено.

Объекты, их взаимосвязи и отношения представлены в виде таблиц. Формальное построение таблиц связано с фундаментальным понятием отношение (термин реляционная исходит от английского слова relation – отношение).

Для заданных произвольных конечных множеств M1, M2, . . . , MN множество всевозможных наборов вида (m1, m2, . . . , mN), где m1ÎM1, m2ÎM2, . . ., mNÎMN называют их декартовым произведением M1´ M2´ . . . ´ MN. Отношением R, определенным на множествах M1, M2, . . . , MN, называется подмножество декартова произведения M1´ M2´ . . . ´ MN. При этом множества M1, M2, . . . , MN, называются доменами отношения, а элементы декартова произведения – кортежами отношения. Число N определяет степень отношения, количество кортежей – его мощность.

В реляционной таблице каждый столбец есть домен (его альтернативное название поле), а совокупность элементов каждой строки – кортеж (или запись).

В реляционной таблице каждый столбец есть домен (его альтернативное название поле), а совокупность элементов каждой строки – кортеж (или запись).

Строка заголовков называется схемой отношения. Например, схема отношения СТУДЕНТ может быть следующей:

СТУДЕНТ (фамилия, имя, отчество, факультет, курс, группа),

здесь СТУДЕНТ – отношение, а фамилия, имя и т.д. – атрибуты.

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

Следующая таблица представляет отношение СТУДЕНТ.

 

 

фамилия имя отчество факультет курс
Андреев Иван Иванович Конструкторский
Борисов Петр Иванович Конструкторский
Яковлев Иван Петрович Технологический

Рис. 4.14. Отношение СТУДЕНТ.

Первичным ключом отношения называется поле или группа полей, однозначно определяющие запись. В отношении СТУДЕНТ первичным ключом может быть поле ФАМИЛИЯ, если во всем списке нет однофамильцев – это будет простой ключ. Если есть однофамильцы, то совокупность полей – фамилия, имя, отчество – создадут составной первичный ключ. На практике обычно в качестве ключевого выбирают поле, в котором совпадения заведомо исключены. Для рассматриваемого примера таким полем может служить номер зачетной книжки студента.

Свойства первичного ключа:

· уникальность – в таблице может быть назначен только один первичный ключ, у составного ключа поля могут повторяться, но не все;

· неизбыточность – не должно быть полей, которые, будучи удаленными из первичного ключа не нарушат его уникальность;

· в состав первичного ключа не должны входить поля типа, комментарий и графическое;

Чтобы избежать повторяющихся записей, приходят к связыванию таблиц. Например, если в отношении СТУДЕНТ надо описать ВУЗ, в котором он обучается, то на первый взгляд, можно было бы включить в отношение следующие поля СТУДЕНТ (фамилия, имя, отчество, факультет, курс, группа, название ВУЗа, адрес). Но при заполнении такой таблицы для каждого студента придется указывать довольно длинное наименование ВУЗа и его адрес, что не удобно. Более того, любая незначительная ошибка во вводе этих полей приведет к нарушению непротиворечивости базы данных. Например, ошибка в адресе ВУЗа приведет к тому, что в БД появятся два ВУЗа с одинаковым наименованием и разными адресами. Поступают в таком случае так: в отношение СТУДЕНТ вводят поле «код ВУЗа» (целое число) и добавляют еще одно отношение ВУЗ (код ВУЗа, название, адрес). СТУДЕНТ и ВУЗ при этом будут связаны по полю «код ВУЗа».

СТУДЕНТ (фамилия, имя, отчество, факультет, курс, группа, код ВУЗа)

 
 


ВУЗ (код ВУЗа, название, адрес, телефон)

При работе с такими таблицами повторяться могут только данные в поле «код ВУЗа», а все необходимые сведения о ВУЗе можно взять из отношения ВУЗ. Заметим при этом, что ввод в поле «код ВУЗа» целого числа, вместо длинного названия, принесет гораздо меньше ошибок. В отношении ВУЗ поле «код ВУЗа» будет первичным ключом, а в отношении СТУДЕНТ поле «код ВУЗа» будет, так называемым, внешним ключом.

Для связи реляционных таблиц необходимо ввести в обе таблицы одинаковые по типу поля, по которым определится связь между записями обеих таблиц. Связи бывают нескольких типов «один к одному», «один ко многим», «многие ко многим». В выше приведенном примере была установлена связь «один ко многим», т.е. одной записи в таблице ВУЗ соответствуют многие записи в таблице СТУДЕНТ.