Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kursovoy_proekt_BD.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.21 Mб
Скачать

2.3.2 Тексты sql-скриптов для создания объектов бд

Для создания базы данных использовался язык описания данных SQL. Тексты SQL-скриптов, для создания базы данных:

Создаем домены

CREATE DOMAIN "KOD" AS INTEGER

check (value>0) NOT NULL;

CREATE DOMAIN "STOIM" AS FLOAT

check (value>0) NOT NULL;

CREATE DOMAIN "STR" AS CHAR(30) CHARACTER SET WIN1251 NOT NULL;

Создаем таблицу «Клиент физическое лицо»

CREATE TABLE "KLFIZ"

(

"KOD" "KOD",

"FAM" "STR",

"NAME" "STR",

"OTCH" "STR",

"N_TELEFON" INTEGER,

"ADR" "STR",

PRIMARY KEY ("KOD")

);

Создаем таблицу « Клиент юридическое лицо »

CREATE TABLE "KLUR"

(

"KOD" "KOD",

"NAZVANIYE" "STR",

"FORMA_SOBSTVENTI" "STR",

"FAM_DIR" "STR",

"NAME_DIR" "STR",

"OTCH_DIR" "STR",

"ADR" "STR",

"NAME_BANK" "STR",

"ADR_BANK" "STR",

"KOR_CHET" "STR",

"NRACH_CHET" "STR",

"BIK" "STR",

"INN_KPP" "STR",

PRIMARY KEY ("KOD")

);

Создаем таблицу «Предприятие-провайдер»

CREATE TABLE "PRED_PROVAIDER"

(

"KOD" "KOD",

"NAZVANIE" "STR",

"ADR" "STR",

"N_TELEFON" "STR",

PRIMARY KEY ("KOD")

);

Создаем таблицу «Прейскурант»

CREATE TABLE "PRESKUR"

(

"KOD_PROV" "KOD",

"DAT" DATE NOT NULL,

"STOIM" "STOIM",

"LGSTOIM_20_2" "STOIM",

"LGSTOIM_2_6" "STOIM",

PRIMARY KEY ("KOD_PROV", "DAT")

);

ALTER TABLE "PRESKUR" ADD FOREIGN KEY ("KOD_PROV") REFERENCES PRED_PROVAIDER ("KOD") ON UPDATE CASCADE;

Создаем таблицу «Сеанс»

CREATE TABLE "SEANC"

(

"KOD" "KOD",

"MAC_ADR" "STR",

"IP_ADR" "STR",

"VR_NACH" "STR",

"VR_KON" "STR",

"STOIM" "STOIM",

"KOD_KLF" INTEGER,

"KOD_KLU" INTEGER,

"KOD_PP" "KOD",

"DATA_KON" DATE,

"DATA" DATE,

PRIMARY KEY ("KOD")

);

ALTER TABLE "SEANC" ADD FOREIGN KEY ("KOD_KLF") REFERENCES KLFIZ ("KOD");

ALTER TABLE "SEANC" ADD FOREIGN KEY ("KOD_KLU") REFERENCES KLUR ("KOD");

ALTER TABLE "SEANC" ADD FOREIGN KEY ("KOD_PP") REFERENCES PRED_PROVAIDER ("KOD") ON UPDATE CASCADE;

Создаем генераторы для таблиц

CREATE GENERATOR "GEN_KLFIZ";

CREATE GENERATOR "GEN_KLUR";

CREATE GENERATOR "PRED_PROVAIDER";

CREATE GENERATOR "PRESKUR";

CREATE GENERATOR "SEANC";

Триггер для таблицы «Клиент физическое лицо»– генерация ключа

SET TERM ^ ;

CREATE TRIGGER "KLFIZ_INS" FOR "KLFIZ"

ACTIVE BEFORE INSERT POSITION 0

as

begin

new.KOD=GEN_ID(GEN_KLFIZ,1);

end

^ COMMIT WORK ^

SET TERM ;^

Триггер для таблицы «Клиент юридическое лицо»– генерация ключа

SET TERM ^ ;

CREATE TRIGGER "KLUR_INS" FOR "KLUR"

ACTIVE BEFORE INSERT POSITION 0

as

begin

new.KOD=GEN_ID(gen_KLUR,1);

end

^

COMMIT WORK ^

SET TERM ;^

Триггер для таблицы «Предприятие-провайдер»– генерация ключа

SET TERM ^ ;

CREATE TRIGGER "PRED_PROVAIDER_INS" FOR "PRED_PROVAIDER"

ACTIVE BEFORE INSERT POSITION 0

as

begin

new.KOD=GEN_ID(PRED_PROVAIDER,1);

end

^

COMMIT WORK ^

SET TERM ;^

Триггер для таблицы «Сеанс»– генерация ключа

SET TERM ^ ;

CREATE TRIGGER "SEANC_INS" FOR "SEANC"

ACTIVE BEFORE INSERT POSITION 0

as

begin

new.KOD=GEN_ID(SEANCE,1);

end

^

COMMIT WORK ^

SET TERM ;^

Триггер для таблицы «Клиент физическое лицо»– обновление

SET TERM ^ ;

CREATE TRIGGER "KLFIZ_UP" FOR "KLFIZ"

ACTIVE BEFORE UPDATE POSITION 0

as

begin

update SEANCE

set KOD_KLF=new.KOD

where KOD_KLF=old.KOD;

end

^

COMMIT WORK ^

SET TERM ;^

Триггер для таблицы «Клиент юридическое лицо»– обновление

SET TERM ^ ;

CREATE TRIGGER "KLUR_UP" FOR "KLUR"

ACTIVE BEFORE UPDATE POSITION 0

as

begin

update SEANCE

set KOD_KLU=new.KOD

where KOD_KLU=old.KOD;

end

^

COMMIT WORK ^

SET TERM ;^

Запросы.

Запрос 1.

Определить количество клиентов за заданный месяц.

select count(*) as "kolvo"

from "SEANC"

where "DATA" between :dat1 and :dat2 and "KOD_PP"=:kpp

Запрос 2.

Дата, на которое пришлось максимальное количество клиентов.

select "DATA"

from "SEANC"

where "KOD_PP"=:kpp

GROUP BY "DATA"

having count(*)>=all

(select count(*)

from "SEANC"

where "KOD_PP"=:kpp

group by "DATA")

Запрос 3.

Сведения о сеансах связи заданного клиента.

select KF."FAM", KF."NAME",KF."OTCH",S."STOIM",S."DATА"

from "SEANC" S,"KLFIZ" KF

WHERE S."KOD_KLF"=KF."KOD"  AND KF."FAM"='Golenkovskaya'

select KU."NAZVANIYE",S."STOIM",S."DATА"

from "SEANC" S,"KLUR" KU

WHERE S."KOD_KLU"=KU."KOD" AND KU."NAZVANIYE"='Fenix'

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]