Для реализации основных функций в ИС используется различные принципы описания данных. Ядром любой БД является модель представления данных. Подробному описанию различных моделей посвящена следующая глава. Пока же рассмотрим реляционную модель данных, ориентированную на организацию данных в виде двумерных таблиц. Реляционная модель данных является наиболее универсальной, к ней могут быть сведены другие модели.
Важнейшим понятием реляционных моделей данных является сущность. Сущность – это объект любой природы, данные о котором хранятся в БД. Данные о сущности хранятся в двумерных таблицах, которые называют реляционными.
Каждая реляционная таблица должна обладать следующими свойствами:
· один элемент таблицы – один элемент данных;
· все столбцы таблицы содержат однородные по типу данные (целочисленный, числовой, текстовый, и т.д.);
· каждый столбец имеет уникальное имя;
· число столбцов задаётся при создании таблицы;
· порядок записей в отношении может быть произвольным;
· записи не должны повторяться;
· количество записей в отношении не ограничено.
Объекты, их взаимосвязи и отношения представлены в виде таблиц. Формальное построение таблиц связано с фундаментальным понятием отношение (термин реляционная исходит от английского слова 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. Отношение СТУДЕНТ.
Первичным ключом отношения называется поле или группа полей, однозначно определяющие запись. В отношении СТУДЕНТ первичным ключом может быть поле ФАМИЛИЯ, если во всем списке нет однофамильцев – это будет простой ключ. Если есть однофамильцы, то совокупность полей – фамилия, имя, отчество – создадут составной первичный ключ. На практике обычно в качестве ключевого выбирают поле, в котором совпадения заведомо исключены. Для рассматриваемого примера таким полем может служить номер зачетной книжки студента.
Свойства первичного ключа:
· уникальность – в таблице может быть назначен только один первичный ключ, у составного ключа поля могут повторяться, но не все;
· неизбыточность – не должно быть полей, которые, будучи удаленными из первичного ключа не нарушат его уникальность;
· в состав первичного ключа не должны входить поля типа, комментарий и графическое;
Чтобы избежать повторяющихся записей, приходят к связыванию таблиц. Например, если в отношении СТУДЕНТ надо описать ВУЗ, в котором он обучается, то на первый взгляд, можно было бы включить в отношение следующие поля СТУДЕНТ (фамилия, имя, отчество, факультет, курс, группа, название ВУЗа, адрес). Но при заполнении такой таблицы для каждого студента придется указывать довольно длинное наименование ВУЗа и его адрес, что не удобно. Более того, любая незначительная ошибка во вводе этих полей приведет к нарушению непротиворечивости базы данных. Например, ошибка в адресе ВУЗа приведет к тому, что в БД появятся два ВУЗа с одинаковым наименованием и разными адресами. Поступают в таком случае так: в отношение СТУДЕНТ вводят поле «код ВУЗа» (целое число) и добавляют еще одно отношение ВУЗ (код ВУЗа, название, адрес). СТУДЕНТ и ВУЗ при этом будут связаны по полю «код ВУЗа».
СТУДЕНТ (фамилия, имя, отчество, факультет, курс, группа, код ВУЗа)
ВУЗ (код ВУЗа, название, адрес, телефон)
При работе с такими таблицами повторяться могут только данные в поле «код ВУЗа», а все необходимые сведения о ВУЗе можно взять из отношения ВУЗ. Заметим при этом, что ввод в поле «код ВУЗа» целого числа, вместо длинного названия, принесет гораздо меньше ошибок. В отношении ВУЗ поле «код ВУЗа» будет первичным ключом, а в отношении СТУДЕНТ поле «код ВУЗа» будет, так называемым, внешним ключом.
Для связи реляционных таблиц необходимо ввести в обе таблицы одинаковые по типу поля, по которым определится связь между записями обеих таблиц. Связи бывают нескольких типов «один к одному», «один ко многим», «многие ко многим». В выше приведенном примере была установлена связь «один ко многим», т.е. одной записи в таблице ВУЗ соответствуют многие записи в таблице СТУДЕНТ.