Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
24 Июль 2025, 03:02:10
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Страниц  :   Вниз
  Печать  
Автор Тема: Re: помогите сделать базу данных авиация (очень нужно) на языке SQL  (Прочитано 1263 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Старый Волк
Гость
« Ответ #0 : 29 Май 2012, 13:38:57 »

Вот скрипт SQL-кода для диалекта InterBase (FireBird 1.5) - на других давно не работал.
Если База данных создана, то в IBExpert скрипт выполняется (проверял).
в предметной области не очень разбираюсь потому поля таблиц добавляйте "по вкусу и цвету"
Можно было бы конечно и получше чего выдумать, но это я чтобы время не очень тратить.
картинку если нужно потом можно нарисовать. Если заинтересовал вариант.
Болльше ничем помочь не могу.

Код:
SET NAMES WIN1251;

CREATE GENERATOR GEN_ENGENE;
CREATE GENERATOR GEN_AP_ID;
CREATE GENERATOR GEN_TYPE;
CREATE GENERATOR GEN_ID1;
CREATE GENERATOR GEN_ID2;

CREATE EXCEPTION EXCEPTION1 'Эту запись удалить нельзя!';


CREATE TABLE TYPE_AP (
    ID         INTEGER NOT NULL,
    NAME_TYPE  VARCHAR(60)
);

ALTER TABLE TYPE_AP ADD CONSTRAINT PK_TYPE_AP PRIMARY KEY (ID);

CREATE TABLE TYPE_ENGINE (
    ID           INTEGER NOT NULL,
    NAME_ENGINE  VARCHAR(30),
    YEAR_P       DATE
);

ALTER TABLE TYPE_ENGINE ADD CONSTRAINT PK_TYPE_ENGINE PRIMARY KEY (ID);

CREATE TABLE AIRPLAN (
    ID         INTEGER NOT NULL,
    TYPE_ID    INTEGER,
    ENGINE_ID  INTEGER,
    YEAR_P     DATE,
    WING_L     INTEGER
);


ALTER TABLE AIRPLAN ADD CONSTRAINT PK_AIRPLAN PRIMARY KEY (ID);
ALTER TABLE AIRPLAN ADD CONSTRAINT FK_AIRPLAN_1 FOREIGN KEY (TYPE_ID) REFERENCES TYPE_AP (ID);
ALTER TABLE AIRPLAN ADD CONSTRAINT FK_AIRPLAN_2 FOREIGN KEY (ENGINE_ID) REFERENCES TYPE_ENGINE (ID);

CREATE TABLE CHARS_AP (
    ID       INTEGER NOT NULL,
    CHAR_F1  INTEGER,
    CHAR_F2  VARCHAR(100),
    CHAR_F3  NUMERIC(15,2),
    TYPE_ID  INTEGER
);

ALTER TABLE CHARS_AP ADD CONSTRAINT PK_CHARS_AP PRIMARY KEY (ID);
ALTER TABLE CHARS_AP ADD CONSTRAINT FK_CHARS_AP_1 FOREIGN KEY (TYPE_ID) REFERENCES TYPE_AP (ID);

CREATE TABLE ENGINE_AP (
    ID         INTEGER NOT NULL,
    CHAR_F1    INTEGER,
    CHAR_F2    VARCHAR(100),
    CHAR_F3    NUMERIC(15,2),
    ENGINE_ID  INTEGER
);

ALTER TABLE ENGINE_AP ADD CONSTRAINT PK_ENGINE_AP PRIMARY KEY (ID);
ALTER TABLE ENGINE_AP ADD CONSTRAINT FK_ENGINE_AP_1 FOREIGN KEY (ENGINE_ID) REFERENCES TYPE_ENGINE (ID);

--Triggers

SET TERM ^ ;

/* Trigger: TYPE_AP_BD */
CREATE OR ALTER TRIGGER TYPE_AP_BD FOR TYPE_AP
ACTIVE BEFORE DELETE POSITION 0
as
begin
  if ((exists (select 1 from airplan where type_id = old.id)) or
      (exists (select 1 from chars_ap where type_id = old.id)))
  then exception exception1;
end
^

/* Trigger: TYPE_AP_BI */
CREATE OR ALTER TRIGGER TYPE_AP_BI FOR TYPE_AP
ACTIVE BEFORE INSERT POSITION 0
as
begin
   if (new.id is null) then new.id = gen_id(gen_id2, 1);
end
^

/* Trigger: TYPE_ENGINE_BD */
CREATE OR ALTER TRIGGER TYPE_ENGINE_BD FOR TYPE_ENGINE
ACTIVE BEFORE DELETE POSITION 0
as
begin
  if ((exists (select 1 from airplan where engine_id = old.id)) or
      (exists (select 1 from engine_ap where engine_id = old.id)))
  then exception exception1;
end
^

/* Trigger: TYPE_ENGINE_BI */
CREATE OR ALTER TRIGGER TYPE_ENGINE_BI FOR TYPE_ENGINE
ACTIVE BEFORE INSERT POSITION 0
as
begin
    if (new.id is null) then new.id = gen_id(gen_engene, 1);
end
^

/* Trigger: AIRPLAN_BI */
CREATE OR ALTER TRIGGER AIRPLAN_BI FOR AIRPLAN
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then new.id = gen_id(gen_ap_id, 1);
end
^

/* Trigger: CHARS_AP_BI */
CREATE OR ALTER TRIGGER CHARS_AP_BI FOR CHARS_AP
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then new.id = gen_id(gen_id1, 1);
end
^

/* Trigger: ENGINE_AP_BI */
CREATE OR ALTER TRIGGER ENGINE_AP_BI FOR ENGINE_AP
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id is null) then new.id = gen_id(gen_engene, 1);
end
^

SET TERM ; ^

Записан
Страниц  :   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2025, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,169 секунд. Запросов: 19.