Основная идея Кодда состояла в том, чтобы выбрать в качестве родовой логической структуры хранения данных структуру, которая, с одной стороны, была бы достаточно удобной для большинства приложений и, с другой стороны, допускала бы возможность выполнения над базой данных ненавигационных операций. Иерархические и, в особенности, сетевые структуры данных являются навигационными по своей природе. Ненавигационному использованию таблиц мешает упорядоченность их столбцов и, в особенности, строк.
По сути, Кодд предложил использовать в качестве родовой структуры БД «таблицы», в которых и столбцы, и строки не являются упорядоченными. Легко видеть, что такая «таблица» со множеством столбцов {A1, A2, …, An}, в которой каждый столбец Ai
может содержать значения из множества Ti
= {vi1,
vi2, …, vim}
(все множества конечны), в математическом смысле представляет собой отношение над множествами {T1, T2, …, Tn}. Напомню, что в математике отношением над множествами {T1, T2, …, Tn}
называется подмножество декартова произведения этих множеств, т.е. некоторое множество кортежей {{v1,
v2, …, vn}}, где vi
Ti. Поэтому для обозначения родовой структуры Кодд стал использовать термин отношение (relation), а для обозначения элементов отношения – термин кортеж. Соответственно, модель данных получила название реляционной модели.
Схема БД в реляционной модели данных – это набор именованных заголовков отношений
вида Hi
= {<Ai1, Ti1>, < Ai2, Ti2>, …, <
Aini, Tini>}. Ti
называется доменом атрибута Ai. По Кодду, каждый домен Ti
является подмножеством значений некоторого базового типа данных Ti+, а значит, к его элементам применимы все операции этого базового типа (в конце 1960-х гг. базовыми типами данных считались типы данных распространенных тогда языков программирования; в IBM наиболее популярными языками были PL1 и COBOL).
Реляционная база данных в каждый момент времени представляет собой набор именованных отношений, каждое из которых обладает заголовком, таким как он определен в схеме БД, и телом. Имя отношения Ri
совпадает с именем заголовка этого отношения HRi.
Тело отношения BRi
– это множество кортежей вида {<Ai1, Ti1, vi1>, < Ai2, Ti2, vi2>, …, <
Aini, Tini, vini>}, где tij
Tij. Во время жизни БД тела отношений могут изменяться, но все содержащиеся в них кортежи должны соответствовать заголовкам соответствующих отношений.