Содержание
Постановка задачи. Модель и структура данных

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

Модель и структура данных
Итак, задача поставлена, надо делать. Чего скрывать, в массе своей программисты - люди неорганизованные. Получив задачу, тут же бросаются к компу, начинают клепать базы и писать коды. Вскоре выясняется, что все сделано неправильно, не учтены важнейшие моменты, половину приходится переделывать. А потом переделывать еще, еще и еще ... Существует, конечно, подобная техника, называемая экстремальным программированием, но это не для всех (потому и экстремальное). Так что есть смысл обратиться к передовому опыту проектирования программных систем, согласно которому нужно:

1. Провести анализ предметной области, в результате чего появится концептуальная модель будущей программной системы.
2. Разработать детальную структуру базы данных.
3. Только после этого приступить к написанию кодов.

Есть для этого и соответствующие программные средства, называемые CASE-средства. С их помощью можно смоделировать практически любые программные системы - от описания структуры и поведения до проектирования базы данных и написания кодов. Продвинутые программисты пользуются этим делом вовсю. Например, в замечательной книжке "PHP 5 для профессионалов" авторы так по-простому и советуют: "Запустите любое приложение, предназначенное для построения диаграмм UML ..." (тот же CASE). Совет, конечно, хорош, да вот нет у нас под рукой такого приложения. Все это сплошь коммерческие продукты, да еще и недешевые. То есть, находясь в правовом поле, большинству из нас попользоваться всеми этими чудесами не светит. Рисовать на бумажке тоже как-то неприлично. Однако выход есть. Поскольку во многих случаях, особенно для небольших систем, концептуальная модель хорошо накладывается на структуру БД, для построения модели можно воспользоваться стандартными средствами СУБД для описания структуры базы. В MySQL это будет MySQL Workbench. или программа сторонних производителей (например, DBDesigner или Open System Architect). Воспользуемся MySQL Workbench. Перед использованием надо глянуть на версию программы. Если бета или альфа - лучше скачать заново. Существует бесплатная и коммерческая версия программы, последняя, естественно, с несколько большими возможностями.

Модель программной системы описывается ER-диаграммами (диаграммы сущность-связь). О таких диаграммах см. полезные ссылки, повторяться не будем. MySQL Workbench позиционируется разработчиками как средство построения ER-диаграмм, то есть включает все необходимое для построения модели, за исключением автоматической генерации кодов обработки. В качестве сущностей выступают таблицы БД, в качестве связей - естественно, связи между ними. Для примера построим ER-диаграмму для пользователей, объединенных в группы. Имеем две сущности - группы пользователей и пользователей. Связь определяет принадлежность пользователя той или иной группе. Запускаем программу:



По умолчанию предлагается название схемы mydb. Можно изменить его в соответствии с названием своего проекта. Два раза щелкаем Add Diagram и попадаем в поле построения диаграммы. С левой панели инструментов перетаскиваем на поле диаграммы две новые таблицы, именуем их (Group и Users) и добавляем в каждую поля id и name. Затем на той же левой панели выбираем связь <Один ко многим> и щелкаем вначале на таблице пользователей (многие), затем на таблице групп (один). Автоматически в таблицу пользователей добавляется поле Group_id, указывающее на группу, и формируется внешний ключ (связь):



Связь автоматически настраивается по автоинкрементному полю таблицы групп и вновь созданному полю таблицы пользователей. Естественно, поля связи в дальнейшем можно перенастроить. Простейшая ER-модель готова. Дальше MySQL Workbench предоставляет возможность перенести разработанную структуру данных на физическую БД. Сохраняем проект в файл. Создание скрипта производится через меню <File - Export - Forward Engineer SQL CREATE Script...>. После этого можно загрузить полученный скрипт в MySQL Query Browser <File - Open Script ...> и выполнить по кнопке Execute. (В платной версии MySQL Workbench то же самое можно сделать более изящно.)



Будет создана схема данных mydb с таблицами групп и пользователей. (Для переноса связей MySQL должна поддерживать машину данных InnoDB.) В дальнейшем разработанную модель можно исправить и дополнить, и перенести изменения в базу.

Конечно, для простой задачи подобный путь может показаться длинноватым и не слишком удобным, однако для большой задачи с разветвленной схемой данных использование такой программы позволит в дальнейшем сэкономить кучу времени и сил, особенно если разработка является протяженной во времени.

Полезные ссылки:
http://www.interface.ru/home.asp?artId=2805 (проектирование информационных систем 1)
http://www.interface.ru/home.asp?artId=3006 (проектирование информационных систем 2)
http://i-vd.org.ru/books/php/object-oriented.shtml (объектно-ориентированное програмирование в PHP)
http://forge.mysql.com/wiki/MySQL_Workbench (англ.)

Содержание

© re-stichka.narod.ru
При публикации данного материала ссылка на источник обязательна.

Hosted by uCoz