Новинки компьютерных книг Базы данных: проектирование, реализация и сопровождение
Базы данных: проектирование, реализация и сопровождениеТомас Конолли, Каролин Бегг, Анна Страчан
ПредисловиеОсновные сведенияЗа последних 30 лет в области теории систем баз данных была проведена серия исключительно продуктивных исследований. Полученные результаты вполне можно считать наиболее важным достижением информатики. Базы данных стали основой информационных систем и в корне изменили методы работы многих организаций. В частности, развитие данной технологии в последние годы привело к созданию весьма мощных и интуитивно понятных систем. Все это сделало системы баз данных доступными широкому кругу пользователей. К сожалению, кажущаяся простота данных систем способствовала тому, что пользователи стали самостоятельно создавать базы данных и приложения, не имея достаточных знаний о методах проектирования эффективно работающих систем. Поэтому, один раз возникнув, "кризис программного обеспечения", или, как его еще называют, "депрессия программного обеспечения", продолжается и поныне. Основанием для написания этой книги стал многолетний опыт работы автора в качестве консультанта по проектированию баз данных для создаваемого программного обеспечения, а также по разрешению проблем (что возможно далеко не всегда), вызванных несоответствием существующих систем предъявляемым к ним требованиям. Кроме того, занимаясь преподавательской работой, автор столкнулся с аналогичными проблемами, возникающими в совершенно иной пользовательской среде - среди студентов. Поэтому целью написания данной книги стало создание учебного пособия, в котором ясно и четко были бы изложены практические основы теории баз данных, в частности конкретная методология проектирования баз данных, предназначенная для использования как профессиональными разработчиками, так и непрофессионалами. Предложенная в этой книге методология работы с реляционными Системами Управления Базами Данных (в дальнейшем - СУБД), доминирующими в настоящее время в бизнес-приложениях, успешно прошла проверку временем как в практической, так и в академической среде. Проектирование баз данных состоит из трех фаз: концептуальной, логической и физической. Первая фаза предусматривает создание концептуальной модели данных, не зависящей от каких-либо физических характеристик. Во второй фазе, назначение которой состоит в создании логической модели данных, концептуальная модель подвергается доработке посредством удаления элементов, которые не могут быть реализованы в реляционных системах. В третьей фазе логическая модель данных преобразуется в физический проект, предназначенный для реализации в среде конкретной целевой СУБД. При этом анализируются структуры хранения данных и методы доступа, необходимые для эффективной работы с базой данных, размещенной на внешних запоминающих устройствах. Каждая из фаз предлагаемой методологии представлена в виде последовательности этапов. Предполагается, что неопытный проектировщик будет выполнять эти этапы в указанной последовательности, придерживаясь приведенных рекомендаций. Более опытному разработчику не так уж обязательно жестко придерживаться данной методологии, ее, скорее, следует использовать как некую основу или контрольный перечень необходимых действий. Чтобы облегчить читателю процесс изучения методологии и понимания некоторых важных вопросов, в трех главах этой книги дано подробное описание практического примера - учебного проекта, получившего название DreamHome. Помимо этого, в приложении А, "Учебный проект Wellmeadows Hospital", приводится описание еще одного учебного проекта, называемого Wellmeadows Hospital и предназначенного для того, чтобы читатель смог применить на практике предложенную ему методологию. Что нового во втором изданииПервое издание книги было существенно переработано с целью повысить ее читабельность, обновить или расширить уже существующий и включить новый материал. Ниже перечислены основные изменения, которые были внесены в книгу при подготовке ее второго издания.
На кого рассчитана эта книгаЭта книга представляет собой учебное пособие для одно- или двух-семестрового курса, посвященного управлению базами данных или проектированию баз данных, для студентов младших и старших курсов, а также для аспирантов. Курсы, как правило, включаются в учебные планы следующих специальностей: информационные системы, информационные технологии в бизнесе, информатика и др. Кроме того, как справочное пособие эта книга может быть полезна опытным специалистам в области информационных технологий - например, системным аналитикам или проектировщикам, прикладным или системным программистам, разработчикам баз данных, а также всем тем, кто занимается самообразованием. Благодаря широкому распространению баз данных, в наши дни такие профессионалы есть или должны быть в любой фирме, использующей в своей деятельности базы данных. Желательно, чтобы студенты имели базовые знания об организации файлов и структурах данных. Перед чтением главы 9, в которой описывается физическая структура базы данных, и главы 18, посвященной обработке запросов, рекомендуется ознакомиться с основными понятиями, используемыми в упомянутой области, которые изложены в приложении Б, "Структура данных в файлах с различной организацией". Однако лучше всего, если эти знания будут получены на каком-то предварительном курсе. Если это невозможно, то в таком случае материал приложения Б следует освоить в самом начале курса изучения баз данных - например, непосредственно после главы 1, "Введение в базы данных". Понимание основ языков программирования высокого уровня, например языка С, весьма желательно при чтении разделов 14.5 и 14.6, которые посвящены вложенным и динамическим операторам языка SQL. Отличительные особенности книги
Замечания для преподавателейПриступая к работе над этой книгой, автор задумывал ее как удобное пособие с доступным изложением материала для любых категорий читателей, независимо от степени их подготовки и опыта работы. Еще до того как было принято решение о запуске этого проекта, личный опыт автора, накопленный благодаря чтению большого количества учебников, а также в результате общения с коллегами, клиентами и студентами, показал, что существует множество вариантов изложения материала, которые могут нравиться или не нравиться отдельным читателям. Имея в виду эти соображения, автор выбрал для книги следующие стиль и структуру изложения.
Руководство инструктораОбширный дополнительный материал с многочисленными учебными ресурсами для этой книги можно получить в издательстве Addison Wesley Longman. Во вспомогательном издании Instructor's Guide (Руководство инструктора) представлен следующий материал.
Дополнительную информацию о руководстве инструктора и этой книге можно найти на Web-сервере издательства Addison Wesley Longman (http://www.awl-he.com/computing). Структура этой книгиЧасть I. Основные сведенияЧасть I, "Основные сведения", этой книги содержит вводное описание концепций систем баз данных и методов проектирования баз данных, а также знакомит читателя с реляционной моделью, которой и уделяется основное внимание. В главе 1, "Введение в базы данных", дается вводное описание основ управления базами данных, перечень проблем, существовавших при работе с предшественниками систем баз данных (т.е. с файловыми системами), а также приводится перечень преимуществ, достигаемых за счет использования баз данных. Здесь же дается описание учебного проекта DreamHome, который подробно рассматривается в этой книге и постоянно используется в качестве примеров. В главе 2, "Среда базы данных", рассматривается среда базы данных, обсуждаются преимущества трехуровневой архитектуры ANSI-SPARC, дается вводное описание самых популярных моделей данных, а также предлагается обзор функций, которые должны быть представлены в многопользовательской СУБД. В этой главе также рассматривается базовая архитектура программного обеспечения СУБД, изучение которой можно пропустить при первом знакомстве с основами управления базами данных. В главе 3, "Реляционная модель", приведено вводное описание понятий, лежащих в основе реляционной модели - наиболее популярной в настоящее время модели данных, которая чаще всего выбирается для типичных бизнес-приложений. После описания терминологии и представления связей с математическим понятием "отношения" рассматриваются правила поддержки целостности отношений, целостности сущностей и ссылочной целостности данных. Введение в реляционную алгебру и реляционное исчисление дано с представлением необходимых примеров, иллюстрирующих все операции. Его можно пропустить при первом знакомстве с основами управления базами данных. Однако знание основ реляционной алгебры необходимо для понимания принципов обработки запросов (глава 18) и фрагментации в распределенных СУБД (глава 19). Помимо этого, сравнительный анализ процедурной алгебры и непроцедурного исчисления может рассматриваться как полезное (хотя и не обязательное) введение перед изучением языка SQL, рассматриваемого в главах 13 и 14. Эта глава завершается обзором представлений, которые более подробно рассматриваются в главе 14. В главе 4, "Планирование, проектирование и администрирование базы данных", завершается вводное описание, составляющее первую часть книги. В ней представлен обзор основных этапов разработки и применения, т.е. всего жизненного цикла, информационных систем, а также обсуждается их связь с этапом создания приложений баз данных. В частности, подчеркивается важность проектирования баз данных и разъясняется, как этот процесс можно разделить на три фазы: концептуальную, логическую и физическую. Также рассматривается, как проектирование приложения (функциональный подход) влияет на проектирование базы данных (подход, основанный на данных). Решающим моментом всего процесса создания приложения баз данных является выбор подходящей целевой СУБД. В этой главе рассматривается процесс выбора СУБД и приведены некоторые указания и рекомендации. Завершается глава обсуждением важности администрирования данных и администрирования базы данных. Часть II. МетодологияВ части 2, "Методология", этой книги излагается методология концептуального, логического и физического проектирования баз данных для реляционных СУБД. В главе 5, "Модель "сущность-связь", рассмотрены концепции предложенной Ченом модели "сущность-связь", или ER-модели (Entity-Relationship - ER), и расширенной ER-модели (Enhanced Entity-Relationship - EER), позволяющей разрабатывать более совершенные модели данных с использованием подклассов и суперклассов, включая специализацию/генерализацию и категоризацию. EER-моделирование представляет собой популярную технологию разработки высокоуровневой концептуальной модели данных и служит базовой технологией в представленной здесь методологии проектирования баз данных. Для демонстрации создания EER-модели используется рабочий пример - учебный проект DreamHome. В главе 6, "Нормализация", рассматриваются основные концепции нормализации - еще одной важной технологии, широко используемой в методологии логического проектирования баз данных. На рабочих примерах из учебного проекта DreamHome показано, как следует выполнять переход от макета, созданного в одной нормальной форме, к макету в другой нормальной форме, а также продемонстрированы преимущества, достигаемые за счет выполнения логического проектирования баз данных в соответстви с требованиями различных нормальных форм, вплоть до пятой нормальной формы. В главе 7, "Методология концептуального проектирования баз данных", представлена пошаговая методология концептуального проектирования баз данных. Показано, как разложить общее предметное поле проекта на составные и более управляемые части, руководствуясь отдельными пользовательскими представлениями, а также предложены рекомендации для идентификации сущностей, атрибутов, отношений и ключей. В главе 8, "Методология логического проектирования реляционных баз данных", представлена пошаговая методология логического проектирования реляционных баз данных. Показано, как концептуальная модель данных преобразуется в логическую модель данных, после чего выполняется проверка ее корректности в отношении необходимых транзакций и на соответствие общим требованиям нормализации. В завершение описания методологии логического проектирования показано, как объединить созданные локальные модели данных в единую глобальную модель данных, которая содержит все пользовательские представления для моделируемой области деятельности предприятия. В главе 9, "Методология физического проектирования реляционных баз данных", представлена пошаговая методология физического проектирования реляционных баз данных. Показано, как можно преобразовать глобальную модель данных, разработанную во время логического проектирования базы данных, в физический проект для выбранной (целевой) реляционной СУБД. Эта методология позволяет добиться повышения производительности полученной реализации базы данных за счет использования рекомендаций по выбору файловой организации и структур хранения данных, а также за счет применения денормализации, т.е. введения контролируемой избыточности данных. В главах 10, "Пример разработки концептуального проекта базы данных", и 11, "Пример разработки логического проекта базы данных", рассматривается вполне реалистичный учебный пример применения методологии концептуального и логического проектирования базы данных в проекте DreamHome. Эти главы иллюстрируют процесс создания и проверки корректности локальных моделей данных для двух пользовательских представлений, а также методы их слияния с целью получения обобщенного глобального представления. В главе 12, "Пример разработки физического проекта базы данных", предлагается конкретный пример использования методологии физического проектирования базы данных в учебном проекте DreamHome. Он иллюстрирует практическую реализацию части глобальной логической модели данных, предложенной в главе 11, в среде целевой СУБД Microsoft Access. Часть III. Языки баз данныхВ части III, "Языки баз данных", описываются два основных языка реляционных СУБД: SQL и QBE. В главе 13, "Язык SQL", дается описание стандарта языка SQL выпуска 1992 года - SQL-92. Эта глава представляет собой вводный курс с рядом рабочих примеров, которые демонстрируют основные концепции языка SQL. Основное внимание в ней уделяется операторам управления данными: SELECT, INSERT, UPDATE и DELETE. Здесь также описаны типы данных, принятые в SQL-92, и показаны основные типы операторов определения данных. В главе 14, "Дополнительные средства языка SQL", рассмотрены дополнительные возможности стандарта SQL-92. Эта глава также является вводным курсом. В ней рассматриваются представления, средства поддержки целостности (Integrity Enhancement Feature - IEF) и дополнительные возможности операторов определения данных, в том числе операторов управления доступом GRANT и REVOKE. Здесь же рассматриваются вложенные и динамические операторы SQL (в сочетании с примерами простых программ на языке С). В этой главе также обсуждается стандарт ODBC (Open Database Connectivity), который фактически стал промышленным стандартом доступа к гетерогенным базам данных SQL. При предварительном изучении СУБД три последних раздела этой главы можно пропустить. В главе 15, "Язык QBE", на практических примерах показано использование интерактивного языка запросов по образцу - Query-by-Example (QBE), - который приобрел репутацию одного из самых простых средств доступа к информации в базах данных и вполне доступен даже начинающим пользователям. Возможности языка QBE продемонстрированы на примере конкретной целевой СУБД - Microsoft Access. Часть IV. Некоторые аспекты эксплуатации баз данныхВ части IV, "Некоторые аспекты эксплуатации баз данных", рассмотрены три специальные темы, которые, по мнению автора, необходимо включать в любой современный учебный курс по СУБД. В главе 16, "Защита баз данных", рассмотрены вопросы защиты базы данных, причем не только в контексте безопасности самой базы данных, но и в контексте защиты всей среды СУБД. В этой главе обсуждаются различные решения, как связанные с компьютерами, так и не связанные с ними. Глава завершается рассмотрением методов анализа риска. В главе 17, "Управление транзакциями", основное внимание сконцентрировано на трех функциях, которые должны поддерживать любые современные СУБД: на управлении транзакциями, средствах поддержки согласованности данных и средствах восстановления. Эти функции предназначены для поддержания стабильности и непротиворечивости базы данных при одновременном доступе к ней большого количества пользователей, а также при наличии сбоев отдельных компонентов аппаратного и программного обеспечения. В этой главе также обсуждаются усовершенствованные модели управления транзакциями, которые более пригодны для транзакций с длительным временем выполнения. В главе 18, "Обработка запросов", описываются вопросы обработки и оптимизации запросов. В ней рассмотрены две основные технологии оптимизации запросов: использование эвристических правил, которые упорядочивают операторы запроса, и технология, которая сравнивает различные стратегии на основе оценки относительных затрат и выбирает ту, которая позволяет минимизировать использование ресурсов. Часть V. Новые направленияВ части V, "Новые направления", описываются распределенные СУБД и объектно-ориентированные СУБД. Технология распределенных СУБД является одним из важнейших текущих достижений в области систем баз данных. Предыдущие главы этой книги были посвящены централизованным СУБД - т.е. системам с единственной логической базой данных, расположенной в одном месте (на одном компьютере), под управлением единственной СУБД. В главе 19, "Концепции и разработка распределенных СУБД", обсуждаются концепции и назначение распределенных СУБД, при работе с которыми пользователи могут осуществлять доступ к базам данных, расположенным не только на их собственном компьютере, но и на других удаленных компьютерах. Существует мнение, что в течение следующих нескольких лет централизованные СУБД станут "антикварной редкостью", поскольку в большинстве организаций они будут заменены распределенными СУБД. В главе 20, "Распределенные СУБД - дополнительные концепции", рассматриваются более глубокие понятия, связанные с распределенными СУБД. В частности, в ней уделяется большое внимание протоколам управления распределенными транзакциями, поддержке согласованности данных, предотвращению взаимных блокировок и процедурам восстановления базы данных. Кроме того, в этой главе обсуждается новый протокол обработки распределенных транзакций X/Open, а также серверы репликации, выступающие в качестве альтернативы распределенным СУБД. Во всех упомянутых главах этой книги рассматриваются преимущественно реляционная модель и реляционные системы. Это можно объяснить тем, что такие СУБД теперь доминируют в традиционных бизнес-приложениях баз данных. Однако реляционные системы не лишены недостатков, поэтому развитие объектно-ориентированных СУБД можно считать наибольшим достижением в области баз данных, поскольку они позволяют эти недостатки устранить. Суть этой новейшей технологии подробно излагается в главах 21, 22 и 23. В главе 21, "Введение в объектные СУБД", представлено введение в объектно-ориентированные СУБД, начинающееся с рассмотрения новых типов приложений баз данных, появившихся в последнее время. Здесь же обсуждаются недостатки реляционной модели данных, которая не годится для приложений этих типов, а также рассмотриваются основные концепции объектно-ориентированного подхода. В главе 22, "Объектно-ориентированные СУБД", рассматриваются объектно-ориентированные СУБД (ОО СУБД), причем глава начинается с введения в объектно-ориентированные модели данных и перманентные языки программирования. В этой главе обсуждаются различия между используемой в обычных СУБД двухуровневой моделью хранения и одноуровневой моделью хранения в ОО СУБД, а также их влияние на доступ к данным. В ней также рассматриваются различные подходы к реализации функций хранения в существующих языках программирования, разные технологии смешивания указателей, управление версиями, схема эволюции и существующие архитектуры ОО СУБД. В этой главе также описывается новая объектная модель, предложенная группой ODMG, которая фактически стала стандартом ОО СУБД, а также показано, как представленная в части II этой книги методология может быть расширена с целью использования в среде объектно-ориентированных баз данных. В главе 23, "Объектно-реляционные СУБД", описывается объектно-реляционная СУБД, а также подробно рассматриваются функции управления объектами, которые предлагается включить в следующий выпуск стандарта языка SQL - SQL3. В этой главе также обсуждается, как следует модернизировать обработку и оптимизацию запросов с целью более эффективной поддержки расширенного набора типов данных. Часть VI. Перспективные направленияВ заключительной части книги рассматриваются четыре новые области, значение которых возрастает с каждым днем, а именно: интеграция СУБД в среду World Wide Web, использование хранилищ данных, применение технологии оперативной аналитической обработки и поддержка концепции "разработки" данных. В главе 24, "Web-технологии и СУБД", обсуждается интеграция СУБД в среду World Wide Web. После краткого введения в основы Internet и Web-технологии, в этой главе анализируются возможности использования Web в качестве платформы для развертывания приложений баз данных, а также обсуждаются недостатки и преимущества этого подхода. Рассматривается также несколько других вариантов интеграции СУБД в среду WWW, включая сценарии на языке CGI, серверные расширения, аплеты языка Java, языки сценариев, активные страницы Active Server Pages и универсальный сервер данных Universal Data Server фирмы Oracle. В этой главе также обсуждаются свойственные Web проблемы, связанные с безопасностью данных и приложений, а также предлагаются некоторые способы их разрешения. В главе 25, "Хранилища данных", обсуждается технология использования хранилищ данных (warehouse): что это такое, история их развития и области применения. Кроме того, в ней описаны достоинства и недостатки, присущие подобным системам. В главе рассматриваются архитектура хранилища данных, его основные компоненты, а также связанные с ним инструменты и технологии. Здесь также обсуждаются концепция магазина данных (data mart) и все вопросы, связанные с разработкой и управлением магазинами данных. Глава завершается описанием подхода к проектированию базы данных, предназначенной для использования в качестве хранилища или магазина данных, создаваемого для обслуживания системы принятия решений. В главе 26, "OLAP и разработка данных", описываются методы оперативной аналитической обработки (OLAP) и новая технология, получившая название "разработка данных" (data mining). В ней также рассматриваются концепции многомерных баз данных и обсуждаются характеристики трех основных типов инструментов для OLAP-обработки, а именно: инструменты многомерной OLAP-обработки (Multidimensional Online Analytical Processing - MOLAP), реляционной OLAP-обработки (Relational Online Analytical Processing - ROLAP) и среды управляемых запросов (Managed Query Environment - MQE). Здесь же описываются способы расширения SQL для обеспечения функций анализа сложных данных (например, Red Brick Intelligent SQL (RISQL)). Кроме того, в этой главе представлены понятия, связанные с разработкокй данных, приведены основные характеристики операций, технологий и инструментов разработки данных, рассмотрена связь между разработкой данных и хранилищами данных. ПриложенияВ приложении А, "Учебный проект Wellmeadows Hospital", вниманию читателей предлагается дополнительный учебный проект - Wellmeadows Hospital, - который может быть использован в качестве шаблона курсового или дипломного проекта. В приложении Б, "Структура данных в файлах с различной организацией", предлагаются основные сведения о файловой организации и структурах хранения данных, которые необходимо знать, чтобы понимать методологию физического проектирования баз данных, обсуждаемую в главе 9, а также принципы обработки запросов, описываемые в главе 18. В приложении В, "Сетевая модель данных", излагаются основные сведения о сетевой модели данных. В приложении Г, "Иерархическая модель данных", приведены основные сведения об иерархической модели данных. В приложении Д, "Сравнение сетевых, иерархических и реляционных СУБД", дается сравнительный анализ свойств трех традиционных моделей баз данных: реляционной, сетевой и иерархической. В приложении Е, "Краткий обзор методологии проектирования реляционных баз данных", предложен краткий обзор этапов методологии концептуального, логического и физического проектирования баз данных, представленной в главах 7, 8 и 9. В приложении Ж, "Примеры Web-сценариев", рассмотрены некоторые примеры Web-сценариев, дополняющие материал главы 24, посвященной интеграции Web и СУБД. Благодарности от авторовЭта книга является результатом многолетнего опыта научной и преподавательской работы авторов. Поэтому довольно трудно перечислить всех тех, кто прямо или косвенно помогал нам. Так, в свое время некоторые высказанные идеи могли показаться довольно незначительными, но впоследствии оказали на нас решающее влияние. Мы приносим извинения всем тем, кого забыли упомянуть в этой связи. Но прежде всего особую благодарность и извинения мы хотели бы выразить нашим семьям, которые на протяжении многих лет были забыты, а в моменты наибольшей работы даже игнорировались нами. За участие в работе над первым изданием мы хотели бы поблагодарить наших редакторов доктора Саймона Пламтри (Simon Plumtree) и Никки Джагера (Nicky Jaeger) за их помощь, одобрение и профессионализм; нашего производственного редактора Мартина Титлера (Martin Tytler) и редактора копирования Лайонела Брауни (Lionel Browne). Мы также хотели бы поблагодарить рецензентов первого издания за их существенные замечания, предложения и рекомендации. В частности, хотелось бы упомянуть Вильяма Х. Гвинна (William H. Gwinn), инструктора Технического Университета Техаса (Texas Tech University); Адриана Ларнера (Adrian Larner) из Университета Де Монфорта, Лечестер (University De Montfort, Leicester); профессора Эндрю Мак-Гетрика (Andrew McGettrick) из Университета Страсклайда (University of Strathclyde); профессора информатики Денниса Мак-Леода (Dennis McLeod) из Университета Южной Калифорнии (University of Southern California); адъюнкт-профессора Жозефины Де-Гузман Мендоза (Josepnine DeGuzman Mendoza) из Калифорнийского Университета (California State University); Джефа Нотона (Jeff Naughton) и профессора А.Б. Шварцкопфа (A.B. Schwarzkopf) из Университета Оклахомы (University of Oklahoma); адъюнкт-профессора Джанпин Сан (Junping Sun) из Нового Юго-Восточного Университета (Nova Southeastern University); адъюнкт-профессора Донована Юнга (Donovan Young) из Технического Университета Джорджии (Georgia Tech); преподавателя информатики доктора Барри Иглстоуна (Barry Eaglestone) из Университета Бредфорда (University of Bradford); Джона Вэйда (John Wade) из фирмы IBM. Мы благодарим и многих других, чьи имена нам известны, за время, затраченное ими на работу над рукописью. За участие в работе над вторым изданием мы прежде всего хотели бы поблагодарить нашего редактора Салли Мортимор (Sally Mortimore), а также Мартина Клопстока (Martin Klopstock) и Дилана Рейзенбергера (Dylan Reisenberger) из нашей рабочей команды. Мы также хотели бы поблагодарить рецензентов второго издания за их замечания, предложения и советы. В частности, хотелось бы упомянуть Стефано Цери (Stephano Ceri) из Политехнического Университета Милана (Politechnico di Milano); Ларса Жильберга (Larsa Gillberg) из Университета Средней Швеции, Остерсунд (Mid Sweden University, Oestersund); Дона Джутла из Университета Св. Марии, Галифакс, Канада (St Mary▓s University, Halifax, Canada); Джули Мак-Канн из Городского Университета Лондона (City University, London); Муниндара Сингха (Munindar Singh) из Государственного Университета штата Северная Каролина (North Carolina State University); Хью Дарвина (Hugh Darwen), Харсели, Великобритания (Hursely, UK); Клода Делобель (Claude Delobel), Париж, Франция (Paris, France); Денниса Мюррея (Dennis Murray), Рединг, Великобритания (Reading, UK); а также сотрудников нашего факультета Джона Кавала (John Kawala) и доктора Питера Кнагса (Peter Knaggs). Мы также хотели бы выразить свою благодарность Малкольму Бронте-Стюарту (Malcolm Bronte-Stewart) за идею учебного проекта DreamHome, Мойре О▓Доннелл (Moira O▓Donnell) за тщательную подготовку учебного проекта Wellmeadows Hospital, а также Линдону Мак-Леоду (Lyndonne MacLeod), секретарю Томаса, и Джун Блэкберн (June Blackburn), секретарю Каролин за их помощь и поддержку в течение этих лет. Томас М. Конноли Благодарности от издателейИздатели хотели бы выразить благодарность перечисленным ниже фирмам за разрешение опубликовать принадлежащие им материалы: фирме Oracle за любезное разрешение привести рис. 24.13 и 24.14; издательству McGraw-Hill Companies, Inc., Нью-Йорк, за разрешение опубликовать рис. 24.15 , впервые появившийся в статье "Secure Electronic Transactions Protocol" июньского номера журнала BYTE Magazine за 1997 год; корпорации Microsoft Corporation за разрешение включить копию окна броузера Microsoft Internet Explorer - рис. Ж.2; корпорации Netscape Communications Corporation за разрешение использовать копию окна броузера Netscape Navigator - рис. 24.2 и 24.6. Корпорация Netscape Communications Corporation не санкционировала, не спонсировала, не рекомендовала, не одобряла эту публикацию и, таким образом, не отвечает за ее содержание. Логотипы Netscape и Netscape Communications Corporate являются торговыми марками и именами корпорации Netscape Communications Corporation. Издатели всегда пытались найти владельцев авторских прав и получить их разрешение на публикацию материалов, но в некоторых случаях это сделать было просто невозможно. Мы выражаем благодарность владельцам авторских прав на материалы, которые приведены здесь без упоминания их авторства, и предлагаем им связаться с издателем. |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
|
В избранное | ||