- •Лабораторная работа №6 Разработка таблиц удаленной базы данных с использованием клиент-серверной технологии Цель работы
- •Порядок выполнения работы
- •1.1. Субд Firebird
- •1.1.1. Установка Firebird
- •1.1.2. Связь с сервером и соединение с базой данных
- •1.1.3. Создание базы данных
- •1.1.4. Страницы базы данных
- •1.1.5. Размер страницы базы данных
- •1.1.6. Диалект базы данных
- •1.1.7. Технические характеристики субд Firebird
- •1.1.8. Типы данных в субд Firebird
- •1.2. Создание Доменов
- •1.3. Создание таблиц
- •1.3.1. Ограничения в таблицах
- •1.3.1.1. Синтаксис объявления первичного ключа
- •1.3.1.2. Ссылочная целостность данных
- •1.3.1.3. Синтаксис объявления вторичного ключа
- •1.3.2. Действия триггеров по изменению правил целостности
- •1.3.2.1. Автоматические действия триггеров
- •1.4. Создание индексов
- •1.5. Генераторы
- •1.6. Триггеры
- •1.6.1. Реализация автоинкрементных полей
- •1. Программирование на стороне сервера sql 3
1.3. Создание таблиц
Для создания таблицы применяется команда CREATE TABLE, синтаксис которой определен ниже:
CREATE TABLE Table [EXTERNAL [FILE] 'filespec']
(<col_def> [, <col_def> | <tconstraint>… ]);
В параметре Table указывается имя создаваемой таблицы. В параметре EXTERNAL [FILE] указывается файл, содержащий внешнюю таблицу с данными.
Параметр <col_def> предназначен для описания поля таблицы. Синтаксис описания поля приведен ниже:
<col_def> = col {datatype | COMPUTED [BY] (< ехрr>) | domain}
[DEFAULT { literal | NULL | USER}]
[NOT NULL] [ <col_constraint>]
[COLLATE collation]
< col constraint = [CONSTRAINT constraint] <constraint def>
[ <col_constraint>...]
<constraint_def> = {UNIQUE | PRIMARY KEY |
CHECK ( <search _condition>) |
REFERENCES other _table [( other_col [, other_col ...])]
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
Описание поля практически не отличается от описания домена. Поле может описываться самостоятельно на базе домена или являться вычисляемым. Простая таблица базы данных задается небольшим SQL-запросом:
CREATE TABLE MYTABLE (
MyFieldl CHAR(6),
MyField2 CHAR(50) CHARACTER SET WIN1251,
MyField3 INTEGER);
Для определения вычисляемого поля следует использовать другой синтаксис:
<co1_name> computed [by] (<expr>)
В параметре (<ехрr>) могут быть указаны любое арифметическое выражение или строковая операция. В следующем примере показано, как задается вычисляемое поле:
CREATE TABLE EMPLOYEE
(FIRST_NAME VARCHAR(10) NOT NULL,
LAST_NAME VARCHAR(50) NOT NULL,
FULL_NAME COMPUTED BY (LAST_NAME || ' . ' || FIRST_NAME));
Поле FULL_NAME является вычисляемым. В нем будет храниться результат объединения двух строк из предыдущих полей. Если тип возвращаемого выражением значения не указан, Firebird самостоятельно определяет его тип в процессе вычислений.
1.3.1. Ограничения в таблицах
Сервер Firebird позволяет задавать ограничения, накладываемые на поля. Эти ограничения могут создать отношения ссылочной целостности между таблицами и контроль целостность данных. Ограничения могут быть наложены как на всю таблицу целиком, так и на отдельное ее поле. Они производят отслеживание всех операций с данными.
СУБД Firebird предоставляет два вида ограничений:
Ограничение целостности на уровне столбца за счет первичного ключа PRIMARY KEY;
Ссылочное ограничение за счет использования вторичного ключа FOREIGN KEY.
Ограничение PRIMARY KEY – это столбец или группа столбцов, который является уникальным идентификатором для каждой строки (записи) в таблице. Таблица может иметь только один первичный ключ.
Кандидат в первичные ключи, который может быть одним столбцом или группа столбцов, имеет два обязательных требования.
Атрибут NOT NULL должен быть объявлен для всех столбцов в группе из одного или более столбцов. Целостность ключа может быть осуществлена только сравнением значений, а NULL не является значением.
Столбец или группа столбцов должны быть уникальными - т. е. не может в таблице появиться более одной строки с теми же значениями. Например, номер водительских прав или социального обеспечения могут рассматриваться как кандидаты, потому что они генерируются системами, которые не допускают дубликатов номеров.
