
- •Содержание
- •Основные понятия
- •Понятие данных
- •Файловые системы
- •Системы баз данных
- •История развития субд
- •Трехуровневая архитектура ansi/sparc
- •Общая характеристика моделей данных
- •Основные понятия модели данных
- •Представление статических и динамических свойств
- •Общая характеристика структурных компонентов. Множества: домены и атрибуты
- •Общая характеристика структурных компонентов. Отношения: сущности
- •Общая характеристика структурных компонентов. Отношения: связи
- •Общая характеристика ограничений целостности
- •Модель данных «сущность – связь»
- •Уровни представления информации
- •Уровень 1 – информация о сущностях и связях
- •Уровень 2. Структура информации
- •Ограничения целостности в модели сущность-связь
- •Расширенная модель данных сущность-связь: нотация idef1x
- •Реляционная модель данных
- •Базовые структурные компоненты реляционной модели данных
- •Целостная часть реляционной модели данных
- •Языковые средства описания данных
- •Манипуляционная часть реляционной модели данных
- •Подмножество sql для манипулирования данными
- •Примеры написания запросов
- •I. И еще несколько примеров написания запросов из документации [10]
- •Краткая характеристика языка sql pl db2® udb
- •Дополнительные возможности описания ограничений целостности
- •Дополнительные возможности db2
- •Описание данных
- •Манипулирование данными
- •Дополнительные возможности формирования запросов
- •Типы данных, определенные пользователем
- •Функции, определенные пользователем
- •Теория проектирования реляционных баз данных
- •Цели проектирования
- •Функциональные зависимости
- •1. Рефлексивность
- •2. Пополнение
- •3. Транзитивность
- •4. Псевдотранзитивность
- •5. Аддитивность (объединение)
- •6. Декомпозиция (проективность)
- •7. Композиция
- •Нормализация отношений
- •Внутренние структуры хранения
- •Структурная схема обработки запроса
- •Бинарные деревья
- •Многоходовые деревья
- •Сравнение методов индексирования
- •Создание индексов в db2®
- •Организация файлов базы данных в db2®
Типы данных, определенные пользователем
Тип данных, определенный пользователем (UDT – User Defined Type) – это именованный тип данных, создаваемый на основе существующего типа, но, тем не менее, рассматриваемый как несовместимый с ним. В DB2 существует две разновидности типов данных, определенных пользователем:
особый (distinct) тип, который разделяет внутреннее представление с некоторым встроенным типом данных DB2,
структурный тип, который представляет последовательность именованных атрибутов, каждый из которых имеет свой тип.
Мы ограничимся здесь рассмотрением особых типов данных, определенных пользователем.
Особые типы данных, определенные пользователем, базируются на некотором существующем встроенном типе данных DB2. Особый тип данных имеет такое же внутреннее представление, как и существующий встроенный тип данных (исходный тип), но рассматривается как отдельный тип, несовместимый с исходным типом. Например, особые типы могут быть использованы для представления валюты разных стран.
Возможность создания собственных особых типов данных дает ряд преимуществ:
1. Определяя новые типы, можно расширить множество типов данных, предоставляемых DB2 для реализации прикладной системы.
2. Для нового типа данных можно, используя функции, определенные пользователем (UDF – User-Defined Functions), определить свою семантику и свое поведение.
3. Сильная типизация, используемая DB2, гарантирует, что особый тип данных будет использован надлежащим образом – только функции, явно определенные для конкретного особого типа данных, может обрабатывать значения соответствующего типа.
Особый тип данных, определенный пользователем, создается с помощью предложения CREATE DISTINCT TYPE, имеющего следующий синтаксис:
CREATE DISTINCT TYPE имя_нового_типа AS исходный_тип_данных WITH COMPARISON
Исходный тип данных указывает основу для внутреннего представления значений нового типа данных. В качестве исходного типа данных могут быть указаны только встроенные типы данных.
WITH COMPARISON – указывает, что система должна сгенерировать функции сравнения, позволяющие сравнивать между собой с помощью операций сравнения (=, <>, <, <=, >, >=) значения нового типа. Конструкция WITH COMPARISON не может быть указана для новых типов, создаваемых на основе LOB и LONG типов данных (LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB).
При создании нового типа также генерируются функции преобразования из исходного типа в новый тип, и наоборот. Имена генерируемых функций преобразования совпадают с именами типов данных. Так, если src – определяет значение исходного типа данных, тогда эквивалентное значение нового типа можно получить с помощью сгенерированной функции имя_нового_типа(src); если trgt – значение нового типа, эквивалентное значение исходного типа можно получить с помощью функции исходный_тип_данных(trgt).
Определенный пользователем особый тип данных может использоваться, наравне со встроенными типами данных, при создании таблиц (в предложении CREATE TABLE).
Примеры:
Пример 1. Создать особый тип данных с именем MYOWN на основе типа INTEGER:
CREATE DISTINCT TYPE MYOWN AS INTEGER WITH COMPARISON
В результате для типа данных MYOWN генерируются операции сравнения (=, <>, <, <=, >, >=) и функции преобразования типа: INTEGER(MYOWN), возвращающая значение типа INTEGER, и MYOWN(INTEGER), возвращающая значение типа MYOWN.
Пример 2. Создать особый тип данных с именем MILES на основе типа DOUBLE.
CREATE DISTINCT TYPE MILES AS DOUBLE WITH COMPARISONS
В результате для типа данных MILES генерируются операции сравнения (=, <>, <, <=, >, >=) и функции преобразования типа: DOUBLE(MILES), возвращающая значение типа DOUBLE, и MILES(DOUBLE), возвращающая значение типа MILES.