27_SH43-0144-00 (1038594), страница 32
Текст из файла (страница 32)
Создавая таблицу, в которой нужно уникально идентифицироватькаждую строку, можно добавить в нее столбец идентификации.Глава 3. Создание базы данных135||После создания таблицы нельзя изменить описание таблицы, включив в неестолбец идентификации.||Для задания столбца идентификации используется условие AS IDENTITYоператора CREATE TABLE.||||||Ниже показан пример определения столбца идентификации в оператореCREATE TABLE:|||||В этом примере третий столбец является столбцом идентификации.
Можнотакже задать значение, используемое для создания уникального идентификаторадля каждой добавляемой строки. В этом примере столбец идентификациипервой строки будет содержать значение “100”; для каждой последующейдобавляемой строки значение этого столбца будет увеличиваться на пять.||||Другие примеры использования столбца идентификации: номер заказа, номерработника, номер фонда или номер события. Значения для столбцаидентификации могут генерироваться DB2 двумя способами: ALWAYS (всегда)или BY DEFAULT (по умолчанию).|||||||||||Значения столбца идентификации, определенного как GENERATED ALWAYS,будут гарантированно уникальными.
Его значения всегда будут генерироватьсясистемой DB2. Прикладным программам не разрешается задавать для негоявные значения. Для столбца идентификации, определенного как GENERATEDBY DEFAULT, прикладные программы могут явно задавать его значения. Еслизначение не задано прикладной программой, DB2 сгенерирует это значение.Поскольку это значение может задавать прикладная программа, DB2 не можетгарантировать его уникальность.
Условие GENERATED BY DEFAULTпредназначено для использования при распространении данных, когда нужноскопировать содержимое существующей таблицы, или для операций выгрузки иповторной загрузки таблицы.||Примечание: В настоящее время столбцы идентификации не поддерживаются всреде многораздельных баз данных.||Дополнительную информацию об определении столбца идентификации дляновой таблицы смотрите в руководстве SQL Reference.CREATE TABLE table (col1 INT,col2 DOUBLE,col3 INT NOT NULL GENERATED ALWAYS AS IDENTITY(START WITH 100, INCREMENT BY 5))Создание типизированной таблицыДля создания типизированной таблицы можно использовать разновидностьоператора CREATE TABLE.
Всю необходимую информацию о типизированныхтаблицах можно найти в руководстве Application Development Guide.|||136Руководство администратора: РеализацияЗаполнение типизированной таблицы||||После того, как созданы структурированные типы, созданы соответствующиетаблицы и подтаблицы, можно заполнить типизированную таблицу данными.Всю необходимую информацию о типизированных таблицах можно найти вруководстве Application Development Guide.Таблица иерархии||||Таблица иерархии - это таблица, связанная с реализацией иерархиитипизированных таблиц.
Она создается одновременно с корневой таблицейиерархии. Всю необходимую информацию о таблицах иерархии можно найти вруководстве Application Development Guide.Создание таблицы в нескольких табличных пространствах||||||||Данные таблицы могут храниться в том же табличном пространстве, что ииндекс этой таблицы и все данные длинных столбцов, связанные с этойтаблицей. Можно также разместить индекс в отдельном табличномпространстве, а данные длинных столбцов - в своем табличном пространстве,отдельно от табличного пространства для остальных данных таблицы.
Всетабличные пространства должны существовать перед выполнением оператораCREATE TABLE. Раздельное размещение частей таблицы возможно только прииспользовании табличных пространств DMS.||Чтобы создать таблицу в нескольких табличных пространствах с помощьюЦентра управления:|||||||||||||||||1. Раскройте дерево объектов и найдите папку Таблицы.2. Щелкните правой кнопкой мыши по папке Таблицы и выберите из всплывающегоменю пункт Создать —> Таблицы при помощи мастера.3. Введите имя таблицы и нажмите кнопку Следующий.4. Выберите столбцы для таблицы.5. На странице Табличное пространство выберите Использовать отдельное индексноепространство и Использовать отдельное пространство длинных данных, задайтеинформацию и нажмите кнопку Завершить.Чтобы создать таблицу в нескольких табличных пространствах из команднойстроки, введите команду:CREATE TABLE <имя>(<имя_столбца> <тип_данных> <атрибут_пустого_значения>)IN <имя_табличного_пространства>INDEX IN <имя_индексного_пространства>LONG IN <имя_пространства_длинных_данных>В следующем примере показано, как создать таблицу EMP_PHOTO, различныечасти которой хранятся в разных табличных пространствах:Глава 3.
Создание базы данных137CREATE TABLE EMP_PHOTO(EMPNOCHAR(6)NOT NULL,PHOTO_FORMAT VARCHAR(10) NOT NULL,PICTUREBLOB(100K) )IN RESOURCEINDEX IN RESOURCE_INDEXESLONG IN RESOURCE_PHOTOДанные созданной в этом примере таблицы EMP_PHOTO будут храниться так:v Индексы, созданные для таблицы EMP_PHOTO, будут храниться в табличномпространстве RESOURCES_INDEXESv Данные столбца PICTURE будут храниться в табличном пространствеRESOURCE_PHOTOv Данные столбцов EMPNO и PHOTO_FORMAT будут храниться в табличномпространстве RESOURCE.Дополнительную информацию об использовании для одной таблицынескольких табличных пространств DMS смотрите в руководстве Руководствоадминистратора: Планирование.Дополнительную информацию смотрите в справочнике SQL Reference.Создание таблицы в многораздельной базе данныхПеред созданием таблицы, которая будет физически распределена или разбитана разделы, нужно учесть следующее:v Табличное пространство может располагаться на нескольких разделах базыданных.
Число этих разделов зависит от числа разделов в группе узлов.v Таблицы могут быть расположены вместе в одном табличном пространствеили же в другом табличном пространстве, которое вместе с первымтабличном пространством связано с этой же группой узлов. Дополнительнуюинформацию смотрите в руководстве Руководство администратора:Планирование.При создании таблицы в среде многораздельных баз данных нужно выбрать,кроме всего прочего, ключ разделения. Ключ разделения - это ключ,являющийся частью определения таблицы. Он определяет раздел, где хранитсяданная строка таблицы.Важно правильно выбрать ключ разделения, потому что впоследствии его нельзябудет изменить.
Более того, ключ разделения должен входить во все индексыуникальности (и, следовательно, в ключи уникальности и в первичный ключ). Тоесть, если определен ключ разделения, ключи уникальности и первичные ключидолжны включать в себя все столбцы, входящие в ключ разделения (но онимогут содержать и дополнительные столбцы).138Руководство администратора: РеализацияЕсли ключ разделения не задан явно, используются следующие умолчания.Убедитесь, что этот ключ разделения по умолчанию вам подходит.v Если в операторе CREATE TABLE задан первичный ключ, в качестве ключаразделения используется первый столбец первичного ключа.v Если первичный ключ отсутствует, используется первый столбец, неявляющийся длинным полем.v Если нет столбцов, удовлетворяющих требованиям к ключу разделения поумолчанию, таблица создается без ключа разделения (это разрешено только воднораздельных группах узлов).Пример:CREATE TABLE MIXREC (MIX_CNTL INTEGER NOT NULL,MIX_DESC CHAR(20) NOT NULL,MIX_CHR CHAR(9) NOT NULL,MIX_INT INTEGER NOT NULL,MIX_INTS SMALLINT NOT NULL,MIX_DEC DECIMAL NOT NULL,MIX_FLT FLOAT NOT NULL,MIX_DATE DATE NOT NULL,MIX_TIME TIME NOT NULL,MIX_TMSTMP TIMESTAMP NOT NULL)IN MIXTS12PARTITIONING KEY (MIX_INT) USING HASHINGВ предыдущем примере задано табличное пространство MIXTS12 и определенключ разделения MIX_INT.
Если бы ключ разделения не был задан явно, был быиспользован столбец MIX_CNTL. (Если не задан первичный ключ и не определенключ разделения, ключом разделения будет первый столбец в списке, несодержащий длинных данных.)Строка таблицы и вся информация для этой строки всегда располагаются водном разделе базы данных.||||||||||||||Максимальный размер одного раздела таблицы - 64 Гбайта (или доступныйобъем дискового пространства, если он меньше 64 Гбайт). (Здесьподразумевается, что для табличного пространства используются 4-Кбайтныестраницы.) Размер таблицы может быть равен 64 Гбайтам (или доступномудисковому пространству), умноженным на число разделов базы данных.
Еслиразмер страницы для табличного пространства равен 8 Кбайтам, размертаблицы может быть равен 128 Гбайтам (или доступному дисковомупространству), умноженным на число разделов базы данных. Если размерстраницы для табличного пространства равен 16 Кбайтам, размер таблицыможет быть равен 256 Гбайтам (или доступному дисковому пространству),умноженным на число разделов базы данных. Если размер страницы длятабличного пространства равен 32 Кбайтам, размер таблицы может быть равен512 Гбайтам (или доступному дисковому пространству), умноженным на числоразделов базы данных.Глава 3. Создание базы данных139Создание триггера|||Триггер определяет набор действий, выполняемых вместе с операцией (то естьзапускаемых операцией) INSERT, UPDATE или DELETE для заданной базовойили типизированной таблицы. Например, триггеры можно использовать для:||||vvvv|Нельзя использовать триггеры с псевдонимами.Проверки входных данныхГенерации значения для только что вставленной строкиЧтения из других таблиц для задания перекрестных ссылокЗаписи в другие таблицы для контроля процессаТриггеры можно использовать для поддержки общих требований целостностиили выполнения логических правил.