Главная » SQL, Базы данных » Типы и реляционная модель

0

Примечание.  При   первом   прочтении   книги   читатель   может   пожелать ознакомиться с этой главой лишь кратко. Сама эта глава по  праву занимает место, отведенное ей в данной части, но значительный объем представленного в ней материала фактически не потребуется до  главы 20 части V и глав 25-27 части VI.

Понятие типа данных (или сокращенно типа) является фундаментальным; каждое  значение,  каждая  переменная, каждый  параметр,  каждый  оператор, предназначенный  только  для  чтения,  и   особенно  каждый  реляционный атрибут относится к тому или иному типу. Так что же такое тип? Кроме всего

прочего, он представляет собой множество значений. К примерам таких типов относятся INTEGER (множество всех целых чисел), CHAR  (множество всех символьных строк), s# (множество всех номеров поставщиков) и т.д. Поэтому, например,   говоря   о   том,   что   переменная   отношения   s   с   данными   о поставщиках имеет атрибут STATUS типа INTEGER, МЫ ПОД ЭТИМ подразумеваем, что значениями этого  атрибута являются целые числа и ничего кроме целых

чисел.

Примечание. Из этого непосредственно следуют два изложенных ниже вывода.

■  Первым является то, что типы можно также называть доменами, особенно когда речь идет о реляционной модели; фактически автор сам использовал  последний термин в предыдущих изданиях настоящей книги, но теперь предпочитает термин типы.

■  Второй вывод может служить предостережением: автор пытается сохранить в этой части книги разумную точность. Поэтому он не утверждает,  например,  что тип INTEGER представляет собой множество всех  возможных  целых чисел, а должен фактически сделать оговорку, что это—  множество всех целых чисел, которые могут быть представлены в рассматриваемой компьютерной системе (поскольку, безусловно, есть  такие  целые числа, которые превышают возможности представления в любой компьютерной системе). Вполне очевидно, что аналогичное уточнение относится ко многим последующим утверждениям и примерам, приведенным в этой главе; в связи с этим автор не будет явно подчеркивать указанную особенность типов, но просит читателя всегда учитывать данное предостережение.

Любой отдельно взятый тип является либо определяемым системой (т.е. встроенным), либо определяемым пользователем. В данной главе предполагается,  что из трех типов, упомянутых выше, INTEGER И CHAR определены системой, a s# определен пользователем. Но основой для объявления реляционных атрибутов (а также переменных, параметров и операторов, предназначенных только для чтения, — см. раздел 5.2) может стать любой тип, независимо от того, определен ли он системой или пользователем.

С любым конкретным типом связано множество операторов, которые могут с полным правом применяться к значениям рассматриваемого типа; это означает, что операции со значениями указанного типа могут выполняться исключительно с помощью операторов, определенных для этого типа (выражение "определен для этого типа" означает именно то, что рассматриваемый оператор имеет параметр, который объявлен как относящийся к этому типу). Например, в случае определяемого системой типа INTEGER используются описанные ниже операторы.

■     В системе предусмотрены операторы для сравнения целых чисел,"=", "<" и т.д.

■     В ней также предусмотрены операторы для выполнения арифметических опера ций с целыми числами,"+", "*" и т.д.

■     Но в системе не предусмотрены операторы для выполнения над целыми числами строковых операций " | | " (конкатенация), SUBSTR (выделение подстроки) и т.д. (иными словами, строковые операции над целыми числами не поддерживаются).

В отличие от этого, в случае использования типа, определяемого пользователем, такого как s#, может потребоваться определить операторы для сравнения номеров поставщиков — "=", "<" и т.д. Но такие операторы, как "+", "*" и т.д., скорее всего, не будут определены, а это означает, что арифметические операции над номерами поставщиков не должны поддерживаться (и  действительно, для чего может вообще потребоваться складывать или умножать номера двух поставщиков?).

Теперь перейдем к более подробному изучению изложенных выше идей, используя в качестве основы теорию типов, которая представлена в [3.3].

Источник: Дейт К. Дж., Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2005. — 1328 с.: ил. — Парал. тит. англ.

По теме:

  • Комментарии