Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Шрифт:
Удаление базы данных
Когда база данных больше не нужна, она может быть удалена с сервера. Удаление базы данных удаляет также все файлы, связанные с базой данных - первичные и вторичные файлы, файлы теневой копии, системные журналы - и все их данные.
Командой удаления базы данных является DROP DATABASE; она не имеет параметров. При выполнении команды вы должны быть соединены с базой данных как ее владелец, пользователь SYSDBA или (в Linux/UNIX) как пользователь с привилегиями операционной системы root.
Синтаксис
Если, будучи соединенным с базой данных, вы захотите ее удалить, используйте для этого оператор:
DROP DATABASE;
После удаления база данных не может быть восстановлена,
* будьте уверены, что вы действительно хотите, чтобы она была потеряна навсегда;
* вначале сделайте резервную копию, если есть шанс, что вам может в будущем что-нибудь из нее понадобиться.
Создание базы данных инсталлирует инфраструктуру, необходимую для начала создания объектов. Первичным объектом для постоянного хранения данных в базе данных является таблица. В отличие от электронных таблиц, большинства настольных систем управления данными и даже одного или двух кандидатов на "профессиональную" реляционную СУБД Firebird не сохраняет данные в структурах, которые являются "табличными" в виде упорядоченных строк и столбцов, распознаваемых файловой системой. Firebird управляет собственным дисковым пространством и использует собственные правила для размещения и отображения постоянных данных. Он поддерживает множество способов выделения данных в подобные таблицам наборы. В следующей главе мы начнем с создания постоянного SQL-объекта TABLE.
ГЛАВА 16. Таблицы.
В терминологии SQL-89 и SQL-92 таблицы Firebird являются постоянными базовыми таблицами. Эти стандарты определяют некоторые другие типы, включая просматриваемые таблицы, которые Firebird реализует в виде просмотров (view, см. главу 24), и производные таблицы (derived tables), которые Firebird реализует в виде хранимых процедур выбора (см. главы 28 и 30).
О таблицах Firebird
В отличие от настольных баз данных, таких как Paradox и dBase, база данных Firebird не является серией "табличных файлов", физически организованных в виде строк и столбцов. Firebird хранит данные, независимо от их структуры в сжатом формате на страницах базы данных. Он может хранить одну или более записей - или, более правильно, строк- данных таблицы на одной странице. В случаях, когда данные одной строки слишком велики, чтобы разместиться на одной странице, строка может размещаться на нескольких страницах.
Хотя страница, которая хранит данные таблицы, всегда будет содержать данные, принадлежащие одной таблице, страницы не хранятся рядом. Данные таблицы могут быть разбросаны по всему диску, а в случае многофайловых баз данных они могут быть распределены между разными каталогами и дисками. Данные BLOB хранятся отдельно от строк, которые ими владеют, в страницах базы данных другого типа.
Структурные описания
Метаданные- физические описания таблиц, их столбцов и атрибутов, так же как и описания всех других объектов - сами хранятся в обычных таблицах Firebird внутри базы данных. Сервер Firebird изменяет данные в этих таблицах, когда объекты базы данных создаются, изменяются или удаляются. Он постоянно к ним обращается при выполнении операций над строками. Такие таблицы называются системными таблицами. Более подробную информацию см. в разд. "Системные таблицы" в самом начале главы 14. Схемы системных таблиц см. в приложении 9.
Создание таблиц
Предполагается, что, достигнув той точки, когда вы готовы создавать таблицы, вы уже выполнили анализ данных и подготовили модель, а также вы имеете совершенно четкое представление о структурах ваших главных таблиц и их взаимоотношениях. Для подготовки к созданию таких таблиц вам нужно выполнить следующие шаги:
* вы должны создать базу данных для их размещения - инструкции см. в главе 15;
* вы должны соединиться с базой данных;
* если вы планируете использовать домены для определения типов данных
Владение таблицами и привилегии
Когда создается таблица, Firebird автоматически применяет к ним безопасность схемы по умолчанию. Человеку, который создает таблицу (ее владелец), назначаются к ней все привилегии SQL, включая право передавать привилегии другим пользователям, триггерам и хранимым процедурам. Ни один другой пользователь, за исключением SYSDBA, не будет иметь никакого доступа к этой таблице, пока явно не получит привилегии.
! ! !
ВНИМАНИЕ! Эта защита будет столь же хороша (или плоха), сколь и защита доступа к вашему серверу. Любой, кто может соединиться с вашим сервером, сможет создать базу данных. Любой, кто может соединиться с вашей базой данных, сможет создавать в ней таблицы. Firebird 1.5 несколько улучшает эту печальную ситуацию, позволяя вам ограничивать размещения, где могут создаваться базы данных. См. параметр DatabaseAccess в файле firebird.conf.
. ! .
Информацию о привилегиях SQL см. в главе 35.
Оператор CREATE TABLE
В DDL для создания таблиц используется оператор CREATE TABLE. Его синтаксис:
CREATE TABLE таблица
[EXTERNAL [FILE] 'спецификация-файла']
(<определение-столбца>
[, <определение столбца>
| <ограничение-таблицы> ...]);
Самый первый основной аргумент в CREATE TABLE- идентификатор таблицы [41] . Он является обязательным и должен быть уникальным среди всех имен таблиц, просмотров и процедур базы данных, иначе вы не сможете создать таблицу. Вы также должны предоставить определение, по крайней мере, одного столбца.
41
Если вы кодируете CREATE TABLE в приложении встроенного SQL (Embedded SQL) с намерением также в этом приложении заполнять данными эту таблицу, то таблица вначале должна быть объявлена в предшествующем операторе DECLARE TABLE.
Когда вы создаете таблицу в базе данных, ваша основная задача - определить различные атрибуты и ограничения для каждого столбца в этой таблице.
Синтаксис определения столбца:
<определение-столбца> = столбец
{тип-данных | COMPUTED [BY] (<выражение>) | домен}
[DEFAULT {литерал | NULL | USER} ]
[NOT NULL] [<ограничение-столбца>]
[COLLATE порядок-сортировки]
В следующем разделе описываются требуемые и необязательные атрибуты, которые вы можете определить для столбца.
Приведем требуемые атрибуты.
* Идентификатор столбца (имя), уникальный среди столбцов этой таблицы.
* Одно из следующих:
• тип данных SQL;
• выражение для вычисляемого столбца;
• имя домена для столбцов, основанных на доменах. Столбцы разделяются запятыми, например:
CREATE TABLE PERSON (
PERSON_ID BIGINT NOT NULL,
FIRST_NAME VARCHAR (35),
LAST_NAMES VARCHAR (80),
FULL_NAME COMPUTED BY FIRST_NAME ||' '|| LAST_NAMES,
PHONE_NUMBER TEL_NUMBER) ;
Столбец FULL_NAME является вычисляемым столбцом, который вычисляется конкатенацией двух других описанных столбцов: FIRST_NAME и LAST_NAME. Мы вернемся к вычисляемым столбцам несколько позже. Ограничение NOT NULL применяется к PERSON ID, потому что мы хотим сделать его первичным ключом (детали рассмотрим позже).
Неудержимый. Книга VIII
8. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Законы Рода. Том 6
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
рейтинг книги
Восход. Солнцев. Книга I
1. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Попаданка
Любовные романы:
любовно-фантастические романы
рейтинг книги
Возлюби болезнь свою
Научно-образовательная:
психология
рейтинг книги
