Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4_2 Создание объектов.doc
Скачиваний:
3
Добавлен:
13.11.2019
Размер:
94.21 Кб
Скачать

10

Тема 4.2. Описание данных на основе sql

1. Организация данных в InterBase. Типы данных

В каждом столбце таблицы хранятся данные одного определенного типа. Данные, по которым ведется поиск, должны быть простого (неструктурированного) типа, для которого определены операции сравнения. Данные других типов допускаются, но для работы с ними используются средства, выходящие за пределы стандарта SQL.

Перечень обрабатываемых типов данных совпадает со списком, приведенным при описании типов данных SQL, однако дополнен следующими типами данных:

DATE в версии до 6 или TIMESTAMP в версиях от 6 (8 байт) включает также данные о времени; DATE в версии от 6 (4байта) – только дата и TIME в версии от 6 (4 байта) только время.

NCHAR (n)/ NATIONAL CHARACTER (n) / NATIONAL CHAR (n) – строка фиксированной длины, использующая кодовой набор ISO8859_1;

NCHAR VARYING (n) / NATIONAL CHARACTER VARYING(n) / NATIONAL CHAR VARYING(n) – строка переменной длины, использующая кодовой набор ISO8859_1;

BLOB [SUB_TYPE {int | subtype name}] [SEGMENT SYZE int] [CHARACTER SET charname]/ BLOB [(seglen [, subtype] ) ].

SUB_TYPE:

0 – неструктурированный (используется для двоичных данных или данных неопределенного типа);

1 – текст;

2 – двоичное языковое представление BLR;

3 – Access control list;

4 – зарезервировано;

5 – закодированное описание метаданных текущей таблицы;

6 – описание ненормально завершенной транзакции к нескольким базам;

<0 – пользовательский тип.

SEGMENT SYZE – размер блока, через который осуществляется чтение-запись данных BLOB.

Все данные, кроме BLOB, могут быть организованы в массивы. Массивы могут содержать от 1 до 16 измерений.

2. Домены

2.1 Создание доменов

Перед тем, как создавать таблицы, которые ссылаются на домены, необходимо задать описания доменов при использовании команды CREATE DOMAIN. В результате ее выполнения создается шаблон, на который можно ссылаться в командах создания и модификации таблиц.

Столбцы, базирующиеся на доменах, наследуют все характеристики домена, причем часть из них может быть переопределена в локальных описаниях столбцов.

Замечание! Тип данных не может быть переопределен при использовании домена в описании таблицы!

Синтаксис описания доменов:

CREATE DOMAIN <name_domain> [AS] <data_type>

[DEFAULT {literal| NULL| USER}]

[NOT NULL] [CHECK (<dom_condition>)];

<name_domain> - имя создаваемого домена; <data_type> - любой допустимый тип данных;

[DEFAULT {literal| NULL| USER}] – задание значения по умолчанию. Значение по умолчанию присваивается соответствующему атрибуту при создании новой строки в таблице, если его значение не указано явно. Literal – указывает значение явно; NULL – оставляет значение пустым; USER – имя пользователя, создавшего запись. Для полей типа дата можно указывать NOW – вводится текущая дата.

NOT NULL – запрещает ввод пустых значений.

CHECK (<dom_condition>) – задает ограничение (описание контроля данных при вводе и изменении). Для задания условия используются следующие ключевые слова:

VALUE – подразумевает значение, вводимое в поле;

IS NULL, IS NOT NULL;

BETWEENAND; LIKE, IN;

А также все арифметические и логические операторы.

Замечания:

  • Домены создаются независимо друг от друга и, тем более, от каких-либо таблиц, следовательно, CHECK в домене не может ссылаться ни на какой другой домен или столбец таблицы.

  • Домен может иметь только одну конструкцию CHECK.

  • Конструкция CHECK не может быть переопределена при описании атрибута таблицы. Если при описании поля в таблице, ссылающегося на домен, имеющий CHECK, указано свое органичение, то действовать будут оба ограничения.

Примеры:

CREATE DOMAIN USERNAME AS VARCHAR (20) DEFAULT USER;

CREATE DOMAIN MONTH AS SMALLINT CHECK (VALUE BETWEEN 1 AND 12);

CREATE DOMAIN D_ELEM AS CHAR (2) CHECK (VALUE IN (‘Au’, ‘Ag’, ‘Pt’, ‘Pd’, ‘Os’, ‘Rt’));

CREATE DOMAIN PVEIGHT AS NUMERIC (12,2) DEFAULT NULL CHECK ((VALUE IS NULL) OR (VALUE> 1.25));

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]