Вредные советы по SQL (часть 2)

advertisement
Вредные советы по SQL
Фёдор Самородов
Фёдор Самородов
• Fedor@Samorodov.ru
• http://Samorodov.SU
Страница  2
www.specialist.ru
Вредны ли вредные советы?
Вредные советы – это антишаблоны
– Распознать опасную ситуацию
– Сэкономить время
Страница  3
www.specialist.ru
Вредны ли вредные советы?
Решение сложных инженерных задач
всегда заканчиваются компромиссом.
Объём
ресурсов,
используемых
SQL-запросом
Решение должно быть
адекватно задаче.
И любой антишаблон из
тех, что мы сегодня
рассмотрим, в некоторых
обстоятельствах может
оказаться лучше любого
«правильного» решения!
Страница  4
Скорость
работы SQLзапроса
Время, затраченное
на написание, отладку
и доработку SQLзапроса
www.specialist.ru
Вредный совет №1
Используйте многозначные столбцы
Страница  5
www.specialist.ru
Вредный совет №1
Используйте многозначные столбцы
 Это не потребует серьёзных изменений в существующей базе
Страница  6
www.specialist.ru
Вредный совет №1
Используйте многозначные столбцы
 Как выбрать строки по нужному значению?
 Как контролировать целостность?
 Как агрегировать многозначный столбец?
 Как обрабатывать UPDATE для многозначного столбца?
 Ограничена ли длина списка?
Страница  7
www.specialist.ru
Вредный совет №2
Применяйте многозначные атрибуты
Страница  8
www.specialist.ru
Вредный совет №2
Применяйте многозначные атрибуты
 Структура базы остаётся простой
 Нет нарушения реляционной модели данных
 Это не потребует серьёзных изменений в существующей базе
Страница  9
www.specialist.ru
Вредный совет №2
Применяйте многозначные атрибуты
 Как осуществлять поиск по значению?
 Как добавлять и удалять значения?
 Как обеспечить уникальность значений?
 А если выбранного количества столбцов не хватит?
Страница  10
www.specialist.ru
Вредный совет №3
Применяйте атрибутную схему
(Entity-Attribute-Value)
Страница  11
www.specialist.ru
Вредный совет №3
Применяйте атрибутную схему
(Entity-Attribute-Value)
 Универсальное решение
 Отлично масштабируется
Страница  12
www.specialist.ru
Вредный совет №3
Применяйте атрибутную схему
(Entity-Attribute-Value)
 Как обработать разные атрибуты в одном запросе?
 Как обеспечить целостность данных?
 Как реализовать NOT NULL?
 Что с типами атрибутов?
 Как быть с внешними ключами?
 Как контролировать правильность названий атрибутов?
 Как восстановить «эталонную» таблицу?
Страница  13
www.specialist.ru
Вредный совет №4
Применяйте
полиморфные
ассоциации
Страница  14
www.specialist.ru
Вредный совет №4
Применяйте полиморфные ассоциации
 Универсальное решение
 Отлично масштабируется
Страница  15
www.specialist.ru
Вредный совет №4
Применяйте полиморфные ассоциации
 Не работают внешние ключи
 Усложняется соединение таблиц по внешнему ключу
Страница  16
www.specialist.ru
Вредный совет №5
Клонируйте
таблицы
Страница  17
www.specialist.ru
Вредный совет №5
Клонируйте таблицы
 Пользователей всегда интересует только один конкретный год
 Структура базы становится понятнее для пользователя
 Чем меньше строк в каждой таблице, тем быстрее запросы
Страница  18
www.specialist.ru
Вредный совет №5
Клонируйте таблицы
 Как осуществлять контроль целостности?
 Как обрабатывать UPDATE?
 Как контролировать первичный ключ?
 Куда будут ссылаться внешние ключи?
 Объединяющие запросы потребуют UNION ALL
 Как обновлять метаданные?
Страница  19
www.specialist.ru
Вредные советы
1. Используйте многозначные столбцы
2. Применяйте многозначные атрибуты
3. Применяйте атрибутную схему
4. Применяйте полиморфные ассоциации
5. Чаще клонируйте таблицы
Страница  20
www.specialist.ru
«Звоночки»
Смешивание данных и
метаданных
Использование приёмов
ООП в базах данных
1. Давайте поместим
метаданные туда, где
должны быть данные
Реляционная модель и ООП –
это как корпускулярноволновой дуализм!
2. Давайте поместим данные
туда, где должны быть
метаданные
Страница  21
www.specialist.ru
В следующих сериях
Это были вредные советы для тех, кто проектирует базы данных
А дальше:
 Ещё одна порция вредных советов для разработчиков баз данных
 Вторая серия вредных советов для пользователей баз данных
 Вредные советы для администраторов баз данных
 Вредные советы для разработчиков приложений, использующих базы
данных
Страница  22
www.specialist.ru
Download