Программирование баз данных SQL

Профессиональные компьютерные книги.

Карвин Б. «Программирование баз данных SQL. Типичные ошибки и их устранение» Рид Групп, 2012 год, 338 стр., ISBN 978-5-4252-0510-0; (8,72 мб. djvu)

Прочитав эту книгу вы сможете познакомится с передовыми решениями, улучшить навыки программирования на языке SQL и обойти возможные ловушки, которые описаны в данной книге (называемые, автором — антипаттерны). Все темы раскрываются довольно подробно, а внимание концентрируется на детальном рассмотрении кода и алгоритма его работы. Уровень книги рассчитан не на новичков, но даже опытные SQL-программисты смогут найти в ней что-нибудь новое. Книга содержит четыре раздела:

  1. Антипаттерны логической структуры базы данных ( оптимальные способы организации и взаимосвязи данных);
  2. Антипаттерны физической структуры базы данных (технологии работы с таблицами и индексами, а также выбор типов данных);
  3. Антипаттерны запросов (создание SQL-запросов);
  4. Антипаттерны разработки приложений (использование SQL с приложениями на языках C++, Java, Python или Ruby);

В приложениях приводится практическое описание некоторой теории реляционных баз данных.
Предлагаемые решения охватывают множество случаев: от традиционных «Не могу поверить, что это опять сделал я» до хитрых сценариев, где оптимальный вариант противоречит догмам, на которых выросли все профессионалы.

Оглавление книги

Содержание.

Глава 1. Введение 10
1.1. Для кого предназначена эта книга 11
1.2. Что содержится в этой книге 12
1.3. Чего нет в этой книге 14
1.4. Условные обозначения 15
1.5. Пример базы данных 16
1.6. Благодарности 20

Часть 1. Антипаттерны логической структуры базы данных 21

Глава 2. Блуждания без ориентиров 21
2.1. Цель: хранение многозначных атрибутов 22
2.2. Антипаттерн: форматирование списков с запятыми-разделителями 23
2.3. Способы распознавания антипаттерна 26
2.4. Допустимые способы использования антипаттерна 27
2.5. Решение: создание таблицы пересечений 27

Глава 3. Простые деревья 32
3.1. Цель: хранение и запрос иерархий 32
3.2. Антипаттерн: постоянная зависимость от одного родителя 33
3.3. Способы распознавания антипаттерна 37
3.4. Допустимые способы использования антипаттерна 38
3.5. Решение: использование альтернативных моделей дерева 40

Глава 4. Обязательные идентификаторы 54
4.1. Цель: создание соглашений первичного ключа 1 55
4.2. Антипаттерн: один размер для всех случаев 57
4.3. Способы распознавания антипаттерна 61
4.4. Допустимые способы использования антипаттерна 62
4.5. Решение: специальная подгонка 62

Глава 5. Записи без ключей 66
5.1. Цель: упрощение архитектуры базы данных 67
5.2. Антипаттерн: пропуск ограничений 67
5.3. Способы распознавания антипаттерна 71
5.4. Допустимые способы использования антипаттерна 71
5.5. Решение: объявление ограничений 72

Глава 6. EAV (Объект-Атрибут-Значение) 75
6.1. Цель: поддержка атрибутов переменных 75
6.2. Антипаттерн: использование таблицы общих атрибутов 77
6.3. Способы распознавания антипаттерна 83
6.4. Допустимые способы использования антипаттерна 83
6.5. Решение: моделирование подтипов 85

Глава 7. Полиморфные ассоциации 93
7.1. Цель: ссылка на несколько родительских объектов 94
7.2. Амтипатгерп: использование внешнего ключа двойного назначения 95
7.3. Способы распознавания антипаттерна 98
7.4. Допустимые способы использования антипаттерна 99
7.5. Решение: упрощение отношений 100

Глава 8. Многостолбчатые атрибуты 108
8.1. Цель: хранение многозначных атрибутов 108
8.2. Антипаттерн: создание нескольких столбцов 109
8.3. Способы распознавания антипаттерна 113
8.4. Допустимые способы использования антипаттерна 114
8.5. Решение: создание зависимой таблицы 115

Глава 9. Трибблы метаданных 117
9.1. Цель: поддержка масштабируемости 118
9.2. Антипатгерн: клонирование таблиц или столбцов 118
9.3. Способы распознавания антипаттерна 124
9.4. Допустимые способы использования антипаттерна 125
9.5. Решение: разделение и нормализация 126

Часть II. Антипаттерны физической структуры базы данных 130

Глава 10. Ошибки округления 130
10.1. Цель: использование дробных значений вместо целых чисел 131
10.2. Антипаттерн: использование типа данных FLOAT 131
10.3. Способы распознавания антипаттерна 135
10.4. Допустимые способы использования антипаттерна 136
10.5. Решение: использование типа данных NUMERIC 136

Глава 11. 31 разновидность 138
11.1. Цель: ограничение столбца конкретными значениями 138
11.2. Антипаттерн: задание значений в определении столбца 139
11.3. Способы распознавания антипаттерна 143
11.4. Допустимые способы использования антипаттерна 144
11.5. Решение: задание значений в данных 144

Глава 12. Фантомные файлы 148
12.1. Цель: хранение изображений и других большеразмерных файлов 149
12.2. Антипаттерн: предположение о необходимости использования файлов 149
12.3. Способы распознавания антипаттерна 153
12.4. Допустимые способы использования антипаттерна 154
12.5. Решение: использование типов данных BLOB по мере необходимости 155

Глава 13. Беспорядочное создание индексов 158
13.1. Цель: оптимизация производительности 159
13.2. Антипатгерн: использование индексов без какого-либо плана 159
13.3. Способы распознавания антипаттерна 164
13.4. Допустимые способы использования антипаттерна 165
13.5. Решение: использование процедуры MENTOR в отношении индексов 165

Часть III. Антипаттерны запросов 172

Глава 14. Боязнь неизвестного 172
14.1. Цель: распознавание отсутствующих значений 173
14.2. Антипатгерн: использование Null как обычного значения или наоборот 173
14.3. Способы распознавания антипаттерна 177
14.4. Допустимые способы использования антипаттерна 178
14.5. Решение: использование Null в качестве уникального значения 179

Глава 15. Неоднозначные группы 184
15.1. Цель: получение строки с наибольшим значением в группе 185
15.2. Антипаттерн: ссылка на несгруппированные столбцы 186
15.3. Способы распознавания антипаттерна 188
15.4. Допустимые способы использования антипаттерна 190
15.5. Решение: однозначное использование столбцов 191

Глава 16. Случайный выбор 197
16.1. Цель: выбор типовой строки 197
16.2. Антипаттерн: сортировка данных случайным образом 198
16.3. Способы распознавания антипаттерна 199
16.4. Допустимые способы использования антипаттерна 200
16.5. Решение: без какого-либо определенного порядка 200

Глава 17. Собственная поисковая система 205
17.1. Цель: полнотекстовый поиск 205
17.2. Антипаттерн: предикаты сопоставления с шаблонами 206
17.3. Способы распознавания антипаттерна 207
17.4. Допустимые способы использования антипаттерна 208
17.5. Решение: использование для работы подходящего инструмента 208

Глава 18. Запутанный запрос 221
18.1. Цель: уменьшение SQL-запросов 222
18.2. Антипаттерн: решение сложной проблемы за один шаг 222
18.3. Способы распознавания антипаттерна 225
18.4. Допустимые способы использования антипаттерна 225
18.5. Решение: разделяй и властвуй 226

Глава 19. Скрытые столбцы 232
19.1. Цель: уменьшение объема клавиатурного ввода 233
19.2. Антипаттерн: запутывающие комбинация клавиш 234
19.3. Способы распознавания антипаттерна 236
19.4. Допустимые способы использования антипаттерна 236
19.5. Решение: именование столбцов в явном виде 237

Часть IV. Антипаттерны разработки приложений 240

Глава 20. Считываемые пароли 240
20.1. Цель: восстановление или сброс паролей 240
20.2. Антипаттерн: хранение паролей в открытой текстовой форме 241
20.3. Способы распознавания антипаттерна 244
20.4. Допустимые способы использования антипаттерна 244
20.5. Решение: хранение пароля в виде беспорядочного набора символов 245

Глава 21. Инъекция SQL-кода 254
21.1. Цель: создание динамических SQL-запросов 255
21.2. Антипаттерн: выполнение непроверенных входных данных в качестве кода 256
21.3. Способы распознавания антипаттерна 263
21.4. Допустимые способы использования антипаттерна 264
21.5. Решение: никому нельзя доверять 264

Глава 22. Псевдоключ аккуратности 271
22.1. Цель: приведение данных в порядок 271
22.2. Антипаттерн: заполнение углов 272
22.3. Способы распознавания антипаттерна 275
22.4. Допустимые способы использования антипаттерна 275
22.5. Решение: преодоление проблемы 275

Глава 23. Незамечаемые недостатки 280
23.1. Цель: написание меньшего количества кода 281
23.2. Антипаттерн: трудновыполнимое дело 281
23.3. Способы распознавания антипаттерна 284
23.4. Допустимые способы использования антипаттерна 284
23.5. Решение: изящное восстановление после возникновения ошибок 285

Глава 24. Дипломатическая неприкосновенность 288
24.1. Цель: использование передовых методов работы 289
24.2. Антипаттерн: использование SQL как «вспомогательного» языка 289
24.3. Способы распознавания антипаттерна 290
24.4. Допустимые способы использования антипаттерна 291
24.5. Решение: формирование собирательной культуры качества 291

Глава 25. Волшебные бобы 301
25.1. Цель: упрощение моделей в архитектуре МУС 302
25.2. Антипаттерн: модель, представляющая собой активную запись 303
25.3. Способы распознавания антипаттерна 310
25.4. Допустимые способы использования антипаттерна 310
25.5. Решение: модель с активной записью 311

Часть V. Приложения 318

Приложение А. Правила нормализации 318
А.1. Что значит «реляционный»? 318
А.2. Мифы о нормализации 321
А.З. Что такое нормализация? 322
А.4. Здравый смысл 333
Мнения читателей о книге «Программирование баз данных SQL» 334

Скачать техническую литературу бесплатно8,72 мб. djvu

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