Главная » 2013»Февраль»5 » Программирование баз данных SQL. Типичные ошибки и их устранение
15:55
Программирование баз данных SQL. Типичные ошибки и их устранение
В мире существует огромное число книг и интернет-публикаций по языку SQL. Но как отличить хорошие примеры от плохих? "Программирование баз данных SQL" - продукт многолетней практической работы. Каждая тема здесь раскрывается подробно, а внимание к деталям превосходит ожидания. Хотя книга предназначена не для новичков, любой опытный SQL-программист найдет в ней что-нибудь новое. Предложенные здесь решения охватывают множество случаев: от традиционных "Не могу поверить, что это опять сделал я" до хитрых сценариев, где оптимальный вариант противоречит догмам, на которых выросли все профессионалы.
Название: Программирование баз данных SQL. Типичные ошибки и их устранение Автор: Карвин Б. Издательство: Рид Групп Год: 2012 Страниц: 336 Формат: PDF, DJVU Размер: 21,9 МБ ISBN: 978-5-4252-0510-0 Качество: Отличное
Содержание:
Глава 1. Введение 1.1. Для кого предназначена эта книга 1.2. Что содержится в этой книге 1.3. Чего нет в этой книге 1.4. Условные обозначения 1.5. Пример базы данных 1.6. Благодарности Часть I. Антипаттерны логической структуры базы данных Глава 2. Блуждания без ориентиров 2.1. Цель: хранение многозначных атрибутов 2.2. Антипаттерн: форматирование списков с запятыми-разделителями 2.3. Способы распознавания антипаттерна 2.4. Допустимые способы использования антипаттерна 2.5. Решение: создание таблицы пересечений Глава 3. Простые деревья 3.1. Цель: хранение и запрос иерархий 3.2. Антипаттерн: постоянная зависимость от одного родителя 3.3. Способы распознавания антипаттерна 3.4. Допустимые способы использования антипаттерна 3.5. Решение: использование альтернативных моделей дерева Глава 4. Обязательные идентификаторы 4.1. Цель: создание соглашений первичного ключа 4.2. Антипаттерн: один размер для всех случаев 4.3. Способы распознавания антипаттерна 4.4. Допустимые способы использования антипаттерна 4.5. Решение: специальная подгонка Глава 5. Записи без ключей 5.1. Цель: упрощение архитектуры базы данных 5.2. Антипаттерн: пропуск ограничений 5.3. Способы распознавания антипаттерна 5.4. Допустимые способы использования антипаттерна 5.5. Решение: объявление ограничений Глава 6. EAV (Объект-Атрибут-Значение) 6.1. Цель: поддержка атрибутов переменных 6.2. Антипаттерн: использование таблицы общих атрибутов 6.3. Способы распознавания антипаттерна 6.4. Допустимые способы использования антипаттерна 6.5. Решение: моделирование подтипов Глава 7. Полиморфные ассоциации 7.1. Цель: ссылка на несколько родительских объектов 7.2. Антипаттерн: использование внешнего ключа двойного назначения 7.3. Способы распознавания антипаттерна 7.4. Допустимые способы использования антипаттерна 7.5. Решение: упрощение отношений Глава 8. Многостолбчатые атрибуты 8.1. Цель: хранение многозначных атрибутов 8.2. Антипаттерн: создание нескольких столбцов 8.3. Способы распознавания антипаттерна 8.4. Допустимые способы использования антипаттерна 8.5. Решение: создание зависимой таблицы Глава 9. Трибблы метаданных 9.1. Цель: поддержка масштабируемости 9.2. Антипаттерн: клонирование таблиц или столбцов 9.3. Способы распознавания антипаттерна 9.4. Допустимые способы использования антипаттерна 9.5. Решение: разделение и нормализация Часть II. Антипаттерны физической структуры базы данных Глава 10. Ошибки округления 10.1. Цель: использование дробных значений вместо целых чисел 10.2. Антипаттерн: использование типа данных FLOAT 10.3. Способы распознавания антипаттерна 10.4. Допустимые способы использования антипаттерна 10.5. Решение: использование типа данных NUMERIC Глава 11. 31 разновидность 11.1. Цель: ограничение столбца конкретными значениями 11.2. Антипаттерн: задание значений в определении столбца 11.3. Способы распознавания антипаттерна 11.4. Допустимые способы использования антипаттерна 11.5. Решение: задание значений в данных Глава 12. Фантомные файлы 12.1. Цель: хранение изображений и других большеразмерных файлов 12.2. Антипаттерн: предположение о необходимости использования файлов 12.3. Способы распознавания антипаттерна 12.4. Допустимые способы использования антипаттерна 12.5. Решение: использование типов данных BLOB по мере необходимости Глава 13. Беспорядочное создание индексов 13.1. Цель: оптимизация производительности 13.2. Антипаттерн: использование индексов без какого-либо плана 13.3. Способы распознавания антипаттерна 13.4. Допустимые способы использования антипаттерна 13.5. Решение: использование процедуры MENTOR в отношении индексов Часть III. Антипаттерны запросов Глава 14. Боязнь неизвестного 14.1. Цель: распознавание отсутствующих значений 14.2. Антипаттерн: использование Null как обычного значения или наоборот 14.3. Способы распознавания антипаттерна 14.4. Допустимые способы использования антипаттерна 14.5. Решение: использование Null в качестве уникального значения Глава 15. Неоднозначные группы 15.1. Цель: получение строки с наибольшим значением в группе 15.2. Антипаттерн: ссылка на несгруппированные столбцы 15.3. Способы распознавания антипаттерна 15.4. Допустимые способы использования антипаттерна 15.5. Решение: однозначное использование столбцов Глава 16. Случайный выбор 16.1. Цель: выбор типовой строки 16.2. Антипаттерн: сортировка данных случайным образом 16.3. Способы распознавания антипаттерна 16.4. Допустимые способы использования антипаттерна 16.5. Решение: без какого-либо определенного порядка Глава 17. Собственная поисковая система 17.1. Цель: полнотекстовый поиск 17.2. Антипаттерн: предикаты сопоставления с шаблонами 17.3. Способы распознавания антипаттерна 17.4. Допустимые способы использования антипаттерна 17.5. Решение: использование для работы подходящего инструмента Глава 18. Запутанный запрос 18.1. Цель: уменьшение SQL-запросов 18.2. Антипаттерн: решение сложной проблемы за один шаг 18.3. Способы распознавания антипаттерна 18.4. Допустимые способы использования антипаттерна 18.5. Решение: разделяй и властвуй Глава 19. Скрытые столбцы 19.1. Цель: уменьшение объема клавиатурного ввода 19.2. Антипаттерн: запутывающие комбинация клавиш 19.3. Способы распознавания антипаттерна 19.4. Допустимые способы использования антипаттерна 19.5. Решение: именование столбцов в явном виде Часть IV. Антипаттерны разработки приложений Глава 20. Считываемые пароли 20.1. Цель: восстановление или сброс паролей 20.2. Антипаттерн: хранение паролей в открытой текстовой форме 20.3. Способы распознавания антипаттерна 20.4. Допустимые способы использования антипаттерна 20.5. Решение: хранение пароля в виде беспорядочного набора символов Глава 21. Инъекция SQL-кода 21.1. Цель: создание динамических SQL-запросов 21.2. Антипаттерн: выполнение непроверенных входных данных в качестве кода 21.3. Способы распознавания антипаттерна 21.4. Допустимые способы использования антипаттерна 21.5. Решение: никому нельзя доверять Глава 22. Псевдоключ аккуратности 22.1. Цель: приведение данных в порядок 22.2. Антипаттерн: заполнение углов 22.3. Способы распознавания антипаттерна 22.4. Допустимые способы использования антипаттерна 22.5. Решение: преодоление проблемы Глава 23. Незамечаемые недостатки 23.1. Цель: написание меньшего количества кода 23.2. Антипаттерн: трудновыполнимое дело 23.3. Способы распознавания антипаттерна 23.4. Допустимые способы использования антипаттерна 23.5. Решение: изящное восстановление после возникновения ошибок Глава 24. Дипломатическая неприкосновенность 24.1, Цель: использование передовых методов работы 24.2. Антипаттерн: использование SQL как «вспомогательного» языка 24.3. Способы распознавания антипаттерна 24.4. Допустимые способы использования антипаттерна 24.5. Решение: формирование собирательной культуры качества Глава 25. Волшебные бобы 25.1. Цель: упрощение моделей в архитектуре MVC 25.2. Антипаттерн: модель, представляющая собой активную запись 25.3. Способы распознавания антипаттерна 25.4. Допустимые способы использования антипаттерна 25.5. Решение; модель с активной записью Часть V. Приложения Приложение А. Правила нормализации А.1. Что значит «реляционный»? А.2. Мифы о нормализации А.3. Что такое нормализация? А.4. Здравый смысл Мнения читателей о книге «Программирование баз данных SQL»