Шаблон базы данных
Перейти к навигации
Перейти к поиску
Шаблоны реляционных баз данных это шаблоны, которые используются в проекте реляционных баз данных.
Примеры проблем, которые могут решить шаблоны:
- Сохранение иерархических данных (например, одна таблица с типом vs с несколькими таблицами с ключом 1:1 и различиями)
- Сохранение данных с переменной структурой (например, общие столбцы против столбца xml vs с разделителями)
- Денормализовать данные (как это сделать с минимальным воздействием)
Основные типы таблиц[править]
- Справочная таблица
- Справочная таблица - это таблица, которая остается относительно постоянной в течение времени и имеет относительно небольшое количество столбцов. Часто встречаются Ключ - Значение - Справочная таблица, только с двумя столбцами. В качестве ключей следует использовать строки, чтобы избежать объединения.
- Главная Таблица
- Главная таблица - это таблица, которая помещает свойства объекта (лицо, адрес и т. д.) в отдельные столбцы. При этом маленькие главные таблицы должны содержать уникальную строку; для больших главных таблиц, содержание которых часто меняется, целое число должно быть создано в качестве ключа.
- Таблица транзакций
- Таблица транзакций - хранит взаимодействия или события между главными таблицами. Например, список объектов, которые клиент положил в корзину . В качестве ключа следует использовать автоматически сгенерированные целые числа.
- Таблица перекрестных ссылок
- Таблица перекрестных ссылок - это таблица, в которой хранятся отношения между главными таблицами. В таблицах перекрестных ссылок отношение n:n и отображаются в нескольких строках. В качестве ключа следует выбрать комбинацию из нескольких столбцов.
Дополнительные Типы Таблиц[править]
- Ограниченные транзакции
- Ограниченной транзакцией называется ограничение на таблице, которое определяет, какие транзакции разрешены и когда. Этот шаблон можно использовать для снижения соответствующих проверок на странице приложения и для повышения безопасности базы данных от неправильно реализованных приложений.[1]
- Преходящий Первичный Ключ
- используется, когда свойство объекта предлагается в качестве первичного ключа (например - номер клиента), но может изменяться. В этом случае соответствующее свойство можно использовать в качестве первичного ключа, но изменения должны регистрироваться в таблице истории, чтобы гарантировать последующее сопоставление.[2]
Шаблон внешнего ключа[править]
- Ограничение внешнего ключа
- Ограничение внешнего ключа указывается, если удаление записи (строки) из одной таблицы не удаляет записи, связанные с записью (в другой таблице). Таким образом, ограничение внешнего ключа является противоположностью внешнего ключа каскада.
- В SQL делается ограничение внешнего ключа с помощью команды - DELETE RESTRICT.
- Это поведение по умолчанию для большинства реализаций баз данных, если указана только команда DELETE.[3]
- Внешний ключ
- Внешний ключ является противоположностью ограничения внешнего ключа.
- В SQL возникает ограничение внешнего ключа с помощью команды - DELETE CASCADE. <syntaxhighlight />
- Проверка перекрестных ссылок
- Проверка перекрестных ссылок используется, когда столбцы в главной таблице должны иметь определенную связь. Это отношение сохраняется в отдельной таблице перекрестных ссылок. Разделенная таблица перекрестных ссылок увеличивает потребление ресурсов базы данных, но для проверки достоверности данных её необходимо использовать.[4]
Шаблон безопасности[править]
- Таблица поиска только для чтения
- Таблица поиска только для чтения - это таблица, определяющая связь между двумя таблицами, содержимое которой можно задать в целом, но может быть изменено только определенными ролями или группами. Примером является связывание определенных продуктов со скидкой.[5]
Шаблон денормализации[править]
Денормализационные шаблоны позволяют нормализовать базу данных с целью улучшения поведения во время выполнения.
- Выборка
- При выборке данные копируются из одной таблицы в другую (временную) таблицу (например, таблицу транзакций). Обратите внимание, что изменение исходной таблицы не будет автоматически применено к целевой таблице.
- Предварительная агрегация
- При предварительной агрегации значения из различных источников вычисляются заранее в ходе одной (длительной) пакетной обработки и кэшируются в другой таблице. Значения не пересчитываются при каждом запросе, а вычисляются только в ходе следующей пакетной обработки. Преимущество заключается в том, что доступ к базе данных значительно быстрее, а ресурсы можно сэкономить. Негативно сказывается на том, что недавние изменения в расчетах не учитываются.
- Расширение
- Расширение таблицы происходит, когда столбец в таблице формируется путем вычисления из других столбцов. Это означает, что вычисление не требуется повторно при каждом запросе, а только в том случае, если запись изменяется.
Объектно-Реляционная Модель Поведения[править]
- Таблица для иерархии наследования
- (на английском языке: Single Table Inheritance) используется одна таблица для каждого класса, чтобы класс дерево отобразить в базе данных.
- Таблица для подкласса
- (на английском языке: Class Table Inheritance) использует свою собственную таблицу для каждого конкретного или абстрактного класса, чтобы класс дерево отобразить в базе данных.
- Таблица для конкретного класса
- (на английском языке: Concrete Table Inheritance) использует свою собственную таблицу для каждого конкретного класса, чтобы класс дерево отобразить в базе данных.
Другие шаблоны[править]
- Шаблон разрешения
- Шаблон разрешения используется когда значение может быть получено из различных источников и необходимо решить, какой источник выбрать или какую модель расчета следует применить.
- История таблицы
- История таблицы - это таблица, которая регистрирует изменения. Эта таблица позволяет просмотреть изменения и восстановить исходное состояние отслеживаемой таблицы. Примером данной таблицы является „история версий“ Википедии, в которой изменения сохраняются в виде diff-элементов.
- Выделение зависимостей
- Для выделения зависимостей необходимо последовательно выполнить ряд команд. Поскольку некоторые команды могут зависеть от результата других команд, их порядок должен быть определен с помощью направленного аналитического графа и отображен в отдельной таблице.
- Безопасный сброс пароля
- Если пользователь забыл пароль, база данных должна обеспечить безопасное восстановление пароля. Пароль не может быть сохранен в базе данных в виде обычного текста или восстанавливающихся данных, а также не может быть передан пользователю через небезопасный канал (например, в сообщении электронной почты или веб-странице, не зашифрованной SSL).
Анти-шаблон[править]
- Обратный внешний ключ
Обратный внешний ключ создается, если конкретная запись таблицы должна предотвратить определенную запись в другой таблице. На первый взгляд, обратный внешний ключ часто выглядит как первичный ключ.
Литература[править]
- Scott J. Ambler, Pramodkumar J. Sadalage: Refactoring Databases: Evolutionary Database Design. Prentice Hall, Addison-Wesley, 2011, ISBN 978-0-321-77451-4, S.384 (englisch).
- Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс = Database Systems: The Complete Book. — Вильямс, 2003. — 1088 с. — ISBN 5-8459-0384-X.
- Коннолли Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика = Database Systems: A Practical Approach to Design, Implementation, and Management. — 3-е изд. — М.: Вильямс, 2003. — 1436 с. — ISBN 0-201-70857-4.
- Дейт К. Дж. Введение в системы баз данных = Introduction to Database Systems. — 8-е изд. — М.: Вильямс, 2005. — 1328 с. — ISBN 5-8459-0788-8 (рус.) 0-321-19784-4 (англ.).
- Кузнецов С. Д. Основы баз данных. — 2-е изд. — М.: Интернет-университет информационных технологий; БИНОМ. Лаборатория знаний, 2007. — 484 с. — ISBN 978-5-94774-736-2.
- Когаловский М. Р. Энциклопедия технологий баз данных. — М.: Финансы и статистика, 2002. — 800 с. — ISBN 5-279-02276-4.
- Scott J. Ambler: Agile Database Techniques. John Wiley & Sons, 2003, ISBN 978-0-471-20283-7, S.480 (englisch).
- Len Silverston: The Data Model Resource Book: Volume 1: A Library of Universal Data Models for All Enterprises. John Wiley & Sons, 2001, ISBN 978-0-471-38023-8, S.560 (englisch).
- Len Silverston: The Data Model Resource Book: Volume 2: A Library of Universal Data Models by Industry Types. John Wiley & Sons, 2001, ISBN 978-0-471-35348-5, S.576 (englisch).
- Len Silverston, Paul Agnew: The Data Model Resource Book: Volume 3: Universal Patterns for Data Modeling. John Wiley & Sons, 2009, ISBN 978-0-470-17845-4, S.648 (englisch).
Примечания[править]
- ↑ Table Design Pattern: Limited Transaction (английский язык) (2008-02-27). Проверено 6 марта 2013.
- ↑ The Primary Key That Wasn’t (английский язык) (2008-02-24). Проверено 6 марта 2013.
- ↑ Different Foreign Keys for Different Tables (английский язык) (2008-07-27). Проверено 6 марта 2013.
- ↑ Table Design Patterns: Cross-Reference Validation (английский язык) (2008-01-20). Проверено 6 марта 2013.
- ↑ Introducing Database Security (английский язык) (2008-05-11). Проверено 7 марта 2013.