Если у вас есть опыт работы с базами данных — смело пропускайте эту запись, не читая. Если у вас нет вообще никакого опыта — этот материал вам тоже, скорее всего, не пригодится, так как начинать надо с более простого.
Итак, Firebird. Работать с базой будет удобнее через специально разработанный инструмент. Например, IBExpert.
Там и многооконный режим, и дружественный интерфейс, и визуальный редактор. В Эксперте удобно отлаживать запросы.
Для начала создаются все таблицы. DDL полностью я здесь приводить не буду, в качестве примера приведу только создание двух таблиц: блогов и блогхостингов.
CREATE GENERATOR GEN_BLOG_N;
CREATE TABLE BLOG (
N INTEGER NOT NULL,
N_BLOGHOSTING INTEGER,
LOGIN VARCHAR(25),
PASS VARCHAR(25),
BLOGNAME VARCHAR(255),
TITLE VARCHAR(255),
DSC VARCHAR(500),
URL VARCHAR(255),
EMAIL VARCHAR(50),
CREATE_DATE DATE,
UPDATE_DATE DATE
);
ALTER TABLE BLOG ADD CONSTRAINT PK_BLOG PRIMARY KEY (N);
CREATE GENERATOR GEN_BLOGHOSTING_N;
CREATE TABLE BLOGHOSTING (
N INTEGER NOT NULL,
URL VARCHAR(255),
URL_LOGIN VARCHAR(255),
FORM_LOGIN VARCHAR(25),
FIELD_LOGIN VARCHAR(25),
FIELD_PASS VARCHAR(25),
BUTTON_LOGIN VARCHAR(25),
URL_UNLOGIN VARCHAR(255),
URL_NEW_MESS VARCHAR(255),
FIELD_TITLE VARCHAR(25),
FIELD_MESS VARCHAR(25),
FIELD_TAGS VARCHAR(25)
);
ALTER TABLE BLOGHOSTING ADD CONSTRAINT PK_BLOGHOSTING PRIMARY KEY (N);
Для каждой таблицы создаем ключ и генератор значения ключа (сиквенс). А также триггер BEFORE INSERT, который для каждой новой записи записывает в поле N значение сиквенса.
SET TERM ^ ;
CREATE TRIGGER BLOG_BI FOR BLOG
ACTIVE BEFORE INSERT POSITION 0
AS
begin
if (New.N is null) then
New.N = Gen_Id(gen_blog_n, 1);
end
^
SET TERM ; ^
(Я тут все привела в кодах, но в Эксперте все то же самое можно сделать через интерфейс, не заботясь о правильности синтаксиса.)
Проделав подобные шаги для всех таблиц, получим базу со структурой, напоминающей БД из первой части этой серии постов. После этого можно переходить к запросам.
Комментариев нет:
Отправить комментарий
Комментарии модерируются, вопросы не по теме удаляются, троллинг тоже.
К сожалению, у меня нет столько свободного времени, чтобы отвечать на все частные вопросы, так что, может, свой вопрос лучше задать на каком-нибудь форуме?