Н. 3. Елманова. C++Builder 3.0, архитектура "клиент/сервер" и Internet
X   С"
Рис. 5.12. Главная форма приложения после "приведения в порядок"
5.2     Перенос унаследованных данных с использованием CASE-средств
Рассмотрим альтернативный способ переноса данных на сервер, более дорогой и сложный, но приводящий в целом к более качественному результату. Этот способ базируется на использовании CASE-средств (CASE расшифровывается как Computer-Aided System Engineering) для восстановления схемы базы данных по имеющимся таблицам (так называемого обратного проектирования), замены платформы и описания связей между таблицами с точки зрения реакции сервера на попытки того или иного изменения данных со стороны клиентского приложения. В качестве такого средства рассмотрим, например, ERwin 3.0 - CASE-средство компании Logic Works, предназначенное для проектирования баз данных и на сегодняшний день являющееся одним из наиболее простых и доступных по цене средств такого класса.
Прежде чем заняться обратным проектированием, следует описать ODBC-источник, соответствующий каталогу, в котором хранятся исходные
90
Перенос приложений и унаследованных данных в архитектуру клиент/сервер
dBase-таблицы   (это  делается   с   помощью   панели   управления   Windows, рис. 5.13).
Рис. 5.13. Описание ODBC-источника с помощью панели управления Windows
Попробуем осуществить обратное проектир9вание с помощью ERwin, используя созданный ОВВС-источ"ни"? Для этого из меню" главного окна ЕТЗдап выберем опцию Tasks/Reverse Engineering.
Первая проблема, с которой при этом можно столкнуться, заключается в том, что ERwin не поддерживает формат данных dBase 5.0 (с прежними версиями dBase такой проблемы нет) и при обратном проектировании структура таблиц, содержащих графические поля, не всегда восстанавливается. Обычно эта проблема решается путем выбора сходной по структуре платформы (dBase III, Clipper, FoxPro) и последующей коррекции результатов обратного проектирования. Особое внимание при этом следует обращать на специфические типы данных (например, BLOB-поля), так как различия между платформами заключаются, в частности, в способах хранения подобных типов данных (но, разумеется, не только в этом).
Выберем в качестве исходной платформы Clipper, ответим на вопросы, предлагаемые в последующем диалоге (можно оставить то, что предложено по умолчанию), и в результате получим модель данных, похожую на изображенную на рис. 5.14 (она содержит описание всех dBase-таблиц из каталога, содержащего данные для примеров, поставляемых с C++Builder).
91