Математическая концепция, лежащая в основе реляционной модели - это теоретико-множественное отношение, которое является подмножеством декартова произведения набора доменов. Это теоретико-множественное отношение и дало имя этой модели (не путайте с взаимоотношением из Entity-Relationship model). Формально, домен - это просто набор значений. Например, набор целых чисел - это домен. Также, набор символьных строк длинной 20 и дробные числа являются доменами.
Декартово произведение доменов D1, D2, ... Dk записывается как D1 × D2 × ... × Dk - это множество всех k-кортежей v1, v2, ... vk, таких что v1 ∈ D1, v1 ∈ D1, ... vk ∈ Dk.
Например, когда мы имеем k=2, D1={0,1} и D2={a,b,c} то D1 × D2 is {(0,a),(0,b),(0,c),(1,a),(1,b),(1,c)}.
Отношение - это любое подмножество декартова произведения одного или более доменов: R ⊆ D1 × D2 × ... × Dk.
Например, {(0,a),(0,b),(1,a)} - это отношение; фактически, это подмножество D1 × D2, упомянутого выше.
Члены отношения называются кортежами. Каждое отношение некоторого декартова произведения D1 × D2 × ... × Dk, говорят, имеет степень k и поэтому это множество k-кортежное.
Отношение можно рассматривать как таблицу (мы это уже делали, вспомни Базу данных поставщиков и деталей, где каждый кортеж представлен строкой и каждая колонка соответствует одному элементу кортежа. Заданные названия (называемые атрибутами) колонок приводят к определению реляционной схемы.
Реляционная схема R - это ограниченное множество атрибутов A1, A2, ... Ak. Существует домен Di для каждого атрибута Ai, 1 <= i <= k, откуда берутся значения атрибутов. Мы часто записываем реляционную схему в виде R(A1,
A2, ... Ak).
Замечание: Реляционная схема это только шаблон, тогда как отношение - это экземпляр реляционной схемы. Отношение состоит из кортежей (и поэтому может отображаться в виде таблицы); в отличие от реляционной схемы.
В последнем разделе мы часто упоминали о доменах. Вспомним, что домены, формально, просто набор значений (например, набор целых или дробных чисел). В терминах систем баз данных мы часто говорим о типах данных вместо доменов. Когда мы определяем таблицу, мы решаем какие атрибуты включать. Также, мы решаем, какие данные будут храниться как значения атрибутов. Например, значениями SNAME из таблицы SUPPLIER будут символьные строки, тогда как SNO будет содержать целые числа. Мы определили это, назначив тип данных каждому атрибуту. Типом SNAME является VARCHAR(20) (это SQL тип для символьных строк длиной <= 20), типом SNO является INTEGER. Назначая тип данных, мы также выбираем домен для атрибута. Доменом SNAME является множество всех символьных строк длиной <= 20, доменом SNO является множество всех целых значений.