Правильная ссылка на эту страницу
http://az-design.ru/Projects/AzBook/AZMicro/AZMicro40.shtml

Сравнение методов проектирования

       Весь проект находится в папке AZMicro. Разработка БД велась с помощью программы MS Word, как бы не смешно это выглядело. Но, оказалось, что более удобного инструмента для проектирования, не нашлось. Прежде чем сравнивать методы, дадим некоторые практические рекомендации по оформлению скрипта в MS Word.
       Первое, на что следует обратить внимание, это, как ни странно, шрифт и стиль текста. Шрифт должен быть моноширинный, т.е. когда ширина всех букв одинакова. Это позволит форматировать текст с отступами для удобства восприятия. Чем меньше размер шрифта, тем больше символов умещается в строке, но тем труднее его читать. Размер меньше 8 пунктов у же не приемлем.
       Для оформления текстов программ и, в частности, SQL-скриптов были разработаны несколько стилей (они использованы в файле DB\AZMicro.doc):
       — SQL_Text — [обычный + шрифт: Courier New, 8 пт]. Применяется для большей части текста.
       — SQL-FirstText — [SQL_Text + Шрифт: полужирный, не отрывать от следующего]. Применяется для выделения строк, чаще всего первых в процедуре или описании таблицы.
       — SQL_Head3 — [SQL_FirstText], тоже, что и предыдущий стиль, но используется для заголовков 3 уровня, которые собираются в оглавлении.
       — SQL_Head2 — [SQL_Head1 + Шрифт: 11 пт], для заголовков 2 уровня, которые собираются в оглавлении.
       — SQL_Head1 — [SQL_Text + Шрифт: 12 пт, полужирный, не отрывать от следующего, не разрывать абзац]. Применяется для основных заголовков в структуре программы (скрипта).
       Теперь, если оператор "Create Table ...." сделать стилем SQL_Head2, а операторы типа "Create trigger...." и им подобные сделать стилем SQL_Head3, то при сборке оглавления автоматически получается структура БД, сгруппированная по основным таблицам. Заголовки разделов можно вписывать как комментарии стилем SQL_Head1.
       Второе, для того чтобы документ был читаемым, необходимо оформить страницу.
       В начале своей трудовой деятельности — я тогда работал в Астрономической Обсерватории Ленинградского Университета — со мной произошел пренеприятный случай, значение которого я смог понять спустя много лет. Я, опаздывая на работу, бежал в свою лабораторию. А навстречу мне бежал мой начальник, Миша Бабаджанянц, с коробкой перфокарт. Машинное время тогда ценилось много дороже золота. Мы столкнулись и перфокарты равномерно усыпали пол в корридоре. Ввиду бедности, эти перфокарты набивались на советских монстрах-перфораторах, которые не оставляли других следов, кроме дырок. Рассыпавшиеся перфокарты — это уже не программа, а клочки достаточно жесткой бумаги. Я благодарен Мише, за то что оставил меня в живых. Потом я увидел перфокарты с немецких перфораторов, на которых были напечатаны порядковый номер перфокарты и строка программы. С тех пор выработалось "железное" правило — документ должен быть оформлен так, чтобы при подобной ситуации его всегда можно было бы собрать в нужном порядке. Для этого достаточно на странице иметь колонтитул, содержащий название скрипта, имя файла, дату и время последнего сохранения, номер страницы и количество страниц.
       Для этого выбираем в меню пункт "View/Header and Footer" ("Вид/Колонтитулы").
       Переключаемся на нижний колонтитул (Footer) и в выделенном поле пишем:
       — "наименование программы", — и через тире и пробел вставляем из автотекста (AutoText) либо имя файла и путь (Filename and path), либо только имя файла.
       — Отступив немного пробелами, вставляем дату (кнопка с календарем) и время (кнопка с часами). Так как дата вставляется с двумя цифрами года, то нужно немного подправить формулу. Для этого указываем курсором на дату, и после клика поле даты станет серым. После этого нажатием на правую кнопку мыши открываем меню свойств и выбираем (Toggle Field Codes), в результате дата превращается в формулу, которой текст "dd.MM.yy" нужно заменить на "dd.MM.yyyy". При этом нужно проверить чтобы дата в формуле определялась переменной SAVEDATE, т.е дата последнего сохранения. Снова выбираем из меню свойств (Toggle Field Codes) и сразу, опять из меню свойств, выбираем (Update Field).
       — Опять отступив немного пробелами, вставляем из автотекста "Стр. X из Y" (Page X of Y).
       — Далее пробелами выравниваем текст так, чтобы все это красиво лежало. При необходимости можно изменить шрифт и его характеристики.
       Когда все закончено можно закрыть панель колонтитулов.
       Таким образом, мы получаем документ, в котором при распечатке на каждой странице будет указано имя файла и когда он последний раз был сохранен. И, даже если большая распечатка будет рассыпана по отдельным листочкам, то ее можно будет собрать без ошибок.
       Третье, это навигация по тексту. Она состоит из двух частей — закладки и гиперссылки.
       Сначала необходимо расставить закладки.
       Для этого необходимо поставить курсор в любом месте оператора "Create Table XXX" , в меню выбрать "Вставка/Закладка", в верхнем поле написать "Table_XXX" и нажать кнопку "добавить" (ADD). Название должно быть написано латинскими буквами (даже в русском Wordе) и не содержать проблелов. Если сначала поставить слово Table (или procedure, или т.п.) , то сортировка закладок будет происходить по группам объектов.
       Таким образом, мы получили возможность ссылаться и переходить место в тексте, обозначенное определенным именем. Если нам нужно просто попасть на нужное место, то нажимаем Ctrl+G и выбираем имя закладки назначения. Переход в файле 4Мб (600стр.) происходит практически мгновенно.
       Теперь, можно применять навигацию. Например при описании таблицы Ledger:

Create table LEDGER
      (LdID       AZInt32 not null primary key,
       LdAccnt    CRDB     references CHARTACC on update cascade,
       LdDate     Date,
       LdJrnl     AZInt32  references Journal  on update cascade,
       LdCorAcc   CRDB     references CHARTACC on update cascade,
       LdMCrd     AZMoney,
       LdMDbt     AZMoney,
       LdMSld     AZMoney);
Commit;

       Указание на ссылочную целостность с помощью ограничения references, теперь может включать не только наименование таблицы, но и гиперссылку на ее определение. Что позволяет в любой момент уточнить, а что имел ввиду разработчик, когда накладывал такое ограничение. Это дает "сводную" документацию, которая уменьшает потребность в любой другой сопроводительной документации, помимо скриптов схемы.
       Для вставки гиперссылок достаточно выделить текст, на который ставится гиперссылка, и выбрать в меню "Вставка/Гиперссылка". После чего откроется диалог, в котором нужно выбрать "связать с местом в документе" и в качестве места указать соответствующую закладку. Этот прием хорошо работает даже если ссылка указывает на место в другом файле. Что позволяет разбивать скрипт на модули.
       Для любителей других инструментов проектирования, предлагаю посмотреть как выглядит эта же (чрезвычайно простая) БД в IBExpert:

схема БД построенная в IBExpert
Рис.AzMicro017 — схема БД построенная в IBExpert

       Из диаграммы видно, что таблица Ledger ссылается на другие таблицы, но не видно какое поле на какую таблицу. Если в таблице несколько полей, как в Journal, то стрелка все равно будет одна, а это неправильно.
       Во-вторых, диаграмма не показывает домены, в результате чего не понятем смысл типов данных. В нескольких БД, которые были созданы с помощью похожего инструмента, и, которые я исследовал, домены создавались безсистемно и многие в результате либо дублировались с похожими, либо не использовались вообще.
       В-третьих, на диаграмме не показаны генераторы, триггеры и процедуры, которые составляют значительную часть бизнес-правил. Наверное их можно вставить, но толку от такого квадратика немного, если неизвестен его текст.
       В-четвертых, при большом количестве таблиц схема становиться необозримой, не печатаемой, и, следовательно, бесполезной.
       И, главное, скрипт построеный в MS Word может быть распечатан в удобном виде с подробными комментариями и протоколом изменений; передан человеку, у которого нет никаких инструментов проектирования; может быть преобразован в другой формат и, наконец, позволяет создать БД заново на любой версии СУБД. Немаловажным обстоятельством является и то, что при построении БД из скрипта протоколируются все ошибки, которые потом легко исправляются. При создании БД с помощью инструмента типа IBExpert или ErWin ошибки могут маскироваться и накапливаться.

Архангельский Андрей




<<< Пред. Оглавление
Начало раздела
След. >>>

Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:56 MSK


Постоянный адрес статьи:
http://az-design.ru/Projects/AzBook/AZMicro/AZMicro40.shtml