    Предисловие 

    Июнь 1997г. 

    На протяжении последних месяцев я имел удовольствие представлять новейшую 
разработку компании Borland — систему Delphi 3. Участвуя в мероприятиях, 
проводимых по всему миру в рамках кампании по продвижению продукта на рынок, я 
встречался с группами пользователей, выступал перед разработчиками и ключевыми 
фигурами крупных корпораций. 
    На презентациях я сначала знакомил слушателей с общей стратегией, которой 
мы придерживались при разработке Delphi, а затем переходил к демонстрации 
новых возможностей Delphi 3, например, таких как поддержка многоуровневой 
архитектуры распределенных баз данных, средства разработки элементов 
управления ActiveX, поддержка модели распределенных вычислений на базе 
объектов СОМ-серверов, компоненты для создания серверов Internet, средства 
оптимизации Code Insight и т.д. 
    Каждая презентация завершалась оживленным обсуждением, в ходе которого 
всегда звучал вопрос: "Можете ли вы порекомендовать книгу по Delphi, в которой 
освещались бы все возможности системы по разработке баз данных — SQL, 
многоуровневая архитектура и т.п.?" 
    "Конечно. Это книга Кена Хендерсона Delphi 3 и системы клиент/сервер. 
Руководство разработчика," — отвечал я. 
    Книга, которую вы держите в руках, — самый подробный учебник программиста, 
использующего Delphi, по проектированию баз данных, настройке сервера и 
разработке приложений. Качество книги во многом определяется и тем, что Кен 
Хендерсон — не только теоретик, но и практик, являющийся одним из ведущих 
разработчиков баз данных. 

    Денни Торп 

    Денни Торп (Danny Thorpe) — ведущий инженер компании Borland по разработке Delphi. 


    Благодарности 

    Особая благодарность моему другу и наставнику Нейлу Кою (Neil Coy), 
который несколько лет тому назад познакомил меня с системой Turbo Pascal. 
Именно Нейл, по собственной инициативе, привил мне любовь к программированию. 
Общаясь с Нейлом, я изучал секреты мастерства программирования непосредственно 
от самого маэстро. 
    Жму руку в знак благодарности Нэнси Кара (Nancy Сага) и Барри Мак-Клеру 
(McClure) — моим неутомимым рецензентам. Без их неусыпного ока и долгих часов, 
проведенных над рукописью, данная книга не была бы книгой в полном смысле 
этого слова. Забывая о сне и усталости, отрывая время от семьи и отдыха, эти 
мужественные люди сделали все, чтобы довести книгу до совершенства. На мой 
взгляд, без их настойчивости, энтузиазма и поддержки я вряд ли смог бы 
когда-либо завершить работу над этой книгой. 
    Выражаю признательность консультанту Денни Торпу за дружескую поддержку и 
терпеливые пояснения в ответ на мои полуночные телефонные звонки, а также за 
совместные путешествия по самым опасным и загадочным местам. 
    Хочу также искренне поблагодарить прекрасных людей, работающих в 
издательстве Sams. Особую благодарность хочется выразить редактору по работе с 
авторами Крису Дени (Chris Denny), который определил мои взаимоотношения с 
Sams. Спасибо, Крис, за поддержку и помощь, которую ты оказывал, когда 
становилось "жарко". Наконец, хочу поблагодарить своего дедушку, Кеннета 
Роутена (Kenneth E. Routen), который помогал мне обратить все несчастья в мою 
пользу и всегда, независимо от обстоятельств, был на моей стороне. Когда он 
покинул этот мир несколько лет тому назад, я лишился человека, которого всегда 
считал образцом и который был моим самым горячим поклонником. Однако, 
преодолевая все трудности или добиваясь чего-то в жизни, я всегда вспоминаю 
его и те истины, которые он посеял в моей душе. 

    Об авторе 

    В предыдущих жизнях Кен Хендерсон (Ken Henderson) был всемирно известным 
филантропом, хирургом, астронавтом, исследователем Арктики, ведущим ток-шоу, 
ветераном гражданской войны, флейтистом и... Бог весть кем еще. В наши дни Кен 
является признанным экспертом по базам данных и системам клиент/сервер. С 
появлением самой первой версии Delphi Кен избрал эту систему в качестве своего 
основного инструмента и с тех пор не только постоянно с ней работает, но и 
пишет о ней книги. Он живет в Далласе, шт. Техас, с женой, детьми, собакой и 
двумя котами. Связаться с Хендерсоном можно по адресу: khen@compuserve. corn

    Введение 

    Приступая к работе над этой книгой, я поставил перед собой три цели. 
Во-первых, рассказать как можно больше о таком обширном предмете, как 
разработка баз данных архитектуры клиент/сервер с помощью Delphi. Во-вторых, 
указать путь, по которому следует двигаться программисту, использующему 
Delphi, при практической разработке систем клиент/сервер. Наконец, в-третьих, 
собрать как можно больше справочного материала, к которому можно было бы 
постоянно обращаться в повседневной работе. Удалось ли мне достигнуть 
намеченного — судите сами. 

    Кому предназначена эта книга 

    Основными читателями этой книги будут программисты, которые уже 
разрабатывают или намереваются разрабатывать приложения баз данных, 
построенные на принципах систем клиент/сервер. Для того чтобы читать эту 
книгу, не обязательно быть экспертом по SQL, — все необходимое для понимания 
изложенного материала вы найдете на страницах книги. Более того, вам не 
обязательно быть экспертом по Delphi, так как в книге имеются главы, где 
описываются принципы работы в Delphi. Опытные разработчики в этой книге найдут 
ответы на такие сложные вопросы, как корректное применение бизнес-правил и 
обеспечение совместного доступа к данным. Новички же узнают об основах 
проектирования баз данных и разработки приложений баз данных с помощью Delphi. 
В книге собрана вся информация, необходимая для быстрого изучения методов 
разработки баз данных, в том числе пример разработки завершенного приложения 
базы данных архитектуры клиент/сервер. Для тех читателей, которые уже не 
считают себя новичками, но еще не решаются назвать себя экспертами, книга 
также будет полезной, поскольку в ней содержится очень много практических 
сведений, которые пригодятся разработчикам любой квалификации. 

    Варианты Delphi 

    Система Delphi 3 поставляется в трех вариантах — Desktop, Developer и 
Client/Server. Выбор конкретного варианта полностью зависит от стоящих перед 
вами задач. Я могу порекомендовать лишь следующее: если вы собираетесь 
разрабатывать системы клиент/сервер, — используйте вариант Client/Server. 
Разработка таких систем — это не веяние моды или перспективное направление, а 
современная, бурно развивающаяся область прикладного программирования. Delphi 
в варианте Client/Server обладает значительно большим количеством средств и 
улучшенной поддержкой серверов SQL, по сравнению с другими вариантами 
продукта. Хотя цена системы при этом также достаточно высока, но затраты на 
нее вполне оправданы. 

    Соглашения 

    На страницах этой книги я буду придерживаться, по возможности, 
неформального стиля изложения. Основное назначение этой книги — практика, а не 
теория, поэтому я постарался избежать монотонности и претензий на 
наукообразие. Вы заметите, что я использую некоторые термины, обозначающие в 
базах данных эквивалентные понятия, как синонимы. Например, я буду употреблять 
слово строка как синоним слова запись или слово поле вместо слова столбец и 
т.п. В одних случаях я буду предварять имена классов компонентов Delphi 
префиксом T, а в других — нет. Надеюсь, что вы простите мне мои привычки и 
пристрастия, так как эти мелочи не идут ни в какое сравнение с ценностью 
содержания книги. Дело в том, что при написании книги я старался максимально 
приблизить форму изложения этого достаточно сложного материала к разговорной 
речи. Когда люди забывают о вычурных и высокопарных фразах и начинают общаться 
друг с другом на "нормальном" языке, то понимание, как правило, достигается 
гораздо быстрее. Поэтому, как и всякий писатель, ищущий понимания своих 
читателей, я постарался сделать все, чтобы эта книга была как можно понятнее. 
    Кроме того, как вы уже, наверное, заметили, я использую в качестве 
эквивалентных выражения разработка систем клиент/сервер и разработка баз 
данных архитектуры клиент/сервер. Хотя базы данных, построенные по архитектуре 
клиент/сервер, являются частным случаем систем клиент/сервер, все же 
практическую ценность имеет именно разработка баз данных. Поэтому, вне 
зависимости от того, будут ли использоваться слова базы данных, везде, где в 
этой книге говорится о разработке систем клиент/сервер, речь идет именно о 
разработке баз данных, имеющих такую архитектуру. 

    Введение 9 


    Структура книги 

    Книга состоит из четырех частей — "Основы", "Учебный курс", "Справочные 
материалы" и "Темы повышенной сложности". 
    Часть I. Основы. Посвящена описанию основных сведений, которые понадобятся 
вам при чтении других частей книги. В ней содержится, в частности, введение в 
использование SQL, обсуждение соглашений о присвоении имен, основы 
проектирования баз данных и приложений и т.п. 
    Часть II. Учебный курс. В этой части на примере конкретного приложения 
показан процесс разработки систем клиент/сервер с помощью Delphi от самого 
начала до получения завершенного приложения. 
    Часть III. Справочные материалы. Здесь собран материал, к которому вы 
можете обращаться независимо от других глав этой книги. Здесь приведены 
сведения о всех основных СУБД, поддерживаемых Delphi. 
    Часть IV. Темы повышенной сложности. Содержит сведения, которые пригодятся 
программистам, углубившимся в разработку баз данных и систем клиент/сервер. В 
частности, здесь рассмотрены такие вопросы, как применение бизнес-правил, 
обеспечение совместного доступа к данным, разработка компонентов баз данных, 
устранение сбоев в работе баз данных и т.п. Кроме того, в этой части 
содержатся главы, посвященные разработке приложений. 

    Лепта в соперничество языков 

    Я был бы лицемером, если бы, используя Delphi в повседневной работе и 
написав несколько книг об этой системе, сказал, что мне что-то не нравится в 
ней. Могу заявить со всей ответственностью: Delphi это система, которую я ждал 
несколько лет. До появления Delphi я перепробовал массу средств разработки, 
пытаясь найти систему, которая позволяла бы выполнять любые задачи и в то же 
время была бы достаточно интуитивно понятной для аналитиков баз данных (очень 
часто оказывалось, что аналитики, приглашенные в мою команду для работы над 
очередным проектом, не являются опытными программиста ми). Поэтому, когда я 
ознакомился с Delphi, принял ее всем сердцем. Считаю ли я Object Pascal лучшим
языком программирования, a Delphi — лучшей системой разработки? Без сомнения 
да и еще раз, да! Каждый человек любит те или иные блюда или ту или иную 
одежду. Такие пристрастия есть и у меня. Поэтому, когда заходит речь о моих 
любимых средствах разработки систем клиент/сервер, я говорю — это средство 
называется Delphi. 

    От издательства "Диалектика" 

    Издательство будет признательно читателям за все критические замечания, 
выявленные ошибки и пожелания и просит присылать их по адресу: 252005, 
Киев-5, а/я 152, "Диалектика" или электронной почтой: niarin@dcp.kiev.ua 
    По традиции, самые активные и дотошные получат приз — лучшие книги нашего издательства. 

    10 Введение 

    Является ли Delphi панацеей? 

    ГЛАВА 1

    Каждые два-три года появляется новая панацея — средство или технология, с 
помощью которых, как утверждают их сторонники, можно обеспечить создание в 
рекордно короткие сроки программ, не содержащих никаких ошибок. В свое время 
такими панацеями были СУБД клиент/сервер, CASE-технология, 
объектно-ориентированное программирование. Сегодня многие обратились к языку 
Java как к очередному средству, призванному спасти нас от всех напастей. 
    Однако здравый смысл подсказывает, что панацеи нет — невозможно создать 
средство разработки, которое одинакового хорошо справлялось бы со всем 
многообразием задач программирования. Если некая система позволяет быстро 
создавать приложения — возникает вопрос в эффективности генерируемого ею 
выполняемого кода. Если система обладает хорошими возможностями визуального 
проектирования интерфейса, то часто оказывается, что она недостаточно хороша в 
низкоуровневом программировании. Системы, ориентированные на архитектуру 
клиент/сервер, часто "отказываются" работать с базами данных таких 
"примитивных" СУБД, как Paradox и т.д. 
    Я не буду утомлять вас заверениями, что Delphi является универсальным 
средством для решения всех проблем программирования. Однако не могу не 
отметить, что эта система сделала колоссальный шаг вперед по сравнению с 
остальными средствами визуального проектирования приложений. Delphi была 
первой системой ускоренной разработки приложений (RAD — Rapid Application 
Development), в которой удачно соединились средства визуального проектирования 
и оптимизирующий компилятор. Добавьте к этому обширную библиотеку компонентов, 
полную поддержку Internet и многоуровневую архитектуру баз данных и вы 
поймете, почему я считаю Delphi самой мощной системой разработки среди всех 
известных систем аналогичного назначения для Windows. Если Delphi и не 
является панацеей, то она очень сильно приблизилась к тому, чтобы именоваться 
таким образом. 
    Тем не менее, несмотря на все свои достоинства, Delphi не сможет создать 
абсолютно безошибочную программу, если проект этой программы не был достаточно 
хорошо продуман. Delphi не может проектировать приложения за вас или решать, 
что нужно пользователям вашей программы. Более того, Delphi также не сможет 
думать за вас или привести к установлению мира на всей планете. Delphi — это 
просто инструмент, который сделает только то, что вы от него потребуете. 
    Цель этой книги — научить тому, как сообщить Delphi о своих потребностях. 
Внимательно прочитав книгу, вы сможете овладеть всей мощью Delphi, позволяющей 
создавать надежные приложения баз данных архитектуры клиент/сервер. Концепции 
и методики, изложенные на ее страницах, помогут облегчить ваш путь к освоению 
принципов разработки систем клиент/сервер с помощью Delphi. 

    Почему именно Delphi? 

    Часто, рекомендуя использовать Delphi для разработки приложений 
клиент/сервер людям, незнакомым с этой системой, мне приходится слышать 
вопрос: "А почему именно Delphi?" В конце концов, на рынке имеется немало 
хороших средств разработки, позволяющих создавать приложения для архитектуры 
клиент/сервер. PowerBuilder, Visual Basic и другие подобные системы охватывают 
достаточно большие секторы рынка средств разработки баз данных. Почему же 
нужно отказываться от этих средств в пользу Delphi? 

    12 Часть I. Основы 

    На заметку 
    Хотя лично я не придерживаюсь мнения, согласно которому лучшие продукты 
пользуются большим спросом, однако многие считают именно так. Для сторонников 
количественного подхода скажу, что объем продаж Delphi постоянно превосходит 
совокупный объем продаж таких систем, как Visual Basic и PowerBuilder. 
Например, в первый же год выпуска Delphi количество проданных копий системы 
превысило количество проданных копий Visual Basic и PowerBuilder, вместе взятых. 

    На мой взгляд, на то есть масса причин. Как я уже говорил, в Delphi удачно 
сочетаются средства визуального проектирования приложений и оптимизирующий 
компилятор, чего, к сожалению, нельзя сказать о других системах RAD. Наличие в 
системе компилятора или генерирование ею выполняемого машинного кода еще не 
означает, что получаемый код является оптимальным. Такие системы, как 
PowerBuilder и Visual Basic, изначально создавались на основе концепции 
генерации псевдокода. При выполнении приложений, созданных с помощью этих 
систем, полученный псевдокод интерпретировался. С выходом Delphi как компания 
Microsoft, так и компания Powersoft попытались внедрить в свои продукты 
полноценные компиляторы. По-видимому, производители внезапно "прозрели" и 
"поняли", что компиляция приложений в машинный код — это стоящее дело. Однако 
проблема заключается в том, что ни язык Visual Basic, ни язык PowerScript не 
предназначались для компиляции, поэтому преобразование их в машинный код 
оказалось достаточно трудной задачей. Что касается оптимизации получаемого 
кода, то о ней можно вообще не говорить. 
    Если сравнивать вышеупомянутые языки с языком Object Pascal, используемом 
в системе Delphi, то различие видно сразу. Object Pascal всегда был 
компилируемым языком, и при его разработке были соблюдены все требования, 
выполнение которых обязательно при компиляции и оптимизации. Итог 
вышесказанного таков: Delphi является единственным полноценным средством 
промышленной разработки систем клиент/сервер. Сравнение Delphi с Visual Basic 
или PowerBuilder подобно сравнению современного компилятора с языка C++ с 
компилятором Clipper времен господства DOS. Только успех Delphi подвиг многих 
производителей средств разработки приложений клиент/сервер добавить в свои 
продукты технологию генерации машинного кода. Однако, пока они только начинают 
двигаться в этом направлении, развитие системы Delphi идет семимильными шагами. 
    Хочу отметить, что в случае Delphi слова "оптимизирующий компилятор" не 
означают "медленный компилятор". В последней версии продукта представлен 
лучший компилятор с языка Pascal компании Borland, которая уже на протяжении 
многих лет удерживает пальму первенства в этой области. Компиляторы с Pascal 
этой компании снискали заслуженную славу за генерацию выполняемого кода, 
который экономно использует ресурсы компьютера и одновременно обладает высокой 
производительностью. Компилятор Object Pascal, используемый в Delphi, не 
является исключением. Более того, генератор кода Delphi — это тот самый 
генератор кода, который применяется компанией Borland в ее компиляторах с 
языка C++. Таким образом, используя Delphi, вы получаете скорость программ, 
написанных на языке C++, не имея головной боли, связанной с этим языком программирования. 
    Однако современных разработчиков волнует не только эффективность 
выполняемого кода. Им нужно средство, которое было бы, с одной стороны, 
достаточно мощным и гибким, чтобы выполнить любую стоящую перед ними задачу, 
и, с другой стороны, достаточно простым и удобным в работе. Разработчики хотят 
иметь систему, построенную на принципах объектно-ориентированного 
программирования, и вместе с тем, позволяющую применять, в случае 
необходимости, ассемблер. Им нужна система, которая генерировала бы не только 
выполняемые файлы в формате ЕХЕ, но и могла создавать файлы DLL и драйверов 
устройств. Наконец, им нужна среда для быстрой разработки баз данных, которая 
не вынуждала бы их каждый раз при программировании спускаться до ядра СУБД. 
    Все это и даже больше предоставляет Delphi. Это стало возможным благодаря 
подходу, который применила компания Borland при создании этой системы, — 
собрать все лучшее, что есть в средствах разработки для Windows, и объединить 
в одном продукте. В состав Delphi входит обширная библиотека компонентов, с 
помощью которой можно избежать ручного написания программ, что широко 
распространено в других средствах разработки. С другой стороны, программист в 
любой момент может прибегнуть к низкоуровневым ассемблерным процедурам. Можно 
создавать приложения в визуальном режиме, просто помещая нужные компоненты на 
форму и, вместе с тем, сохраняя доступ ко всем функциям'программного 
интерфейса Windows, системным сообщениям и процессам. Работая в Delphi, 
программист может с помощью нажатия одной клавиши создать выполняемый файл в 
формате ЕХЕ, однако, при необходимости, можно компилировать и файлы DLL, 
драйверов устройств, а также консольных приложений. Наконец, несмотря на то, 
что Delphi является системой разработки, ориентированной на создание баз 
данных, вы можете с ее помощью разрабатывать любые приложения Windows, начиная 
от редакторов и заканчивая хранителями экранов. Даже сама система Delphi 
разрабатывается с использованием системы Delphi! 

    Глава 1. Является ли Delphi панацеей? 13 

    Добавьте ко всему этому мощные средства отладки и вы поймете, почему 
Delphi является системой равных которой практически нет. 
    Итак, существует множество достоинств, благодаря которым можно выделить 
Delphi из ряда други средств разработки: 
    Q обширная библиотека классов; 
    Q быстрый оптимизирующий компилятор, генерирующий машинный код; 
    Q встроенный отладчик, равных которому нет; 
    Q простой в освоении механизм доступа к базам данных; 
    Q мощная и удобная в работе среда разработки. 
    Другие средства в каждой из перечисленных областей остались далеко позади. 
Не знаю, какое мнение сложилось у вас, но для меня проблемы выбора не существует. 

    Безграничные возможности 

    Несмотря на приводящиеся в средствах информации длинные перечни 
возможностей Delphi, у некоторых программистов может возникнуть сомнение — 
все ли тут в порядке? Не скрывается ли за этой словесной пеленой нечто такое, 
чего нельзя сделать в Delphi? 
    Такие опасения беспочвенны. В отличие от других средств RAD, система 
Delphi полнофункциональна — в распоряжении пользователя имеется столько 
возможностей наращивания ее мощи, что он никогда н столкнется с задачей, 
которая окажется Delphi не "по зубам". Разрабатываете ли вы приложения баз 
данных или компоненты ActiveX, Delphi снова и снова оказывается на высоте. 
    Вот лишь краткий список возможностей Delphi, которые делают ее такой гибкой: 
    Q прямой доступ к программному интерфейсу Windows; 
    Q встроенный ассемблер и поддержка программирования в машинных кодах; 
    О возможность создания пользовательских компонентов VCL и ActiveX; 
    Q поддержка формата DLL и других выполняемых файлов Windows; 
    Q возможность многоуровневой разработки приложений; 
    Q полная объектная ориентированность — в программах можно создавать 
объекты, берущие начало как от библиотечных классов, так и от созданных программистом. 
    Хочу отметить, что далеко не все инструментальные средства, обладающие 
поддержкой объектно ориентированного программирования (ООП), могут 
похвастаться такими возможностями. Многие из систем разработки лишь имитируют 
объектную ориентацию, но сами по своей природе не являются продуктами, 
построенными на принципах ООП. С другой стороны, если какой-то продукт 
действительно реализован на принципах ООП, но при этом чудовищно медлителен, 
то его вряд ли можно считать полноценным инструментальным средством. Система 
разработки, претендующая на название истинно объектно ориентированной системы, 
должна соответствовать четырем основным критериям. 
    Q Наследование (inheritance). Новые объектные типы данных должны 
обладать возможностью наследовав свойства и методы имеющихся объектных типов. 
    Q Полиморфизм (polymorphism). В системе должен быть реализован механизм 
вызова методов объекта без жесткой связи с объектным типом данных, в котором 
содержится программный код, образующий эти методы. Например, метод show может 
выполнять абсолютно разные задачи, когда он вызывается для объекта кнопки или 
сетки, однако механизм его вызова должен быть тем же самым. Кроме того, если
оба объекта имеют общего предка, то вызов метода show предка через ссылку на 
экземпляр объект; сетки или кнопки должен приводить к отображению 
соответствующего элемента управления. 
    Q Инкапсуляция (encapsulation). Данные и код программы должны образовывать 
единую сущность, называемую объектом. Другими словами, объекты программы 
должны обладать возможностью хранить элементы данных и процедуры (называемые 
методами). Процедурные элементы объекта должны иметь автоматический доступ ко 
всем элементам данных объекта. 

    14 Часть I. Основь 

    Q Преобладающая методология. Самый важный принцип. Истинно 
объектно-ориентированное средство разработки должно иметь ООП в качестве 
преобладающей методологии создания программного кода, а не в качестве 
дополнительной возможности, добавленной задним числом. Когда ООП является 
преобладающей методологией, работа средства разработки должна быть 
высокопродуктивной. Если же производительность системы оставляет желать 
лучшего, возникает подозрение относительно принципов, положенных в ее основу. 
    Delphi полностью соответствует этим критериям, как и все традиционные 
средства ООП, такие как системы программирования на C++. Достаточно вспомнить 
тот малоизвестный факт, что компилятор с языка Pascal компании Borland был 
полностью объектно-ориентированным задолго до появления 
объектно-ориентированных компиляторов с языка С как компании Microsoft, так и 
компании Borland. Технология ООП в Delphi — это не "довесок", а краеугольный 
камень, на котором зиждется вся среда разработки. Добавив средства визуального 
проектирования приложений, компания Borland лишь избавила пользователей от 
утомительной работы, которая часто ассоциируется с ООП. 
    Выгодно отличает Delphi от большинства других средств RAD, имеющихся 
сегодня на рынке, тот факт, что до того, как система стала средством 
визуального проектирования, она уже была истинным ООП средством генерации 
выполняемого кода. Как я уже упоминал, Delphi является прямым потомком 
компиляторов Turbo Pascal компании Borland. Уже в конце 80-х годов компиляторы 
с языка Pascal, созданные этой компанией, были построены на принципах ООП и 
генерировали машинный код. В Delphi эта технология была поднята на новый 
уровень — к истинному средству RAD. Сравните теперь подходы, используемые в 
Visual Basic и PowerBuilder. Оба эти продукта возникли как интерпретирующие 
средства визуального проектирования. Только теперь сделаны попытки добавить в 
них технологию ООП и генерацию машинного кода. Из-за такого различия в 
концепциях продуктов полученные результаты разительно отличаются. Одна среда 
разработки с самого начала создавалась для достижения максимальной гибкости и 
скорости работы. Другие же предназначались прежде всего для захвата рынка, а 
уже потом — для превосходства в технологии. Только время покажет, какой подход 
оказался правильным. Для того чтобы впихнуть тяжеловесный башмак 
интерпретатора в изящный отпечаток (только в отпечаток — обладательница 
туфелек уже ушла далеко вперед!) туфельки системы, построенной на принципах 
ООП и генерации машинного кода, надо обладать недюжинными способностями. 

    Масштабируемость 

    Одной из важнейших характеристик средства разработки систем клиент/сервер 
является его масштабируемость (scalability), т.е. возможность работы как с 
простейшими, так и сложными базами данных. Если какое-то средство хорошо 
показывает себя в работе с таблицами dBASE, дайте ему таблицу Sybase и 
посмотрите на результат. Часто он оказывается плачевным. Многоуровневая 
архитектура баз данных Delphi делает данную систему масштабируемой в такой 
степени, что с ней не может потягаться никакое другое средство из имеющихся на 
рынке. Среди возможностей, благодаря которым обеспечивается такая 
масштабируемость, можно выделить следующие. 
    Q Поддержка как таблиц, размещенных на локальном компьютере, так и 
хранящихся на удаленном сервере баз данных. 
    Q Поддержка гетерогенных запросов и доступа к различным СУБД из одного приложения. 
    Q Независящий от платформы доступ к базам данных с помощью использования 
механизма Borland Database Engine (BDE), позволяющего приложениям 
переключаться с одной СУБД на другую. 
    Q Быстрые и эффективные драйверы BDE для всех основных платформ клиент/сервер. 
    Q Компоненты DataSet с виртуальными методами, позволяющие разработчикам 
создавать собственные драйверы баз данных, независящие от BDE. 
    Q Поддержка компактных и не требующих настройки клиентных приложений. 
    Q Полная поддержка ODBC. 
    Короче говоря, Delphi — это швейцарский армейский нож в мире средств 
разработки систем клиент/сервер. Используете ли вы таблицы, хранящиеся на 
рабочей станции, или расположенные на SQLсервере, Delphi предоставит вам все, 
что нужно для создания базы данных, причем в самые короткие сроки и без лишней 
головной боли. 

    Глава 1. Является ли Delphi панацеей? 15 

    Что ожидает вас впереди 

    Ниже приведен краткий обзор материала, изложенного в последующих главах 
книги. Эти сведения помогут вам быстро найти информацию, которая интересует 
вас больше всего. 
    Глава 2. Начало работы. Посвящена описанию того, как приступить к созданию 
приложений баз даных с помощью Delphi в предельно сжатые сроки. Если вы 
никак не решитесь попробовать Delphi в деле то эта глава предназначена именно 
для вас. 
    Глава 3. Основные понятия. В ней излагаются сведения, знание которых 
необходимо при создании npиложений с помощью Delphi. Если вы никогда не 
работали с Delphi, обязательно ознакомьтесь с этой главой. 
    Глава 4. Соглашения. В данной главе вы найдете мои соображения о 
присвоении имен программны элементам и объектам баз данных, а также о 
структуризации программы на языке Object Pascal. 
    Глава 5. SQL для простых смертных. Эта глава представляет собой упрощенное 
руководство по SQL Если вы никогда раньше не сталкивались с SQL или хотите 
освежить свои знания, обратитесь к этой главе. В ней вы найдете все 
необходимые сведения без ненужных подробностей. 
    Глава 6. Проектирование базы данных архитектуры клиент/сервер. Здесь 
приведены основные принцип теории реляционных баз данных и описаны методы 
воплощения этих принципов в среде Delphi. Рекомендую эту главу тем читателям, 
у которых хромает теоретическая подготовка. 
    Глава 7. Проектирования приложения архитектуры клиент/сервер. Данная глава 
продолжает разговор проектировании баз данных и посвящена вопросам 
проектирования приложения базы данных. Главы 6 и 7 дополняют друг друга и будут 
интересны читателям, увлекающимся темой проектирования прикладных систем баз данных. 
    Глава 8. Ваша первая система клиент/сервер. Эта глава открывает вторую 
часть книги, озаглавленну "Учебный курс". Главы 8—14 этой части посвящены 
описанию процесса разработки полнофункционального приложения базы данных 
архитектуры клиент/сервер. 
    Глава 15. Microsoft SQL Server. Эта глава открывает часть, содержащую 
справочные материалы. В данной главе рассмотрены вопросы, связанные с 
особенностями разработки приложений Delphi, использующих базы данных системы 
Microsoft SQL Server. Если эта тема для вас не безразлична, то здесь вы найдете
целые россыпи ценнейшей информации. 
    Глава 16. Oracle. Посвящена описанию особенностей разработки в Delphi 
приложений, использующих базы данных Oracle. Если вы новичок в Oracle, можете 
обратиться к этой главе, чтобы получить основные сведения об одной из самых 
популярных в мире реляционных СУБД. Опытные разработчики Oracle найдут в этой 
главе ответы на вопросы, которые чаще всего возникают при создании в Delphi 
приложений взаимодействующих с базами данных Oracle. 
    Глава 17. InterBase. В данной главе подробно описывается реляционная СУБД 
InterBase. В зависимост от варианта Delphi, которым вы располагаете, на вашем 
компьютере может быть установлена и копия InterBase. Данная глава 
представляет собой руководство по InterBase и содержит описание различных нюансов 
совместной работы Delphi и InterBase. 
    Глава 18. Sybase SQL Server. Эта глава посвящена вопросам обеспечения 
взаимодействия приложений созданных с помощью Delphi, и системы Sybase SQL 
Server. Если вы разрабатываете в Delphi приложенш которые осуществляют доступ 
к базам данных Sybase SQL Server, то найдете эту главу бесценной. 
    Глава 19. Отчеты. Эта глава открывает завершающую часть книги, содержащую 
информацию для опытных разработчиков. В данной главе рассматриваются принципы 
создания отчетов баз данных с помощью Delphi. Вы узнаете, как создаются 
обычные отчеты по одной таблице, отчеты созданные по главной и подчиненной 
таблицам и многотабличные отчеты. 
    Глава 20. Бизнес-правила и сервер баз данных. Вместе с главой 21, 
Бизнес-правила в приложениях, данная глава ознакомит вас с настройкой 
клиентной и серверной части бизнес правил в приложениях, созданных с помощью Delphi. 
    Глава 22. За пределами двухуровневой модели. Посвящена описанию принципов 
создания в Delphi приложений многоуровневой архитектуры клиент/сервер. 
    Глава 23. Совместный доступ к данным. В этой главе рассматривается 
управление совместным доступом к данным в приложениях баз данных, созданных с 
помощью Delphi. Хотя при организации совместного доступа к данным львиную долю 
работы выполняют сервер базы данных и драйвер BDE, программисту создающему 
крупномасштабные приложения архитектуры клиент/сервер, нужно разбираться во 
всех тонкостях этого процесса. Данная глава посвящена описанию принципов 
реализации совместного доступа к данным в Delphi, а также способов их применения. 
    Глава 24. Дополнительные сведения о SQL. Эта глава является углубленным 
курсом по программированию на языке SQL. В главе 5 затронуты лишь основные 
принципы использования SQL, тогда как в дан-

    16 Часть I. Основь 

ной главе вы найдете материал, посвященный деталям применения SQL. Здесь 
описываются методы разработки драйверов баз данных, хранимых процедур и 
представлений, а также использования триггеров. Кроме того, в этой главе мы 
обсудим методы оптимального программирования SQL и некоторые вопросы философии 
проектирования баз данных. 
    Глава 25. Оптимизация приложений архитектуры клиент/сервер. Эта глава 
наполнена информацией о методах оптимизации приложений, созданных с помощью 
Delphi и имеющих архитектуру клиент/сервер. Глава содержит целые россыпи 
советов по оптимизации приложений баз данных, а также объектов серверов, к 
которым они обращаются. 
    Глава 26, Borland Database Engine. В этой главе рассказывается о 
внутреннем устройстве системы доступа к базам данных Borland Database Engine. 
Изучив эту главу, вы узнаете, как напрямую обращаться к функциям программного 
интерфейса BDE (IDAPI), а также о том, как с их помощью расширить возможности 
компонентов баз данных Delphi. 
    Глава 27. Разработка компонентов баз данных. Посвящена описанию вопросов 
разработки собственных компонентов баз данных. Из этой главы вы узнаете не 
только о возможности создания компонента на основе уже имеющихся, но и о 
разработке абсолютно новых компонентов. 
    Глава 28. Приложения для работы с Internet. Здесь описываются методы 
создания приложений, предназначенных для взаимодействия с Internet. Из этой 
главы вы узнаете, как использовать в приложениях функции программных 
интерфейсов NSAPI и ISAPI, создавать броузеры Web, применять элементы 
управления ActiveForm OCX, а также разрабатывать приложения для заказов по Internet. 
    Глава 29. Совершенствование приложений. В этой главе вы найдете немало 
интересных сведений о вопросах, связанных с разработкой приложений в Delphi, а 
также о подстерегающих вас на пути к промышленному производству приложений 
архитектуры клиент/сервер препятствиях, ухабах и бездонных провалах. Кроме 
того, в этой главе имеется раздел, посвященный описанию принципов 
использования программы создания дистрибутивных комплектов InstallShield, 
поставляемой в составе Delphi. 
    Приложение. Delphi и другие системы. Здесь приводятся сведения, которые 
помогут вам перейти от других средств визуальной разработки к Delphi. В 
приложении подробно описаны методы перехода к Delphi от PowerBuilder, Visual 
Basic, C++ и различных диалектов семейства Xbase. 

    Резюме 

    Для того чтобы выбрать Delphi из всего многообразия средств визуального 
проектирования приложений, имеется множество причин. Разработчикам Delphi не 
на словах, а на деле удалось приблизить свое детище к тому идеалу, о котором 
давно мечтает все сообщество программистов для Windows. Я мог бы долго еще 
говорить о сильных и слабых сторонах Delphi и ее конкурентов, однако 
достаточно привести лишь краткий перечень ее самых примечательных достоинств, 
чтобы прояснить всю картину в целом. Итак, Delphi выгодно отличают от других 
систем следующие свойства. 
    Q Обширная библиотека объектов. 
    Q Истинная поддержка принципов ООП. 
    Q Компиляция в машинный код. 
    О Встроенные средства отладки. 
    О Абстракция доступа к базам данных. 
    Q Полный набор средств для разработки компонентов VCL и ActiveX. 
    Q Прямой доступ к программному интерфейсу Windows. 
    Q Встроенная поддержка ассемблера. 
    Q Создание выполняемых файлов в формате DLL и других системных форматах Windows. 
    Q Развитая среда разработки с исчерпывающим набором средств. 
    Delphi — это непревзойденная инструментальная среда разработки систем 
клиент/сервер. При сравнении ее с такими средствами RAD первого поколения, как 
PowerBuilder и Visual Basic, становится ясно, что место Delphi — в высшей 
лиге, где она является абсолютным чемпионом. Даже по сравнению со средствами 
второго поколения, такими как Optima++, Delphi выгодно отличается мощностью и 
простотой использования. Иногда можно встретить высказывания, что в игре под 
названием "разработка систем клиент/сервер" Delphi может претендовать на 
первенство лишь в легчайшей весовой категории. Однако, как правило, такие 
высказывания появляются лишь из-за слабого знания возможностей Delphi и 
демонстри-

    Глава 1. Является ли Delphi панацеей? 17 

руют скорее поверхностность их авторов, чем недостатки системы. Кстати, 
весьма любопытно наблюдать как производители конкурирующих систем, заявляя, что 
Delphi слишком слаба в той или иной области сами лихорадочно работают над 
воссозданием этих "слабостей" в своих продуктах. Так, компания Microsoft 
постоянно заявляла, что технология компиляции в машинный код, используемая в 
Delphi, являем безусловным пережитком, и в то же время усиленно работала над 
добавлением в Visual Basic 5 встроенного компилятора (кстати, весьма 
посредственного). Да, иногда одно дело показывает истину лучше, чем тысячи слов. 

    18 Часть I. Основ 

