Гость
Форумы / Informix [игнор отключен] [закрыт для гостей] / база данных в informix(операторы update, delete и триггер) / 10 сообщений из 10, страница 1 из 1
30.11.2010, 22:31
    #36987452
PavelSSS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база данных в informix(операторы update, delete и триггер)
Здравствуйте уважаемые форумчане!...

Очень прошу помочь с базой данных в информиксе, а конкретно - написать пару операторов и триггер.
(база выполняется в gentoo linux)
Условие:
"Разработайте БД, которая решает задачу автоматизированого обслуживания депозитных операций банка.
С помощью языка DDL спроэктируйте схему базы данных, достаточной для решения следующих задач языками DML и SPL:
1. Наполнение БД данными про юридические особы, которые размещают деньги на депозитных счетах банка.
2. Получите информацию про отделения банка, в котором проведена операция по открытию найбольшего депозитного счета в банке.
3. Объедените информацию, что касается открытия депозитных счетов с двух выбранных отделений банка и закрепите данную информацию за указанным третьим отделением.
4. Уничтожте информацию про клиентов, которые не пользовались услугами открытия депозитных счетов банка на протяжении последних пяти лет и имеют лишь закрытые депозитные счета, что открывались только в одном отделении банка.
5. Сделайте тригер, который проводит контроль невозможности открытия депозитных счетов клиентов в каждом отдельном отделении банка, кроме главного, за один день, на общую сумму, что не привышает 500000 д.о."

Первые два пункта я сделал, но не получается 3,4 пункты и 5(с триггером).
Значит вот структура моей базы данных:
1таблица:"OSOBA" столбцы: *ID, NAME
2таблица:"RAHUNOK" столбцы: *ID,*OSOBA_ID, *OTDEL_ID, SUMA, TERM(срок), ZAKRYT(логическое - типа закрыт счет или открыт)
3таблица:"OTDEL" столбцы: *ID, NOMER_OTDELA, GLAVNY(тоже логическое - типа главный отдел или нет)

Далее представляю первый пункт - сама база:
CREATE TABLE OSOBA (
ID SERIAL NOT NULL PRIMARY KEY,
NAME VARCHAR(30) NOT NULL,
);

CREATE TABLE RAHUNOK (
ID SERIAL NOT NULL,
OSOBA_ID INTEGER NOT NULL,
OTDEL_ID INTEGER NOT NULL,
SUMA MONEY NOT NULL,
TERM DATE NOT NULL,
ZAKR INTEGER DEFAULT 1 NOT NULL CHECK (ZAKR IN(0,1)),
PRIMARY KEY (ID, OSOBA_ID, OTDEL_ID)
);


CREATE TABLE OTDEL (
ID SERIAL NOT NULL PRIMARY KEY,
NOMER_OTDELA INTEGER NOT NULL,
GLAVN INTEGER default 1 NOT NULL CHECK (GLAVN IN(0,1))
);


далее заполнение таблиц:
INSERT INTO OSOBA VALUES (0,"P1")
INSERT INTO OSOBA VALUES (0,"P2")
INSERT INTO OSOBA VALUES (0,"P3")
INSERT INTO OSOBA VALUES (0,"P4")
INSERT INTO OSOBA VALUES (0,"P5")
INSERT INTO OSOBA VALUES (0,"P6")
INSERT INTO OSOBA VALUES (0,"P7")
INSERT INTO OSOBA VALUES (0,"P8")
INSERT INTO OSOBA VALUES (0,"P9")
INSERT INTO OSOBA VALUES (0,"P10")

INSERT INTO RAHUNOK VALUES (0,1, 1, 200, "01.10.04", 1)
INSERT INTO RAHUNOK VALUES (0,2, 2, 1000, "01.10.05", 0)
INSERT INTO RAHUNOK VALUES (0,3, 3, 50000, "01.10.07", 1)
INSERT INTO RAHUNOK VALUES (0,4, 4, 3000, "01.10.03", 0)
INSERT INTO RAHUNOK VALUES (0,5, 5, 10000, "01.10.06", 1)
INSERT INTO RAHUNOK VALUES (0,6, 3, 2500, "01.10.08", 0)
INSERT INTO RAHUNOK VALUES (0,7, 1, 3600, "01.10.10", 0)
INSERT INTO RAHUNOK VALUES (0,8, 4, 12000, "01.10.06", 1)
INSERT INTO RAHUNOK VALUES (0,9, 5, 88000, "01.10.02", 0)
INSERT INTO RAHUNOK VALUES (0,10, 1, 70000, "01.10.03", 0)

INSERT INTO OTDEL VALUES (0,1, 1)
INSERT INTO OTDEL VALUES (0,2, 0)
INSERT INTO OTDEL VALUES (0,3, 0)
INSERT INTO OTDEL VALUES (0,4, 0)
INSERT INTO OTDEL VALUES (0,5, 0)

Далее привожу запрос по второму пункту:
SELECT OTDEL.NOMER_OTDELA
FROM OTDEL, RAHUNOK
WHERE OTDEL.ID=RAHUNOK.OTDEL_ID
GROUP BY OTDEL.NOMER_OTDELA
HAVING MAX(RAHUNOK.SUMA)>1

Пожалуйста, помогите с написанием 3 пункта - там нужен оператор update, что б типа информация с одного отдела заменялась на информацию по другому, совершенно не представляю как это реализовать.

С 4 пунктом - надо сделать либо вложеный запрос с оператором DELETE либо временную таблицу, либо что-то еще, вообщем помогите.

В 5 пункте надо сделать триггер, в котором я вообще практически "0".
Очень надеюсь на вашу помощь, мне надо скоро это сдавать, на вас вся надежда. Если что, спрашивайте.
...
Рейтинг: 0 / 0
30.11.2010, 22:56
    #36987479
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база данных в informix(операторы update, delete и триггер)
Неужели Informix стали преподавать в ВУЗах!?!?!
...
Рейтинг: 0 / 0
30.11.2010, 23:16
    #36987494
PavelSSS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база данных в informix(операторы update, delete и триггер)
да(((((
...
Рейтинг: 0 / 0
30.11.2010, 23:25
    #36987500
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база данных в informix(операторы update, delete и триггер)
А в каком?
...
Рейтинг: 0 / 0
30.11.2010, 23:27
    #36987504
PavelSSS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база данных в informix(операторы update, delete и триггер)
в экономическом))))
...
Рейтинг: 0 / 0
30.11.2010, 23:28
    #36987506
PavelSSS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база данных в informix(операторы update, delete и триггер)
КНЕУ(Киев)
...
Рейтинг: 0 / 0
01.12.2010, 21:03
    #36990045
PavelSSS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база данных в informix(операторы update, delete и триггер)
Народ, хотя б с триггером помогите.......
...
Рейтинг: 0 / 0
01.12.2010, 23:11
    #36990173
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база данных в informix(операторы update, delete и триггер)
PavelSSSЗдравствуйте уважаемые форумчане!...

Очень прошу помочь с базой данных в информиксе, а конкретно - написать пару операторов и триггер.
(база выполняется в gentoo linux)
Условие:
"Разработайте БД, которая решает задачу автоматизированого обслуживания депозитных операций банка.
С помощью языка DDL спроэктируйте схему базы данных, достаточной для решения следующих задач языками DML и SPL:
1. Наполнение БД данными про юридические особы, которые размещают деньги на депозитных счетах банка.
2. Получите информацию про отделения банка, в котором проведена операция по открытию найбольшего депозитного счета в банке.


Далее привожу запрос по второму пункту:
SELECT OTDEL.NOMER_OTDELA
FROM OTDEL, RAHUNOK
WHERE OTDEL.ID=RAHUNOK.OTDEL_ID
GROUP BY OTDEL.NOMER_OTDELA
HAVING MAX(RAHUNOK.SUMA)>1


Неправильно.
select OTDEL.NOMER_OTDELA
FROM OTDEL, RAHUNOK
WHERE OTDEL.ID=RAHUNOK.OTDEL_ID
AND RAHUNOK.SUMA IN (select max(SUMA ) from rahunok)
(select otdel_id from
...
Рейтинг: 0 / 0
01.12.2010, 23:27
    #36990187
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база данных в informix(операторы update, delete и триггер)
PavelSSSНарод, хотя б с триггером помогите.......

create trigger tr_RAHUNOK insert on RAHUNOK
referencing new as new_tab
for each row
(
execute procedure check_rahunok (new_tab.OSOBA_ID, new_tab.OTDEL_ID,
new_tab.SUMA, new_tab.TERM)
);

create procedure check_rahunok (p_OSOBA_ID int, p_OTDEL_ID int, p_suma money, p_term date);

define l_glavn INT;

LET l_glavn = SELECT glavn from otdel where id = p_otdel_id;

if ( (l_glavn = 0)
and ((p_suma +
(select sum(suma) from rahunok where osoba_id = p_osoba_id and term = p_term)) > 500000 )) THEN

raise exception-746,0,"Duzhe bagato groshiv ! ";
end if

end procedure;
...
Рейтинг: 0 / 0
02.12.2010, 11:54
    #36990831
svat2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
база данных в informix(операторы update, delete и триггер)
Выбегалло,

:)
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / база данных в informix(операторы update, delete и триггер) / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]