Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с удаленными базами данных на примере InterBase 
:(
    Опции темы
Pakshin A. S.
Дата 14.11.2004, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Работа с удаленными базами данных на примере InterBase

Создание базы данных
В отличие от локальной БД, являющейся скорее логическим понятием, поскольку её таблицы находятся в разных файлах и, возможно, в разных каталогах, удаленная БД представляет собой физический объект.

Создать и удалить БД можно, подготовив и выполнив соответствующие запросы. 
Оператора SQL создание БД имеет следующий формат:
Код

CREATE DATABASE “<имя файла БД”
[USER “Имя пользователя” [PASSWORD “Пароль пользователя”]]
[PAGE_SIZE [=] <Целое число>]
[LENGTH [=] <Целое число> [PAGE[S]]]
[DEFAULT CHARACTER SET <Набор символов>]
[<Вторичный файл>];

Код

<Вторичный файл> = FILE “<Имя файла БД>” [<Файловая информация>]
[<Вторичный файл>]

Код

<Файловая информация> = LENGTH [=] <Целое число> [PAGE[S]] | STARTING [AT [PAGE]] <Целое число>
[<Файловая информация]

имя файла БД указывает спецификацию (имя и путь) физического файла, в котором будет храниться информация создаваемой БД. Имя файла является обязательным единственным параметром, который должен быть задан для новой БД. Остальные параметры являются факультативными.
Если данные хранятся более, чем в одном физическом файле, то говорят о многофайловой БД. Такая структура может быть использована при большом объеме данных, когда файл базы достигает значительных размеров. При этом первый файл называется – первичным, а последующие – вторичными. Вторичные файлы можно размещать в других каталогах и на других дисках сервера. Размеры файлов (их длины) измеряются в страницах.
Для файлов БД задаются следующие параметры:
PAGE_SIZE – размер страницы в байтах. Допустимые значения: 1024, 2048,4096, 8192
LENGTH – длина файла в страницах.
STARTING – страница, начиная с которой располагается файл.

Пример:
Код

CREATE DATABASE “D:\personnel.gdb”;
/*создается однофайловая БД*/

Код

CREATE DATABASE “D:\Store\Store.gdb”
FILE “D:\Store\Store.gd2” STARTING AT PAGE 501 LENGTH = 300
FILE “D:\Store\Store.gd3”;
/*Создается многофайловая БД из трех файлов с одинаковыми именами Store*/
/*Длина первичного файла составляет 500 страниц и задается косвенным путем – через указание номера начальной страницы вторичного файла, равного 501. Длина первого вторичного файла равна 300 страниц, а длина второго вторичного файла не ограничена*/

Другие примеры:
Код

CREATE DATABASE “D:\Test.gdb”
USER “User1” PASSWORD “Secret”;

Код

CREATE DATABASE “D:\text.gdb”
DEFAULT CHARACTER SET WIN1251;

Последний запрос определяем набор, используемый для кодировки символов. Для нашей страны рекомендуется использовать набор WIN1251.

Удалить текущую открытую БД можно через оператор:
Код

DROP DATABASE;


Добавление, редактирование и удаление новой таблицы
Создание таблицы заключается в задании имени и структуры таблицы  и выполняется с помощью оператора CREATE TABLE:
Код

CREATE TABLE <Имя таблицы> [EXTERNAL [FILE] “<Имя файла>”]
(<Имя столбца> <Описание столбца> [<Ограничение столбца>],

[<Ограничение таблицы>,]
[<Описание ключа>,]
[<Описание индекса>]);

По умолчанию таблица добавляется к текущей БД. Если таблицу нужно разместить не в файле БД, а в другом файле, то его имя указывается в операнде EXTERNAL.
Удаляют таблицу через оператор:
Код

DROP TABLE <Имя таблицы>;

Изменение таблицы выполняется оператором ALTER TABLE, не отличающимся ничем от стандартного оператора ALTER TABLE  для всех баз данных.

Описание столбца
Код

<Описание столбца> = {<Имя столбца> | COMPUTER [BY] (<Выражение>) | <Домен>}

Итак, имеет три вида столбца:
1) Обычный столбец с типом данных, например, INTEGER
2) Вычисляемый столбец
3) Столбец на основе домена
Домен представляет собой предварительное описание столбца, которое затем можно использовать для описания столбцов. Создание домена будет рассмотрено далее.
Пример:
Код

CREATE TABLE List
(Name VARCHAR(20),
Price Float,
Number INTEGER,
PriceAll COMPUTED BY (Price * Number));

Здесь приведен пример создания столбца PriceAll, значение которого вычисляется автоматически по формуле Price * Number, где Price и Number – столбцы таблицы.

Ограничение столбца
Код

[DEFAULT {<Значение> | NULL | USER}]
[NOT NULL]
[COLLATE <Порядок сортировки>]
[CHECK <Условия>]

Операнд DEFAULT отвечает за значении по умолчанию.
Операнд NOT NULL указывает, что столбец не может быть пустым.
Про программировании операторов нельзя допускать взаимоисключающие конструкции, например DEFAULT NULL и NOT NULL.
Операнд Cehck позволяет установить для столбца разнообразные условия, управляющие его значениями.
Код

CEHCK
{<Выражение> <Операция сравнения> {<Выражение> | (<отбор1>)}
| <Выражение> [NOT] BETWEEN <Мин значение> AND <Макс значение>
| <Выражение> [NOT] LIKE <Выражение1> [ESCAPE <Выражение2>]
| <Выражение> [NOT] IN (<Выражение1>,…,<ВыражениеN> | (<ОтборМ>))
| <Выражение> IS [NOT] NULL
| <Выражение> [NOT] {<Операция сравнения> | ALL | SOME | ANY} (<ОтборМ>)
| EXISTS (<ОтборМ>)
| SINGULAR (<ОтборМ>)
| <Выражение> [NOT] CONTAINING <Выражение1>
| <Выражение> [NOT] STARTING [WITH] <Выражение1>}

Вообще-то всё понятно и без комментариев, поэтому приведем просто примеры:
Код

CREATE TABLE Test1
(Name VARCHAR(20) NOT NULL,
Price FLOAT CHECK (Price > 0),
Number INTEGER CHECK (Number BETWEEN 1 AND 1000));

Код

CREATE TABLE Test2
(Name VARCHAR(20),
Position VARCHAR(20) CHECK (Position IN (“Директор”, “Менеджер”, “Бухгалтер”),
Attrib VARCHAR(20) CHECK (Attrib IN (SELECT Attrib FROM Attribs)));

Код

CREATE TABLE Test3
(Name VARCHAR(20),
OrderDate DATE,
PerformDate DATE,
CHECK (PerformDate >= OrderDate));


Описание ключей
Код

PRIMARY KEY (<Список столбцов ключа>)

Пример:
Код

CREATE TABLE Personnel2
(Code INTEGER NOT NULL,
Name VARCHAR(30),
PRIMARY KEY (Code));

Так же есть несколько другой способ задания ключа:
Код

CREATE TABLE Personnel2
(Code INTEGER NOT NULL PRIMARY KEY,
Name VARCHAR(30));

Таблица может иметь только один первичный ключ, однако кроме него можно определить ещё несколько уникальных ключей:
Код

CREATE TABLE Position
(Code INTEGER NOT NULL,
Position VARCHAR(20) NOT NULL,
PRIMARY KEY (Code),
UNIQUE (Position));


Определение ограничений ссылочной целостности
Действие ограничений ссылочной целостности заключается в следующем: если для записи главной таблицы имеются записи в подчиненной таблице (таблицах), то эту запись нельзя удалить, а также изменить значения столбцов, образующих ключ.
Код

[CONSTRAINT <Имя ограничения>]
FOREIGN KEY (<Список столбцов ключа>)
REFERENCES <Имя главной таблицы> [<Список столбцов ключа главной таблицы>]

Приведем сразу же пример:
Код

CREATE TABLE Store
(S_Code INTEGER NOT NULL PRIMARY KEY,
S_Name VARCHAR(20) NOT NULL,
S_Price FLOAT,
S_Number FLOAT);

CREATE TABLE Cards
(C_Code INTEGER NOT NULL PRIMARY KEY,
C_Code2 INTEGER NOT NULL,
C_Move VARCHAR(20) NOT NULL,
C_Date DATE,
CONSTRAINT rStoreCards
FOREIGN KEY(C_Code2) REFERENCES Store);

Удалить ограничение ссылочной целостности можно следующим образом:
Код

ALTER TABLE <Имя таблицы>
DROP <Имя ограничения ссылочной целостности>;


Использование индексов
Код

CREATE [UNIQUE] [ASCENDING] [DESCENDING] INDEX
<Имя индекса> ON <Имя таблицы> (<Имя столбца>, …, [<Имя столбца>]);

UNIQUE – индекс требует уникальности значений столбца, по которому он построен
ASCENDING – индексные столбцы сортируются в порядке возрастания значений
DESCENDING – индексные столбцы сортируются в порядке убывания значений
Пример:
Код

CREATE DESCENDING INDEX
indNamePosition ON Personnel (Name, Position);

Описание индекса indNamePosition таблицы Personnel имеет следующий вид:
Код

INDNAMEPOSITION INDEX ON PERSONNEL (NAME, POSITION)

В свою очередь, строки
Код

RDB$FOREIGN4 INDEX ON CARDS (C_CODE)
RDB$PRIMARY3 UNIQUE INDEX ON STORE (S_CODE)

описывают индексы для связанных таблиц, построенные на основании первичного ключа таблицы STORE и внешнего ключа таблицы CARDS. По умолчанию индексы получили имена RDB$FOREIGN4 и RDB$PRIMARY3, соответственно.
Код

SHOW INDEX [<Имя таблицы>];

Этот оператор выводит для таблицы описание всех индексов.
Деактивация индекса происходит следующим образом:
Код

ALTER INDEX <Имя индекса> INACTIVE;

Активация:
Код

ALTER INDEX <Имя индекса> ACTIVE;


Использование доменов
Домен представляет собой  именованное описание столбца. После определения домена его можно использовать при описании других столбцов. 
Код

CREATE DOMAIN <Имя домена>
[AS] <Описание домена>

Потом в операторе CREATE TABLE:
Код

<Имя столбца> <Имя домена>

Пример:
Код

CREATE DOMAIN D_Position
AS VARCHAR(20) NOT NULL;

CREATE TABLE Position
(Code INTEGER NOT NULL PRIMARY KEY,
Position D_Position,
Note VARCHAR(50));


Использование просмотров
Просмотр является логической таблицей, записи в которую отобраны с помощью оператора SELECT. Преимущество – можно один раз отобрать записи и использовать их в дальнейшем без повторного выполнения оператора SELECT.
Код

CREATE VIEW <Имя просмотра> [<Список столбцов>]
AS <Оператор SELECT> [WITH CHECK OPTION];

Пример:
Код

CREATE VIEW vStore AS
SELECT S_Name, C_Number 
FROM Store
WHERE S_Number >= 0.5;

SELECT * FROM vStore;

Удалить просмотр можно при помощи оператора:
Код

DROP VIEW <Имя просмотра>;

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0692 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.