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
Рубрики: Информационные технологии Аннотация: В мире существует огромное число книг и интернет-публикаций по языку SQL. Но как отличить хорошие примеры от плохих? «Программирование баз данных SQL» - продукт многолетней практической работы. Каждая тема здесь раскрывается подробно, а внимание к деталям превосходит ожидания. Хотя книга предназначена не для новичков, любой опытный SQL-программист найдет в ней что-нибудь новое. Предложенные здесь решения охватывают множество случаев: от традиционных «Не могу поверить, что это опять сделал я» до хитрых сценариев, где оптимальный вариант противоречит догмам, на которых выросли все профессионалы. Держатели документа: НБ СГЮА Экземпляры всего: 10 ч/з1 (1), ч/з6 (1), н/а (8) Свободны: ч/з1 (1), ч/з6 (1), н/а (8) |