Практика разработки БД.

Дмитрий Осипов ” Базы данных и Delphi. Теория и практика” БХВ-Петербург, 2011 год, 752 стр. (16,6 мб. pdf)

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

Также рассмотрены вопросы безопасности БД, языки SQL и XML и др. Вторая часть расскажет о возможностях программных инструментов Delphi в области разработки приложений баз данных: технологии dbExpress, Interbase Express и ADO, работа с компонентами управления данными визуальной библиотеки Delphi, техническими возможностями многоуровневых приложений в DataSnap, отчеты и др. Книга полезна в качестве практического руководства по разработке и использованию БД с клиентскими приложениями.
ISBN 978-5-9775-0659-5

 

Оглавление.

ЧАСТЬ I. Введение в реляционные базы данных 5
ГЛАВА 1. Системы, основанные на файлах 7
Принцип построения систем, основанных на файлах 9
Недостатки систем, основанных на файлах 10
Пути устранения недостатков систем, основанных на файлах 13
Резюме 14

ГЛАВА 2. Эволюция моделей реализации данных 15
Необходимость моделирования 17
Иерархическая модель18
Сетевая модель 20
Попытки разработки стандарта БД 21
Реляционная модель 23
Объектно-ориентированная модель 25
Резюме 26

ГЛАВА 3. Функции и компоненты субд 27
Функциональные обязанности СУБД 27
Компоненты СУБД 29
Архитектурные решения доступа к БД 32
Файл-сервер 32
Клиент-сервер 34
Многоуровневые решения 36
Резюме 37

ГЛАВА 4. Реляционная модель данных 38
Сущность и атрибуты 39
Тип данных и домен 41
Связь 43
Реляционная таблица 45
Ключ 47
Целостность данных 48
Целостность доменов 48
Целостность сущностей 49
Ссылочная целостность 50
Корпоративная целостность 50
Реляционная алгебра 51
Резюме 56

ГЛАВА 5. Модель “сущность – связь” 57
Сущности и атрибуты в ER-модели 58
Подтипы сущностей 61
Связи в ER-модели 63
Сильные и слабые связи 66
Рекурсивная связь 67
Связи высокого порядка 68
Вариации ER-моделей 70
Резюме 72

ГЛАВА 6. Нормализация 73
Первая нормальная форма 76
Функциональная зависимость атрибутов 79
Порядок определения первичного ключа 81
Вторая нормальная форма 82
Третья нормальная форма 84
Нормальная форма Бойса—Кодда 86
Четвертая нормальная форма 87
Пятая нормальная форма 88
Резюме 90

ГЛАВА 7. Индексирование 91
Индексы на основе хеширования 93
Хеш-функции 95
Хеширование текстовых данных 96
Борьба с коллизиями 96
Индексы на основе B-деревьев 98
Битовые индексы 103
Правила назначения вторичных индексов 103
Резюме 104

ГЛАВА 8. Транзакции и параллельная обработка данных 105
Понятие транзакции 106
Проблемы параллельного доступа к данным 108
Потерянные обновления 108
Неактуальные чтения (“грязное чтение”) 109
Несогласованная обработка 110
Чтение строк-фантомов 111
Управление параллельными транзакциями 112
Метод блокировок 113
Метод временных меток 115
Метод двухфазной блокировки 116
Оптимистический подход 116
Уровни изоляции SQL-транзакций 117
Резюме 118

ГЛАВА 9. Проектирование БД 119
Понятие информационной системы 119
Этапы жизненного цикла базы данных 122
Планирование разработки БД 123
Определение и анализ требований к системе 123
Проектирование БД 127
Выбор СУБД 130
Создание прикладного программного обеспечения 131
Тестирование 132
Реализация 133
Эксплуатация и сопровождение 133
Резюме 134

ГЛАВА 10. Защита БД 135
Откуда исходят угрозы 136
Правила защиты БД 139
Аутентификация и авторизация 140
Криптографическая защита 141
Резервное копирование 143
Аудит событий безопасности 144
Модернизация системного и прикладного ПО 145
Доступ к данным только при посредничестве представлений и хранимых процедур 145
Резюме 146

ГЛАВА 11. Знакомство с SQL 147
Назначение SQL 149
Типы данных SQL 150
Предопределенные типы данных 152
Непредопределенные типы данных 157
Массив 158
Мультимножество 158
Пользовательский тип 159
Другие типы 160
Определение констант 160
Преобразование данных 161
Операторы 162
Встроенные функции 163
Резюме 164

ГЛАВА 12. Построение запросов 165
Порядок сортировки — ORDER BY 167
Условие отбора данных — WHERE 167
Сравнение 168
Попадание в диапазон — BETWEEN 169
Соответствие шаблону — LIKE 169
Проверка неопределенного значения — IS NULL 170
Принадлежность множеству — IN, ALL, ANY, SOME 170
Предикат существования — EXISTS 171
Многотабличные запросы 171
Слияние UNION 173
Объединение ON 173
Объединение USING 176
Агрегирующие функции 176
Группировка данных — GROUP BY 177
Дополнительная фильтрация группы строк — HAVING 178
Оконные функции 178
Рекурсивные запросы 182
Резюме 184

ГЛАВА 13. Манипулирование данными и управление транзакциями 185
Язык манипулирования данными DML 185
Вставка, инструкция INSERT 185
Редактирование, инструкция UPDATE 187
Удаление, инструкция DELETE 188
Слияние данных, инструкция MERGE 190
Транзакции 191
Диагностирование ошибок в работе транзакции 194
Настройка уровня изоляции 196
Резюме 197

ГЛАВА 14. Определение данных в SQL 198
Базы данных (схемы) 198
Таблицы 200
Индексы 205
Домены 208
Представления (виртуальные таблицы) 209
Хранимые процедуры 210
Триггеры 212
Курсоры 217
Управление доступом к данным 220
Управление наборами привилегий 221
Предоставление привилегий 222
Лишение привилегий 224
Резюме 225

ГЛАВА 15. Основы XML 226
Правильность и допустимость документа 229
Построение простейшего документа XML 229
Элементы 230
Специальные символы 232
Атрибуты 232
Пространство имен 233
Определение документа 236
DTD 236
Хранение DTD во внешнем файле 240
Резюме 242

ГЛАВА 16. XML schemas 243
Определение элемента <element> 246
Тип данных 248
Производные типы <simpleType> 248
Глобальное и локальное объявление 252
Квалифицирование элемента 252
Ограничения на число элементов 253
Значение по умолчанию и фиксированное значение 253
Создание сложных структур <complexType> 254
Определение атрибута <attribute> 256
Подключение XML-схемы к документу 257
Пример схемы computers.xsd 258
Пример документа computers.xml 261
Резюме 262

ЧАСТЬ II. Проектирование приложений БД в Delphi 263
ГЛАВА 17. Концепция приложения БД Delphi 265
Пример простейшего приложения БД 265
Архитектура приложения БД 269
Общая характеристика компонентов соединения с БД 271
Общая характеристика компонентов наборов данных 271
Источник данных 273
Общая характеристика компонентов управления данными 274
Резюме 275

ГЛАВА 18. Универсальный набор данных tdataset 276
Функционал набора данных 278
Открытие и закрытие набора данных 278
Обновление набора данных 279
Перемещение по набору данных 280
Создание закладок и переход к закладке 282
Состояние набора данных 284
Редактирование записей в наборе 286
Организация доступа к отдельному полю 288
Вычисляемые поля 290
Агрегатное поле 290
Фильтрация набора данных 291
Организация поиска данных 292
Обработка событий 294
Кэширование данных 295
Взаимодействие с элементами управления 296
Резюме 297

ГЛАВА 19. Общая характеристика полей набора данных 298
Поле таблицы — класс TField 298
Классификация полей по функциональному назначению 301
Классификация полей по типу хранимых данных 301
Обращение к полю 303
Доступ к данным поля 304
Низкоуровневый доступ к данным 306
Преобразование типа данных 307
Размер поля 308
Значение по умолчанию 309
Ограничения на ввод данных 310
Маска ввода 311
Индексные поля 312
Отображение данных 312
Обработка событий 314
Поля подстановки 315
Вычисляемые поля 322
Числовые поля, класс TNumericField 324
Поля целых чисел TLargeintField, TIntegerField, TSmallintField, TWordField, TAutoIncField 326
Поля вещественных чисел TFloatField и TCurrencyField 326
Бинарно-кодированные десятичные поля TBCDField и TFMTBCDField 327
Текстовые поля, TStringField 328
Поле глобального идентификатора, TGuidField 329
Логическое поле, TBooleanField 330
Бинарные поля TBinaryField, TBytesField и TVarBytesField 330
Дата и время, поля TDateTimeField, TDateField и TTimeField 330
Дата и время, поле TSQLTimeStampField 331
Поля больших бинарных объектов, TBlobField, TGraphicField, TMemoField и TWildMemoField 331
Композитные поля, TObjectField 338
Резюме 340

ГЛАВА 20. Вспомогательные классы набора данных 341
Коллекция TParams и динамический SQL 341
Параметр TParam 344
Описание структуры таблицы и ее индексов 347
Коллекция полей структуры таблицы TFieldDefs 349
Определение поля, класс TFieldDef 351
Коллекция структуры индексов таблицы, класс TIndexDefs 352
Определение индекса, класс TIndexDef 353
Пример создания таблицы 354
Резюме 356

ГЛАВА 21. Клиентский набор данных TClientDATASet 357
Проекты БД, основанные на файлах 358
Загрузка и сохранение данных 361
Требования к структуре XML 365
Хранение данных в компоненте 366
Управление данными 367
Работа с индексами 370
Определение диапазона 373
Ограничения 376
Применение агрегирующих функций 376
Агрегат, класс TAggregate 377
Агрегатные поля TAggregateField 378
Место TClientDataSet в многоуровневых проектах БД 379
Работа в клиентских приложениях DataSnap ранних версий 380
Сохранение данных на сервере 381
Отмена изменений 382
Применение точек сохранения 383
Обработка ошибок 383
Оптимизация пакета с данными 385
Обновление данных 386
Выполнение команд SQL 387
Резюме 387

ГЛАВА 22. Введение в технологию ADO 388
Взаимодействие ADO и компонентов VCL 389
Строка соединения ADO 392
Соединение с хранилищем данных, компонент TADOConnection 393
Установка соединения 393
Пример соединения без регистрации пользователя 397
Регистрация пользователя 402
Разрыв соединения 408
Информирование о соединении 408
Отправка команд 410
Управление подчиненными компонентами dbGo 413
Транзакции 413
Кэширование 415
Сервисные методы модуля ADODB 416
Резюме 418

ГЛАВА 23. Наборы данных ADO 419
Командный объект — TADOCommand 419
Коллекция ошибок Errors и объект ошибки Error 424
Набор данных ADO, компонент TADODataSet 425
Интерфейс множества записей _Recordset 426
Доступ к хранилищу данных 427
Выбор библиотеки курсора 428
Редактирование данных 429
Перемещение по множеству строк 430
Особенности применения поля BCD 432
События TCustomADODataSet 432
Работа с индексами 436
Сортировка записей 436
Поиск данных 436
Особенности изоляции транзакций 437
Фильтрация множества записей 438
Кэширование записей 438
Фильтрация записей в кэше 440
Организация отложенного обновления данных в ADO 441
Портфельный режим обработки данных 443
Управление данными ADO в стиле Delphi 444
Таблица TADOTable 445
Организация отношения “главная – подчиненная таблица” 446
Запрос TADOQuery 448
Хранимая процедура TADOStoredProc 450
Резюме 452

ГЛАВА 24. Доступ к БД InterBase 453
Доступ к базе данных, компонент TIBDatabase 454
Выбор диалекта ISQL 455
Создание и уничтожение базы данных 456
Соединение с базой данных 457
Регистрация пользователя 459
Разрыв соединения 460
Информирование о составе БД 462
Управление транзакциями 463
Контроль за событиями 464
Совместная работа с SQL монитором 464
Транзакция, компонент TIBTransaction 465
Управление транзакцией 466
Тайм-аут транзакции 468
Диагностика состояния транзакции 469
Параметры транзакции 469
Информация об объектах БД, компонент TIBExtract 471
События InterBase, компонент TIBEvents 473
Информация о БД, компонент TIBDatabaseInfo 474
Монитор SQL, TSQLMonitor 476
Файл инициализации БД, TIBDataBaseINI 476
Резюме 478

ГЛАВА 25. Наборы данных InterBase 479
Инструкция SQL, компонент TIBSQL 480
Подготовка к работе 480
Обслуживание полученного набора данных 482
Наборы данных InterBase, компонент TIBDataSet 483
Подготовка к работе 483
Обработка событий 485
Генератор значений 486
Особенности редактирования данных 488
Работа в режиме кэширования обновлений 488
Перемещение по записям 490
Фильтрация данных 490
Запрос, компонент TIBQuery 491
Редактирование данных, доступных только для чтения 492
Хранимая процедура, компонент TIBStoredProc 492
Таблица, компонент TIBTable 494
Экспорт-импорт данных 494
Модифицируемый запрос, компонент TIBUpdateSQL 496
Диалог фильтрации, компонент TIBFilterDialog 498
Резюме 500

ГЛАВА 26. Администрирование сервера InterBase 501
Свойства сервера, TIBServerProperties 505
Сервис лицензирования, TIBLicensingService 510
Конфигурирование сервера, TIBConfigService 511
Ведение журнала транзакций 514
Протокол работы сервера, TIBLogService 517
Статистика, TIBStatisticalService 518
Проверка БД, TBDValidationService 520
Управление учетными записями, TIBSecurityService 522
Резервное копирование и восстановление, TIBBackupService и TIBRestoreService 528
Резюме 532

ГЛАВА 27. Технология доступа к данным DBexpress 533
Соединение с сервером БД, компонент TSQLConnection 534
Настройка компонента 535
Управление соединением 537
Создание БД 539
Создание подключения в Data Explorer 539
Пример подключения 542
Управление подчиненными наборами данных 547
Управление транзакциями 547
Выполнение SQL-инструкций 548
Ограничение числа выполняющихся инструкций 549
Информирование о БД 549
Аутентификация пользователя в DataSnap 551
Мониторинг работы программы, TSQLMonitor 551
Резюме 553

ГЛАВА 28. Наборы данных DBexpress 554
Базовый класс TCustomSQLDataSet 555
Формирование инструкций SQL 556
Получение системной информации 557
Набор данных dbExpress, компонент TSQLDataSet 561
Особенности обслуживания BLOB-полей 563
Таблица TSQLTable 563
Запрос TSQLQuery 565
Хранимая процедура TSQLStoredProc 565
Простой набор данных TSimpleDataSet 567
Резюме 569

ГЛАВА 29. Интерфейс приложения и компоненты Data Access 570
Источник данных — компонент TDataSource 570
Общие черты компонентов отображения данных 572
Сетка базы данных — компонент TDBGrid 573
Одновременный выбор нескольких строк 575
Колонки сетки 576
Коллекция колонок — класс TDBGridColumns 576
Колонка — класс TColumn 578
Обработка событий 582
События прорисовки данных 583
Статический текст — компонент TDBText 585
Строка ввода — компонент TDBEdit 586
Многострочный редактор — TDBMemo 587
Редактор расширенного формата — TDBRichEdit 588
Изображение — компонент TDBImage 588
Список — TDBListBox 589
Комбинированный список — TDBComboBox 590
Группа переключателей — TDBRadioGroup 590
Флажок — TDBCheckBox 591
Компонент — TDBCtrlGrid 591
Поля подстановки 594
Список подстановки — TDBLookupListBox 595
Комбинированный список подстановки — TDBLookupComboBox 596
Навигатор — TDBNavigator 596
Резюме 598

ГЛАВА 30. Нестандартные решения для стандартных компонентов 599
Компоненты-списки 599
Компонент TListView 604
Сетка, компонент TStringGrid 607
Иерархические данные 610
Многотабличное представление иерархических данных 610
Рекурсивная связь 611
Инициализация проекта 614
Новая запись 615
Сбор данных 617
Очистка данных 618
Редактирование записи 619
Удаление записи 620
Сортировка узлов 621
Переподчинение узлов 623
Резюме 628

ГЛАВА 31. Многоуровневые БД на основе DataSnap 629
Архитектура трехзвенного проекта БД DataSnap 630
Сервер TDSServer 633
Класс сервера TDSServerClass 637
Обмен данными между клиентом и сервером, компоненты TDSTCPServerTransport и TDSHTTPService 638
Аутентификация, TDSHTTPServiceAuthenticationManager 641
Метод сервера TSqlServerMethod 641
Пример проекта DataSnap 642
Регистрация службы 648
Подготовка клиентского приложения 649
Подключение сервера приложений к БД 651
Получение данных клиентским приложением 652
Реализация на сервере метода вставки новой записи 654
Доступ к методу вставки записи на стороне клиента 655
Архитектура DataSnap, совместимая со старыми клиентскими приложениями 655
Интерфейс IAPPServer 656
Провайдер набора данных, компонент TDataSetProvider 658
Подключение к провайдеру набора данных, компонент TDSProviderConnection 664
Клиентское приложение БД на основе IAppServer 665
Механизм обратного вызова 666
Резюме 669

ГЛАВА 32. Управление службой сервера приложений DataSnap 670
Менеджер управления службами 671
Работа со службой 672
Пример управляющего приложения SCP 673
Доработка сервиса DataSnap 680
Создание модуля панели управления 682
Резюме 686

ГЛАВА 33. Отчеты Rave Reports 687
Обзор компонентов Rave Reports 687
Соединение TRvCustomConnection 688
Проект TRvProject 688
Системный компонент TRvSystem 689
Компоненты экспорта отчета в файл 690
Пример работы с редактором Rave Reports 690
Вызов отчета из приложения 696
Резюме 697

ГЛАВА 34. Разработка динамических библиотек для проектов БД 698
Общая характеристика DLL 698
Создание шаблона динамической библиотеки в Delphi 700
Экспортирование функций DLL 702
Пример простой DLL 703
Взаимодействие динамической библиотеки с проектом 704
Размещение файла DLL 705
Явная загрузка DLL 705
Неявная загрузка DLL 706
Пример DLL универсального генератора отчетов 707
Резюме 712
Скачать книгу бесплатно16,6 мб. pdf

Похожая литература