SQL сегодня
ределяющие встроенный SQL для Pascal, Fortran, COBOL, PL/l. В стандарт 92 добавле ны· С, Ada, MUMPS и теперь все языки являются частью официального стандарта.
Домены. Теоретики реляционной модели данных, и среди них E.F.Codd - отец теории реляционных баз данных, стимулируют применение доАtенов (domains), исхо дя из того, что тип данных должен определяться более точно, чем это позволяет сде лать стандарт множества типов данных. Например, тип номеров телефонов отличается от типа номеров в кодах секретности. Хотя оба типа являются числовы
ми, не имеет смысла непосредственно сравнивать эти значения, так как они опреде
лены на различных доменах.
SQL 92 разрешает пользователям создавать домены как объекты в схеме, а затем оп ределять столбцы таблиц на доменах, а не типы данных для них. Определение домена содержит тип данных, но может включать в себя и предложения, которые задают значе ние по умолчанию, одно или более ограничений (правила, которые ограничивают значе ния, допустимые в отдельных столбцах) и последовательность для сравнения значений (порядок сортировки для набора символов). Однажды определенные домены могут быть впоследствии расширены или удалены.
Домены являются обычным способом воспроизведения принятых ограничений, зна чений по умолчанию и последовательностей для сравнения значений единообразно для всей схемы. Может оказаться полезным применение подобных ограничений на некоторые таблицы, например, использование контрольных разрядов. Их удобно применять в боль ших и сложных схемах или тех, которые используют сложные данные, требующие мно жества ограничений, что актуально при разработке некоторых приложений.
Утверждения и отсрочка огран11чений. Ограничения - это правила, устанав
ливаемые для ограничений тех значений, которые могут содержаться в столбцах. Ра нее в определения базовых таблиц были включены ограничения двух видов: ограничения на столбцы и ограничения на таблицы. Первые были частями определе ния столбца и контролировали предложения ориентированные на вставку или изме нение значения в столбце, а вторые - частью определения таблицы и,
следовательно, могли содержать правила, используемые для контроля множества
столбцов таблицы. В обоих случаях ограничения могли быть либо определенного, за ранее известного типа, например, NOT NULL или UNIQUE, либо СНЕСК ограничениями, позволявшими создателю таблицы генерировать выражения значе ний из столбцов. Если выражение принимало значение FALSE, то ограничение не
удовлетворялось и предложение отвергалось.
Новый стандарт дает возможность определять утверждения (assertions) - огра ничения, которые существуют как независимые объекты в схеме, а не в таблице. Это значит, что они могут ссылаться на множество таблиц и на выражения, содержащие значения из этих таблиц. Их можно использовать для того, чтобы удостовериться в том, что таблица никогда не является пустой. Утверждения позволяют формулиро
вать основные принципы, которым должны удовлетворять данные, например, кон
тролировать законность выполнения операций. Утверждения могут создаваться и
удаляться. Можно также размещать ограничения в домене (см. раздел "Домены" дан ной главы).