Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №2. Создание таблиц и предс...doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
301.06 Кб
Скачать

Лабораторная работа №2 Создание таблиц, представлений.

Перед созданием таблиц программисту приходится выполнить ряд действий: спроектировать на бумаге саму базу данных, определить, какие таблицы в ней должны быть, нормализовать их, решить, как они будут называться, и какие столбцы в ней будут. Следует определиться со списком доменов и генераторов. Только после этого можно приступать к физическому созданию базы данных и доменов, после чего можно создавать таблицы, генераторы, индексы и т.д.

CREATE TABLE

Как мы уже знаем из прошлой лекции, создание таблиц осуществляется запросом CREATE TABLE, который можно выполнить с помощью утилиты IBConsole. Полный синтаксис запроса такой:

CREATE TABLE Имя_таблицы [EXTERNAL [FILE] Имя_файла]

(<описание_столбца_1> [, …, <описание_столбца_n>] |

<ограничение_таблицы> …);

Имя_таблицы - уникальный внутри базы данных идентификатор (имя) таблицы. Является обязательным. Нельзя допускать, чтобы такой же идентификатор был у других таблиц, представлений или процедур текущей базы данных.

EXTERNAL [FILE] Имя_файла - необязательное определение того, что создается внешняя по отношению к базе данных таблица. "Имя_файла" при этом указывает адрес и имя файла создаваемой таблицы. Файла с таким именем не должно существовать на момент создания таблицы. В результате применения этого оператора будет создана внешняя по отношению к базе данных таблица, в текстовом формате ASCII. Обычно поля в таких файлах разделяются символом табуляции, а в конце записи ставится символ перевода строки. При этом созданная во внешнем файле таблица будет доступна в списке таблиц базы данных в утилите IBConsole. В основном, такие таблицы могут использоваться для обмена данными между разными БД, для сбора и обработки статистических данных, для сложной сортировки и т.п. Пример создания таблицы во внешнем файле (не забывайте, что служба InterBase должна быть запущена, утилита IBConsole загружена, и база данных First открыта):

CREATE TABLE VneshTable EXTERNAL FILE 'C:\DataBases\VneshFile.tbl'(

ID INTEGER,

NAME VARCHAR(30))

<описание_столбца> - Описание столбца таблицы, которое может иметь как простой, так и достаточно сложный формат. Описание столбца имеет свой синтаксис:

<описание_столбца> = имя_столбца {<тип_данных> | COMPUTED [BY] <выражение> | <домен>}

[DEFAULT {<литерал> | NULL | USER}]

[NOT NULL] [<ограничение_столбца>]

[COLLATE collation]

Давайте по порядку разберемся со всеми этими определениями. Как вы, вероятно, знаете, в синтаксисе различных языков программирования в фигурные скобки принято помещать список возможных параметров, из которого нужно выбрать. То есть, мы должны выбрать либо <тип_данных>, либо COMPUTED [BY], либо заранее созданный домен. О типах данных и их описаниях, равно как и о доменах, мы говорили на прошлой лекции. Теперь рассмотрим создание вычисляемого столбца.

Вычисляемые столбцы

Вычисляемые столбцы в InterBase мало отличаются от вычисляемых столбцов в других базах данных, разве что вычисления производятся не на машине клиента, а на стороне сервера. Предположим, у нас имеется таблица сделок с названием товара, его стоимостью и количеством единиц этого товара, купленных каким то клиентом:

Таблица 17.1. Описание таблицы сделок

ID

Идентификатор сделки (длинное целое)

TOVAR

Наименование товара (текст длиной 20 символов)

ED_IZM

Единица измерения (кг, штука, банка и т.п. - текст длиной 7 символов)

STOIMOST

Стоимость товара (вещественное число)

KOLVO

Количество проданных единиц товара (короткое целое)

В данном случае хорошо бы также иметь сумму сделки, то есть умножить поле STOIMOST на KOLVO. В этом нам поможет вычисляемый столбец. Вот как можно реализовать данную таблицу:

CREATE TABLE Sdelki (

ID INTEGER,

TOVAR VARCHAR(20) CHARACTER SET WIN1251 COLLATE PXW_CYRL,

ED_IZM VARCHAR(7) CHARACTER SET WIN1251,

STOIMOST DOUBLE PRECISION,

KOLVO SMALLINT,

SUMMA COMPUTED BY (STOIMOST * KOLVO))