Корпоративные базы данных - статьи

       

Генерация приложений и схем баз данных



Спецификации схемы (или подсхемы) можно перенести через соответствующий мост в среду разработки
приложений или сгенерировать схему базы данных для СУБД.

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

Генерация схемы базы данных происходит путем создания файла с SQL-операторами, в которые
переводятся конструкции модели данных. Этот файл используется для физического создания базы данных
на сервере. На рис. 6 приведен фрагмент схемы для СУБД Informix OnLine, полученной из модели,
изображенной на рис. 4.



--
================================================
===
-- table: Order
--
================================================
===
create table Order
(
OrderNum INTEGER not null,
OrderDate DATE default TODAY not null,
OrderCost MONEY not null,
CustomerName CHAR not null,
primary key (OrderNum)
)
;
--
================================================
===
-- referential integrity triggers section
--
================================================
===
-- =======================================
-- Procedure raise_exception for errors messages
-- =======================================
create procedure
messages_errors(errno INTEGER, isam INTEGER, errmsg char(255))
raise exception errno, isam, errmsg;
end procedure;
--
================================================
===
-- Controls the INSERT action on table Order.
-- Rule : CHILD INSERT RESTRICT
-- Parent : Customer
-- Child : Order
-- Direction : Order_Customer
--
================================================

===
create trigger tr_ins_Order insert on Order
referencing NEW as inserted
for each row
when
(
(select count(*) from Customer
where
inserted.CustomerName = Customer.CustomerName
) = 0
)
(
execute procedure messages_errors
(
-746,
0,
'Insert of "Order" denied: corresponding "Customer" does not
exist.'
)
)
;
--
================================================
===
-- Controls the DELETE action on table Customer.
-- Rule : PARENT DELETE RESTRICT
-- Parent : Customer
-- Child : Order
-- Direction : Customer_Order
--
================================================
===
create trigger tr_del_Customer delete on Customer
referencing OLD as deleted
for each row
when
(
exists
(
select * from Order
where
Order.CustomerName = deleted.CustomerName
)
)
(
execute procedure messages_errors
(
-746,
0,
'Delete of "Customer" denied: referencing "Order" exists.'
)
)
;
Рис. 6. Фрагмент схемы базы данных для СУБД Informix
OnLine


Содержание раздела