Шаблон базы данных

Материал из Циклопедии
Перейти к навигации Перейти к поиску

Шаблоны реляционных баз данных это шаблоны, которые используются в проекте реляционных баз данных.

Примеры проблем, которые могут решить шаблоны:

  • Сохранение иерархических данных (например, одна таблица с типом 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.
  • Кузнецов С. Д. Основы баз данных. — 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).

Примечания[править]

  1. Table Design Pattern: Limited Transaction (английский язык) (2008-02-27). Проверено 6 марта 2013.
  2. The Primary Key That Wasn’t (английский язык) (2008-02-24). Проверено 6 марта 2013.
  3. Different Foreign Keys for Different Tables (английский язык) (2008-07-27). Проверено 6 марта 2013.
  4. Table Design Patterns: Cross-Reference Validation (английский язык) (2008-01-20). Проверено 6 марта 2013.
  5. Introducing Database Security (английский язык) (2008-05-11). Проверено 7 марта 2013.