Открыть сервис

Полнота по Кодду

Полнота по Кодду — это свойство реляционной базы данных или её схемы, означающее, что все возможные правила целостности данных и ограничения (например, ключи, ссылочная целостность, домены) могут быть выражены и реализованы исключительно средствами самой реляционной модели, без использования внешних по отношению к ней механизмов (таких как хранимые процедуры, триггеры или прикладной код). Концепция была введена Эдгаром Коддом в рамках его реляционной модели данных, опубликованной в 1970 году, и является одним из критериев оценки реляционных систем управления базами данных (СУБД).

История возникновения

Понятие полноты по Кодду возникло в контексте формализации реляционной модели. Эдгар Кодд, работая в IBM Research, в 1970 году опубликовал статью «A Relational Model of Data for Large Shared Data Banks», где заложил основы теории реляционных баз данных. В последующих работах, в частности в 1985 году, Кодд сформулировал 12 правил для реляционных СУБД, которые должны были гарантировать, что система является «полностью реляционной». Эти правила включали в себя требования к целостности, манипулированию данными и управлению схемой. Полнота по Кодду, как свойство, вытекает из этих правил: система должна быть способна обрабатывать все ограничения целостности, не прибегая к процедурным расширениям.

Основные принципы

Полнота по Кодду базируется на нескольких фундаментальных принципах реляционной модели:

Критерии и требования

Чтобы система считалась «полной по Кодду», она должна удовлетворять ряду требований, вытекающих из его правил:

  1. Представление информации: Все данные в базе должны быть представлены только как значения в таблицах (реляционных отношениях). Никакая информация не должна храниться вне таблиц (например, в файлах или структурах, не подчиняющихся реляционной модели).
  2. Гарантированный доступ: Каждый элемент данных (значение атрибута) должен быть доступен через комбинацию имени таблицы, первичного ключа и имени атрибута. Это означает, что первичные ключи обязательны для всех таблиц.
  3. Обработка NULL-значений: Система должна поддерживать NULL-значения (отсутствие данных) и обрабатывать их единообразно, независимо от типа данных.
  4. Поддержка ограничений целостности: Система должна позволять определять первичные ключи, внешние ключи, уникальные ограничения и проверки на уровне доменов, и автоматически их поддерживать.
  5. Язык манипулирования данными: Должен существовать единый, мощный язык (например, SQL), который позволяет выполнять все операции: выборку, вставку, обновление, удаление, а также управление схемой.
  6. Физическая независимость данных: Изменения в физическом хранении данных (например, индексах, файлах) не должны влиять на логическую схему и прикладные программы.
  7. Логическая независимость данных: Изменения в логической схеме (например, добавление столбца) не должны влиять на существующие прикладные программы, если они не используют изменённые части схемы.

Реализация в современных СУБД

Большинство современных реляционных СУБД, таких как PostgreSQL, MySQL, Oracle Database, Microsoft SQL Server, в значительной степени соответствуют требованиям полноты по Кодду. Однако на практике полное соответствие достигается редко. Например:

Критика и ограничения

Концепция полноты по Кодду не лишена критики. Основные замечания включают:

Значение и влияние

Несмотря на критику, полнота по Кодду остаётся важным теоретическим критерием для оценки реляционных СУБД. Она способствовала:

Примеры

Пример декларативного определения ограничений в SQL, соответствующего принципам полноты по Кодду:

``sql CREATE TABLE Сотрудники ( ID_сотрудника INT PRIMARY KEY, ФИО VARCHAR(100) NOT NULL, Отдел_ID INT, Зарплата DECIMAL(10,2) CHECK (Зарплата > 0), FOREIGN KEY (Отдел_ID) REFERENCES Отделы(ID_отдела) ); ``

В этом примере все ограничения (первичный ключ, обязательность поля, проверка значения, ссылочная целостность) заданы декларативно, что соответствует требованиям полноты по Кодду.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →