С.Д. Кузнецов - Основы баз данных (1121716), страница 49
Текст из файла (страница 49)
СКЕАТЕ РОМА1Н ЕМР НО АЯ 1НТЕОЕН СНЕСК (ЧАЬРЕ БЕТХЕЕН 1 АНР 10000); Номера служащих являются целыми числами, поэтому базовый тип домена еме но есть тип тнтеаен. Кроме того, на значения этого домена устанавливается следующее ограничение: они должны быть больше нуля и не превосходить целое значение 10000. ДОМЕН ЯАЬАНУ ОПРЕДЕЛИМ СЛЕДУющим образом: СЕНАТЕ РОМАТН ЯАЬАНУ АЯ НРМЕВ1С (10, 21 Реедпьт 10000.00 СНЕСК (ЧАРА ВЕТНЕЕН 10000.00 АЛР 20000000.001 СОНЯТНА1НТ ЯАЬ НОТ НРЬЬ СНЕСК (ЧАЬРЕ 1Я НОТ ЖАРЬ); Размер заработной платы является значением точного числового типа номентс из десяти десятичных цифр, две из которых составляют дробную часть. По умолчанию размер заработной платы составляет 10000 руб.
Установлен диапазон допустимого размера зарплаты от 10000 руб. до 20000000 руб. Неопределенное значение зарплаты не допускается (на уровне определения домена). Изменение определения домена Для изменения характеристик ранее определенного домена используется оператор Я'>Ь АЬТЕН РОМАТН. Синтаксис этого оператора выглядит следующим образом: бова1п а1гегпаптоп АЬТЕН РОМАТН с(оватп паве дова1п а1СегпаС1оп асСтоп с(ова1п а1сегпасьоп асс(оп бова(п бетап1с а1сегпастоп асстоп дова1п сопвпга)пС а1СегпаС1оп асг1оп Как видно из синтаксических правил, при изменении определения домена можно выполнить действие по изменению раздела значения по умолчанию либо изменить ограничение домена. Для первого варианта действует следующий синтаксис: 228 Общее введение, типы данных и средства определения доменов Лекция 11 бо1ла(п г1е1аи1Г а1ГегпаГ(оп асГ(оп ЯЕТ с1е1ап1Г т1е11п1Г1оп РВОВ РЕГАРРТ В случае установки нового значения по умолчанию (Яет) это значение автоматически применяется ко всем столбцам, определенным на данном домене.
Более точно, зто значение становится новым значением по умолчанию. Операция не оказывает влияния на состояние существующих строк таблиц базы данных. В случае отмены раздела значения по умолчанию в определении домена (ОПОР) сушествовашее значение домена по умолчанию становится значением по умолчанию каждого столбца, который определен на данном домене и для которого не специфицировано собственное значение по умолчанию. Действие по изменению ограничения домена определяется следующим синтаксисом: даша(п сопагга1пг а1гегпаг(оп асг(оп АРР бопа(п сопвсгагпГ бе1(п(Ггоп РВОВ ООИЯТВАТИТ сопапга(пГ папе Действие по добавлению нового определения ограничения домена (АРР) приводит к тому, что новое условие добавляется через АИР к существующему ограничению домена.
Если к моменту выполнения соответствующего оператора АРТЕВ РОМА1И существуют столбцы некоторых таблиц, текущие значения которых противоречат новому ограничению, то СУБД должна отвергнуть этот оператор АРТЕВ РОМА1И. Действие по отмене ограничения домена (РВОВ) приводит к исчезновению соответствующей части общего ограничения соответствуюгцего домена, что, естественно, не влияет на существующие значения столбцов имеющихся таблиц. Примеры изменения определения домена Немного поупражняемся с доменом яАгНВТ. Для изменения значения заработной платы по умолчанию с 10000 на 11000 руб.
нужно выполнить оператор АРТЕВ РОМА1И ЯАРАВт' ЯЕТ РЕЕАРР 11000.00; Для отмены значения по умолчанию в домене ЯАРАВУ следует воспользоваться оператором НЬТЕВ РОМА1И ЯАРАВУ РВОВ РЕГАРЬ; 229 Основы бвз данных Курс Если к определению домена ЯАЬАЕХ требуется добавить ограничение (например, запретить значение зарплаты, равное 15000 руб.), необходимо выполнить оператор АЬТЕЕ РОМА1М ЯАЬАЕХ АРР СНЕСК (УАЬРЕ <> 15000.00); Наконец, если требуется отменить (именованное!) ограничение целостности, препятствующее наличию неопределенных значений в столбцах, которые определены на домене ЯАЬАЕХ, то нужно выполнить оператОР АЬТЕЕ РОМАТИ ЯАЬАЕХ РЙОР СОИЯТЕА1МТ ЯАЬ НОТ МОЬЬ; Отмена определения домена Чтобы отменить ранее созданное определение домена, нужно воспользоваться оператором РЕОЕ РОМАТМ в следующем синтаксисе: РНОР РОМА1М дожа(п папе (ЕЕЯТН1СТ ~ САЯСАРЕЯ) Если в операторе указано ееяте1СТ, и если соответствующий домен использован в определении некоторого столбца, в определении некоторого представления или в определении ограничения целостности (см.
следующие лекции), то оператор РЕОР РОмА1И отвергается. В противном случае определение домена ликвидируется. Если в операторе Реор Ромлгм указано САЕСАРея, то оператор выполняется всегда. При этом уничтожаются все представления и ограничения целостности, в определении которых использовалось имя данного домена. Столбцы, определенные на этом домене, автоматически переопределяются следующим образом: ° считается, что каждый такой столбец теперь относится к определяющему типу уничтожаемого домена; ° если у столбца не было определено собственное значение по умолчанию, то считается, что теперь у него имеется такое значение по умолчанию, совпадающее со значением по умолчанию уничтожаемого домена; ° каждый столбец наследует все ограничения уничтожаемого домена.
Неявные и явные преобразования типа или домена В языке Я(.)Ь обеспечивается возможность использования в различных операциях не только значений тех типов, для которых предопределена операция, но и значений типов, неявным или явным образом приводимых к требуемому типу. 230 Общее введение, типы данных и средства опрвдввения доменов Лекция 11 Неявные преобразования типов в Зьй. В Я;Н.
поддерживается совместимость некоторых типов данных за счет неявного преобразования значений одного типа к значениям другого типа данных (например, при необходимости ЯЬОАТ неявно приводится к РОЦ- вьк). Опишем наиболее важные правила совместимости типов, принятые в Я()):!999. Начнем с определения приводимости типов. Тип данных А приводим к типу данных Я в том и только в том случае, когда в любом месте, где ожидается значение типа Я, может быть использовано значение типа А. Основные правила приводимости типов состоят в следующем. ° Типы символьиых строк.
Тип СНАЯАСтЕВ (х) приводим к любому типу СНАЯАСтЯА (у),ЕСЛИу>х. ТИПЫуААСНАЯ (х) ИСНАВАСтЯА (х) ПрИВОдИ- мы к любому типу ))АвснАА (у), если у>х. Типы снАААстЯА (х) и ()АвСНАВ (х) приводимы к любому типу СЬОЯ. ° Типы битовых строк. Тип вот (х) приводим к любому типу Ягг (у), если у>х. Типы втт чляутнс (х) и ятт (х) приводимы клюбомутипу Втт уАЯу|НС (у), если у>х. ° Типы вьоя. Тип вьоя (х) приводим клюбомутипувьоя (у),еслиу>х. ° Типы точных чисел. Тип Ян (р, в ) приводим к любому типу Ян (р;, в; ), у которого в,>в, и р, определяется в реализации.
Тип Ян (р, в) приводим к любому типу приблизительных чисел Ан (р,), где р, определяется в реализации. ь Типы приблизительных чисел. Тип АН (р,) приводим к любому типу (р;), если р,>р,. Явные преобразования типов или доменов и оператор САЗТ Неявные преобразования типов не всегда удобны, недостаточно гибки и иногда могут вызывать ошибки. Поэтому, как показывает предыдущий подраздел, число допустимых неявных преобразований типов в Я;Н. весьма ограничено. Однако Б(2з.
существует специальный оператор САЯТ, с помощью которого можно явно преобразовывать типы или домены в более широких пределах допускаемых преобразований. Конструкция имеет следующий синтаксис: САЯТ ((вса1аг-ехргеввуоп ) МЯЬЬ ) АЯ (дага Суре ) бова(п паве)) Оператор преобразует значение заданного скалярного выражения к указанному типу или к базовому типу указанного домена. Результатом применения оператора САят к неопределенному значению является неопределенное значение.
Для значений, отличных от неопределенных, в стандарте приводятся подробные правила выполнения преобразований, которые интуитивно понятны. 231 Курс Основы без данных то ус Рс о т Да Да Нет Нет Нет Нет Нет Да НРТ Нет Нет Нет Нет Нет Нет Ла Да Да Да Да Да да Да да да Нет Нет да Нет Нет Нет ао в Нет Да Да Нет НРТ Нет Нет Нет Да Нет Нет Нет Да Да Да Нет НЕт Нет Нет Да Да Нет Нет Да Да Нет Нет Нет Да Нет Нет та Да Да Да Да Да Да Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет НРТ Нет Нет НРТ' НРТ Да Да Да Нет По поводу ячеек таблицы, содержащих знак вопр оса, необходимо сделать несколько оговорок: (1) если тр — интервал и яр — тип точных чисел, то тр должен содержать единственное поле даты-времени; 232 Поясним действие оператора Сднт в наиболее важных случаях. Примем следующие обозначения типов данных: ЕБ — точные числовые типы (Ехасг Ияпег1с) ДН вЂ” приблизительные числовые типы (Нрргох1пасе Мппег1с) С вЂ” типы символьных строк (СЬагассег) НС вЂ” типы символьных строк постоянной длины (Н1хед-1епдГН С)тагасеег) ус — типы символьных строк переменной длины (Чаг1ао1е-1епдГЬ Снагассег) в — типы битовых строк (вуг нг г(пд) Е — типы битовых строк постоянной длины (Н1хеб-1епдГЬ В)Г Бсг(пд) ув — типы битовых строк переменной длины (уаг1ап1е-1епдГЬ В(Г Всг(пд) и — тип Раге т — типы типе тн — типы т1певгапр уМ вЂ” типы 1пГегуа1 уеаг-Мопсй ВТ вЂ” типы 1псегуа1 Вау-Т1ше Пусть тр — зто тип данных,к которому производится преобразование, а Вр — тип данных операнда.
Тогда допустимы следующие комбинации («да» означает безусловную допустимость, «нет» — безусловную недопустимость и «2» — допустимость с оговорками). Общее введение, типы данных и средства определения доменов Лекция 11 (2) если тп — тип точных чисел и яп — интервал„то яп должен содержать единственное поле даты-времени; (3) если яп — тип символьных строк и тп — тип символьных строк постоянной или переменной длины, то набор символов яп и тР должен быть одним и тем же. Заключение В этой лекции мы начали рассматривать средства языка ВЯ)., позволяюшие определять и динамически изменять схему базы данных.
Наиболее важным для обшего понимания языка является раздел «Типы данных о0(» — система типов языка о0) (и любой В( )) -ориентированной базы данных), В последних стандартах языка Я(.1) поддерживаются: ° развитый набор предопределенных типов, включая ряд параметризованных типов; в генераторы типов массивов и мультимножеств, элементами которых могут быть значения предопределенных типов, типов коллекций, анонимных строчных типов строк и типов, определенных пользователями; ° генератор анонимных строчных типов, в которых типом элемента строки может быть любой предопределенный тип, тип коллекции, анонимный строчный тип и тип, определенный пользователями; ° определяемый пользователем структурный тип, в котором типом элемента структуры может быть любой предопределенный тип, тип коллекции, анонимный строчный тип и тип, определенный пользователями; для определяемых пользователем структурных и индивидуальных типов можно определять пользовательские операции. Нельзя с уверенностью сказать, что система типов языка о(;)Е настолько полна, что может удовлетворить любые потребности, но можно отметить, что в этой системе типов отсутствует единый логический подход и имеется избыточность.