С.Д. Кузнецов - Основы баз данных (1121716), страница 45
Текст из файла (страница 45)
Реализация промежуточного уровня желательна, и обычно именно такой уровень языка поддерживается ведущими компаниями- производителями БО).-ориентированных СУБД. Наконец, полный уровень языка является целью, к достижению которой следует стремиться. В данной классификации критерием отнесения той или иной возможности языка к некоторому уровню является оцениваемая создателями стандарта Ь( Н.
(большая часть которых является сотрудниками ведущих компаний, производящих ЯО1.-ориентированные СУБД) техническая сложность реализации этой возможности. Конечно, такая классификация важна и для программистов приложений баз данных, но только для того, чтобы оценить реальные возможности конкретной СУБД.
Для понимания языка БО1. это разбиение на уровни несущественно. Другая классификация показана на рис. 11.1. Среди всех конструкций языка Я Н. можно выделить такие конструкции, которые можно использовать при «прямом («1(гвсг) взаимодействии конечного пользователя с СУБД (например, в интерактивном режиме). В некотором смысле этот уровень также является базовым, поскольку соответствующие средства языка в наибольшей степени отражают его ориентированность на работу с мультимножествами.
На следующем уровне, уровне «встпраивавмого» (етое«Ые4 БО1., язык расширяется конструкциями, позволяющими использовать возможности прямого БО1. в программах, написанных на традиционных язы- 211 Основы баэ данных Курс ках программирования. Наконец, на уровне «динамического (йрпатзс) БОЕ во встраиваемый Я 1. добавляются конструкции, позволяющие приложениям обращаться к СУБД с конструкциями прямого БО), которые динамически образуются во время выполнения программы.
Нам кажется, что вторая классификация является более полезной для читателя, постигающего основы языка БОЕ. По нашему мнению, дополнительные возможности, присутствующие во встраиваемом и вдинамическом Я))., не слишком сильно влияют на модельное представление языка. Конечно, возможности встраиваемого и динамического Я)Е необходимо хорошо знать разработчикам приложений Я )Е-ориентированных баз данных. Но поскольку задачей этого курса не является обучение использованию языка БОБ при программировании приложений баз данных, мы не будем затрагивать эти темы. Обратимся к прямому БО), причем не в полном объеме стандартов БО).:2003 и БО):1999 (этого не позволяет сделать обьем курса).
Обсудим только наиболее важные аспекты. В этой лекции обсуждаются основные аспекты системы типов данных языка БОЕ и средства определения доменов. Зимечаниез Лекции, посвященные языку БОЕ, опираются, главным образом, на стандарт ЯЩ:1999. В тех случаях, когда будут упоминаться дополнительные возможности, специфицированные в наиболее свежей версии стандарта — Я~).:2003, мы будем явно на это указывать.
Поэтому здесь мы используем терминологию стандарта (таблицы, строки, столбцы и т. д.).* Типы данных ЗСн. Данные, хранящиеся в столбцах таблиц Я;П;ориентированной базы данных, являются типизированными, т. е. представляют собой значения одного из типов данных, предопределенных в языке Я)) или определяемых пользователями путем применения соответствующих средств языка. Для этого при определении таблицы каждому ее столбцу назначается некоторый тип данных (или домен), и в дальнейшем СУБД должна следить, чтобы в каждом столбце кажлой строки каждой таблицы присутствовали только допустимые значения. В этом разделе мы обсудим систему типов языка БО1..
Все допустимые в Я )Е типы данных, которые можно использовать при определении столбцов**, разбиваются на следующие категории***: * К сожалению, приходится использовать термин свзрока в двух смыслах: строка юаб«ицм (~аЫ« гон) и сим«ельиая и«и битовая строка (схагагят ог ЬВ згпикь Постараемся обеспечить правильное понимание смысла термина в контексте его использования. ** А также переменных, параметров и других типизированных обьектов я эмка б( ЗЦ которые мы не затрагиваем в этом курсе. **' В этот список не включен тип данных ХМЦ поскольку в данном курсе вообще не рассматриваются проблемы управления базами ХМЕ-данных. 212 Общее введение, типы данных и средства определения доменов Лекция 1! ° точные числовые типы (ехас! литег!сз)1 ° приближенные числовые типы (арргох!таге питег(сл); ° типы символьных строк (сйагасгег ултляу); ° типы битовых строк ((г(! угг!лял)*1 ° типы даты и времени (г(агег!тел)1 ° типы временных интервалов (гл!егуа)л); ° булевский тип ( Воо(еалл)1 ° типы коллекций (соПесбоп !урез); ° анонимные строчные типы (алопутоил готт !урез)1 ° типы, определяемые пользователем (иуег-г(еу)лес( !урез); ° ссьзлочные типы (геуегепсе Гурия).
В столбцах таблиц, определенных на любых типах данных, наряду со значениями этих типов, допускается сохранение неопределенного значения, которое обозначается ключевым словом иггьь. В языке определено, что результатом вырахсений вида х а ор ипьь, итзьь а ор х, ипьь а ор ипьь является игл.1. для всех арифметических операций а ор (+, — и т д ), допустимых для типа данных выражения х(выражение И1Л 1 а ор И11ЬЬ является допустимьпн для любой арифметической операции а ор).
Также по определению полагается, что значением выразкенийх солгр ор Изуьь, ИЫЬЬ совр ор х, И13ЬЬ солзр ор ИЫЬЬ для всех операций сравнения (ьь и, >, < и т. д.), определенных для типа выражЕНня Х, яВЛяЕтСя трЕтЬЕ ЛОГИЧЕСКОЕ ЗНаЧЕНИЕ ип/Спатулея (ВЫражЕНИЕ ИПЬЬ совр ор И11ЬЬ является доп)стимым для любой операции сравнения сопр ор). Точные числовые типы К категории точных числовых типов в Я П.
относятся те типы, значения которых точно представляют числа. Типы данных этой категории распадаются на две части: истинно целые типы (титлскл и Бийьыит) и типы, допускающие наличие дробной части (и(гний !с и гзсс тндь). Охарактеризуем эти типы данных более подробно. Истинно целые типы ° Тип титЛСЛЛ. Тип служит для представления целых чисел. Точность чисел (число сохраняемых бит) определяется в реализации. При определении столбца данного типа достаточно указать просто титлслл. ° Тип Бмльыит.
Тип также служитдля представления целых чисел. Точность определяется в реализации, но она не должна быть больше точности типа ьитлслл, При определении столбца указывается просто лаьыит.*** ' Спецификация предопределенного типа данных битовых строк была удалена в стандарте ЗОЬ:2003. Но поскольку эта спецификация появилась только в ЗОгх!999, мы сочли уместным оставить в курсе обсуждение этого типа данных. '* См, ниже Булевгкий тил. "* следует подчеркнул, что в стандарте зОЬ не определяется число байт, занимаемых при хранении в памяти значений целых типов. Не следует думать, что в ЯОЬ для хранения значения типа:кткскк требуется четыре байта, а Яилььтнт требует двух байтов. 213 Основы баэ данных Курс ° Литералы типов целых чисел представляются в виде строк символов, изображающих десятичные числа; в начале строки могут присутствовать символы «+» или «-» (если символ знака отсутствует, подразумевается «+»).
Примеры литералов типов титесек и ямлкктмт: 1826545, 876. Точные типы, допускающие наличие дробной части ° Тип мпмкктс. На самом леле, это не просто тип данных, а параметризуемый тип. При определении столбца можно указать спецификацию мпмкктс (р, в1, где р и в — литералы истинно целого типа, и р задает точность значений (число сохраняемых бит), а з — шкалу (число десятичных цифр в дробной части). Задаваемая шкала не должна быть отрицательной и не должна превышать значение точности.
При определении столбца можно использовать сокращенные формы спецификации типа — МРМКК1С и МРМКК1С (р). Первая форма предполагает использование точности, определяемое по умолчанию в реализации, и шкалы, равной нулю, а вторая — использование заданной точности и шкалы, равной нулю. Допустимые диапазоны значений р и в определяются в реализации. ° Тип Рес1ил1,. Этот тип аналогичен типу мсмектс. Отличие состоит в том, что если при определении столбца типа РКС1МЛР задается точность р, то на самом деле используется точностып, определяемая в реализации, такая, что п > р. Шкала всегда устанавливается такой, как явно или неявно (по умолчанию) задается. При указании типа столбца можно использовать спецификации РКС1МЛР, РКС1МЛР (р) и РКС1МЛР (р, а) . ° Литералы типов точных чисел, допускающих наличие дробной части, представляются в виде строк символов, изображающих десятичные числа, в начале которых могут присутствовать символы «+» или «-» (если символ знака отсутствует, подразумевается «+»), а внутри последовательности цифр может присутствовать символ «.».
Примеры литера- ловтипов%3МЕК1С и РЕС1МЛЬ: 125, 26.36. Приближенные числовые типы К категории приближенных числовых типов в Я0( относятся те типы, значения которых представляют числа приближенным образом. Приближенные числа представляются в виде пары <мантисса, лорядок>, где мантисса состоит из значащих цифр числа, а лорядок определяет реальный размер числа.