Н, 3. Елманова. C-t+Builder 3.0, архитектура "клиент/сервер" и Internet
Ready
"jdBASEIV
Л/с. 5.14. Результат обратного проектирования каталога с демонстрационными примерами C++Builder
Отредактируем полученную модель данных, убрав все таблицы, кроме CLIENTS и HOLDINGS, определив ACC_NBR как первичный ключ таблицы CLIENTS и изменив тип данных поля IMAGE на MEMO (опция Column Editor контекстного меню таблицы). Создадим также неидентифи-JiitEX!2ffiyjS__связь "один ко многим" между таблицами "CLIENTS и HOLDINGS, выбрав для этой цели соответствующую пиктограмму на "плавающей" инструментальной панели.
92
Перенос приложений и унаследованных данных в архитектуру клиент/сервер
Далее следует выбрать другую целевую платформу (в нашем случае Oracle). В результате получим примерно следующий вид модели данных (рис. 5.15).
JArial
CLIENTS
г1
ACCT_NBR: NUMBER(20,4) SYMBOL: CHARACTER^) SHARES: FLOAT PUR_PRICE: FLOAT PUR DATE: DATE
Puc. 5.15. Примерный вид модели данных для генерации БД в Oracle
Теперь можно описать свойства имеющейся связи между таблицами. Так как это связь "один ко многим", ее следует явно указать в диалоге, вызываемом с помощью опции Relationship Editor контекстного меню связи. В том же диалоге на другой странице трехстраничного блокнота надо выбрать из предлагаемых выпадающих списков возможную реакцию сервера на попытки нарушения ссылочной целостности со стороны клиента. Например, при попытке удалить запись из таблицы CLIENTS можно либо совершить каскадное удаление (т. е. удалить все соответствующие записи из таблицы HOLDINGS), либо запретить удаление, если имеются соответствующие записи в дочерней таблице, с выдачей диагностического сообще-
93