004
К21


    Карвин, Билл.
    Программирование баз данных SQL. Типичные ошибки и их устранение [Текст] : пер. с англ. / Б. Карвин. - М. : Рид Групп, 2012. - 332, [1] с. - (Профессиональные компьютерные книги). - ISBN 978-5-4252-0510-0 : 548.55 р.
    Содержание:
Глава 1. Введение . - С .10
1.1. Для кого предназначена эта книга . - С .11
1.2. Что содержится в этой книге . - С .12
1.3. Чего нет в этой книге . - С .14
1.4. Условные обозначения . - С .15
1.5. Пример базы данных . - С .16
1.6. Благодарности . - С .20
Часть I. Антипаттерны логической структуры базы данных . - С .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.Цель: создание соглашений первичного ключа . - С .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. Цель: упрощение моделей в архитектуре MVC . - С .302
25.2. Антипаттерн: модель, представляющая собой активную запись . - С .303
25.3. Способы распознавания антипаттерна . - С .310
25.4. Допустимые способы использования антипаттерна . - С .310
25.5. Решение: модель с активной записью . - С .311
Часть V. Приложения . - С .318
Приложение А. Правила нормализации . - С .318
А.1. Что значит «реляционный»? . - С .318
А.2. Мифы о нормализации . - С .321
А.3. Что такое нормализация? . - С .322
А.4. Здравый смысл . - С .333
Мнения читателей о книге «Программирование баз данных SQL» . - С .334
УДК
ББК 32.973.26-018.1
Рубрики: Информационные технологии
Аннотация: В мире существует огромное число книг и интернет-публикаций по языку SQL. Но как отличить хорошие примеры от плохих? «Программирование баз данных SQL» - продукт многолетней практической работы. Каждая тема здесь раскрывается подробно, а внимание к деталям превосходит ожидания. Хотя книга предназначена не для новичков, любой опытный SQL-программист найдет в ней что-нибудь новое. Предложенные здесь решения охватывают множество случаев: от традиционных «Не могу поверить, что это опять сделал я» до хитрых сценариев, где оптимальный вариант противоречит догмам, на которых выросли все профессионалы.

Держатели документа:
НБ СГЮА
Экземпляры всего: 10
ч/з1 (1), ч/з6 (1), н/а (8)
Свободны: ч/з1 (1), ч/з6 (1), н/а (8)