
210
Часть II. Структурированный язык запросов SQL
случае будет заключаться в том. что теперь такие записи будут
обрабатываться так же. как и любые другие значения. Это озна-
чает, что при выборке данных эти записи будут включены в вы-
вод запроса, что часто является очень полезным.
В этом же поле допускается использовать ограничения
UNIQUE или PRIMARY KEY, но тогда любую вставляемую
строку придется модифицировать прежде, чем будет добавлена
какая-либо другая строка с этой установкой по умолчанию, что
не совсем удобно.
На практике для содержимого отдельных полей существуют и
другие ограничения. Например, поле TFAM таблицы TEACHERS
не должно на самом деле содержать любую произвольную фами-
лию. Например, фамилия Смирнова является "неправильной", т.к.
не соответствует ни одному преподавателю рассматриваемого
ВУЗа. Формально на языке реляционной БД это означает, что
доменом поля TFAM являются не просто какие-либо строковые
значения, и даже не просто фамилии людей, а ряд фамилий лю-
дей, являющихся преподавателями этого ВУЗа.
В стандарте SQL2 определение домена реализовано как часть
определения БД. Согласно этому стандарту, домен является име-
нованной совокупностью значений данных и широко использует-
ся в определении БД. как дополнительный тип данных. Домен
создается с помощью команды CREATE DOMAIN, и, после объ-
явления, на него можно ссылаться, как на тип данных.
Таким образом, нами рассмотрены несколько способов управ-
ления значениями, которые могут быть введены в поля таблицы.
Эти средства позволят более полно использовать возможности
SQL и избегать ошибок при вводе данных.
Создание синонимов
При каждом обращении в команде к базовой таблице или
представлению, для которого пользователь не является владель-
цем, необходимо указывать префикс имени владельца, так чтобы
SQL знал, где ее осуществлять поиск. При выполнении большого
количества запросов и других команд такое указание становится
неудобным, поэтому в данном случае лучше воспользоваться
возможностью создания синонимов для таблиц.
Синоним - это альтернативное имя для таблицы. Пользова-
тель, создавший синоним, становится его собственником, а зна-
Глава 2.4. Способы создания баз данных
211
чит, отпадает необходимость того, чтобы при обращении вводил-
ся пользовательский идентификатор доступа.
Если для пользователя оговорены правила доступа (привиле-
гии) по крайней мере, для одного поля таблицы, то он может соз-
дать синоним. Например, пользователь с идентификатором SHER
может создать синоним для таблицы STUDENTS, принадлежа-
щей пользователю SA следующим образом:
CREATE SYNONYM FIRST FOR SA. STUDENTS;
После этого пользователь может работать с таблицей FIRST
так же, как это делалось при обращении к ней по имени
SA.STUDENTS, т.к. FIRST - это исключительная собственность,
используемая для SHER.
Обратите внимание на тот факт, что префикс (идентификатор)
пользователя - это фактически часть имени любой таблицы. Вся-
кий раз, когда не указывается собственное имя пользователя. SQL
подразумевает, что таблица принадлежит ему и сам заполняет
соответствующую информацию. Отсюда следует, что два одина-
ковых имени таблицы, связанные с различными владельцами,
являются не идентичными и. значит, не приводят к какому-либо
беспорядку в SQL. Другими словами, два пользователя могут
создать две полностью несвязанные таблицы с одинаковыми
именами, но это также будет означать, что один пользователь
может создать представление, основанное на имени другого
пользователя, стоящем после имени таблицы. Поэтому можно
создавать собственные синонимы пользователя, имена которых
будут такими же. что и первоначатьные имена таблиц. Например,
пользователь SHER может создать синоним для таблицы STU-
DENTS, с таким же именем:
CREATE SYNONYM STUDENTS FOR SA. STUDENTS;
После этого с точки зрения SQL теперь имеются два разных
имени одной таблицы: SHER.STUDENTS и SA.STUDENTS. Од-
нако каждый из этих пользователей может ссылаться к этой таб-
лице просто как к STUDENTS, a SQL сам разберется, какая таб-
лица имеется в виду.
Конечно, если планируется иметь таблицу студентов STU-
DENTS, используемую большим числом пользователей, то лучше
так организовать работу с ней, чтобы они ссылались к ней с по-