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

Для реализации основных функций в информационных системах используются различные принципы описания данных. Ядром любой базы данных является модель представления данных.

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

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

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

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

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

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

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

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

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

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

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

Для заданных произвольных конечных множеств М1, М2, …, МN множество всевозможных наборов вида (μ1,μ2, …μN), где μ1ЄМ1, μ2ЄМ2, …, μNЄМN называют их декартовым произведением М1×М2×…×МN. Отношением R, определенным на множествах М1, М2, …, МN, называется подмножество декартова произведения М1×М2×…×МN. При этом множества М1, М2, …, МN называются доменами отношения, а элементы декартова произведения – кортежами отношения. Число N определяет степень отношения, количество кортежей – его мощность.

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

Рассмотрим пример реляционной таблицы:

 

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

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

Первичный ключ должен обладать следующими свойствами:

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

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

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

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

 

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

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