12 правил Кодда

Поделись знанием:
Перейти к: навигация, поиск

12 правил Кодда (англ. Codd’s 12 rules) — 13 правил (в данном случае исчисление начинается с 0), которым должна удовлетворять каждая система управления реляционными базами данных[1].

Предложены английским математиком Эдгаром Коддом (Edgar Codd) в 1985 году в статьях в журнале ComputerWorld[2][3].

В действительности правила столь строги, что все популярные так называемые «реляционные» СУБД не соответствуют многим критериям.



Правила

Правило 0: Основное правило (Foundation Rule):

Система, которая рекламируется или позиционируется как реляционная система управления базами данных, должна быть способной управлять базами данным, используя исключительно свои реляционные возможности.

Правило 1: Информационное правило (The Information Rule):

Вся информация в реляционной базе данных на логическом уровне должна быть явно представлена единственным способом: значениями в таблицах.

Правило 2: Гарантированный доступ к данным (Guaranteed Access Rule):

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

Правило 3: Систематическая поддержка отсутствующих значений (Systematic Treatment of Null Values):

Неизвестные, или отсутствующие значения NULL, отличные от любого известного значения, должны поддерживаться для всех типов данных при выполнении любых операций. Например, для числовых данных неизвестные значения не должны рассматриваться как нули, а для символьных данных — как пустые строки.

Правило 4: Доступ к словарю данных в терминах реляционной модели (Active On-Line Catalog Based on the Relational Model):

Словарь данных должен сохраняться в форме реляционных таблиц, и СУБД должна поддерживать доступ к нему при помощи стандартных языковых средств, тех же самых, которые используются для работы с реляционными таблицами, содержащими пользовательские данные.

Правило 5: Полнота подмножества языка (Comprehensive Data Sublanguage Rule):

Система управления реляционными базами данных должна поддерживать хотя бы один реляционный язык, который
(а) имеет линейный синтаксис,
(б) может использоваться как интерактивно, так и в прикладных программах,
(в) поддерживает операции определения данных, определения представлений, манипулирования данными (интерактивные и программные), ограничители целостности, управления доступом и операции управления транзакциями (begin, commit и rollback).

Правило 6: Возможность изменения представлений (View Updating Rule):

Каждое представление должно поддерживать все операции манипулирования данными, которые поддерживают реляционные таблицы: операции выборки, вставки, изменения и удаления данных.

Правило 7: Наличие высокоуровневых операций управления данными (High-Level Insert, Update, and Delete):

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

Правило 8: Физическая независимость данных (Physical Data Independence):

Приложения не должны зависеть от используемых способов хранения данных на носителях, от аппаратного обеспечения компьютеров, на которых находится реляционная база данных.

Правило 9: Логическая независимость данных (Logical Data Independence):

Представление данных в приложении не должно зависеть от структуры реляционных таблиц. Если в процессе нормализации одна реляционная таблица разделяется на две, представление должно обеспечить объединение этих данных, чтобы изменение структуры реляционных таблиц не сказывалось на работе приложений.

Правило 10: Независимость контроля целостности (Integrity Independence):

Вся информация, необходимая для поддержания целостности, должна находиться в словаре данных. Язык для работы с данными должен выполнять проверку входных данных и автоматически поддерживать целостность данных.

Правило 11: Независимость от расположения (Distribution Independence):

База данных может быть распределённой, может находиться на нескольких компьютерах, и это не должно оказывать влияния на приложения. Перенос базы данных на другой компьютер не должен оказывать влияния на приложения.

Правило 12: Согласование языковых уровней (The Nonsubversion Rule):

Если используется низкоуровневый язык доступа к данным, он не должен игнорировать правила безопасности и правила целостности, которые поддерживаются языком более высокого уровня.

Напишите отзыв о статье "12 правил Кодда"

Примечания

  1. [computing.derby.ac.uk/wordpress/codds-twelve-rules/ Codd's 12 Rules]. Проверено 17 сентября 2015.
  2. Codd, E. F. Is Your DBMS Really Relational? // ComputerWorld, 14. October 1985
  3. Codd, E. F. Does Your DBMS Run By the Rules? // ComputerWorld, 21. October 1985

Отрывок, характеризующий 12 правил Кодда

– Vous n'etes pas ce que vous dites, [Вы не то, что вы говорите.] – опять сказал Даву.
Пьер дрожащим, прерывающимся голосом стал приводить доказательства справедливости своего показания.
Но в это время вошел адъютант и что то доложил Даву.
Даву вдруг просиял при известии, сообщенном адъютантом, и стал застегиваться. Он, видимо, совсем забыл о Пьере.
Когда адъютант напомнил ему о пленном, он, нахмурившись, кивнул в сторону Пьера и сказал, чтобы его вели. Но куда должны были его вести – Пьер не знал: назад в балаган или на приготовленное место казни, которое, проходя по Девичьему полю, ему показывали товарищи.
Он обернул голову и видел, что адъютант переспрашивал что то.
– Oui, sans doute! [Да, разумеется!] – сказал Даву, но что «да», Пьер не знал.
Пьер не помнил, как, долго ли он шел и куда. Он, в состоянии совершенного бессмыслия и отупления, ничего не видя вокруг себя, передвигал ногами вместе с другими до тех пор, пока все остановились, и он остановился. Одна мысль за все это время была в голове Пьера. Это была мысль о том: кто, кто же, наконец, приговорил его к казни. Это были не те люди, которые допрашивали его в комиссии: из них ни один не хотел и, очевидно, не мог этого сделать. Это был не Даву, который так человечески посмотрел на него. Еще бы одна минута, и Даву понял бы, что они делают дурно, но этой минуте помешал адъютант, который вошел. И адъютант этот, очевидно, не хотел ничего худого, но он мог бы не войти. Кто же это, наконец, казнил, убивал, лишал жизни его – Пьера со всеми его воспоминаниями, стремлениями, надеждами, мыслями? Кто делал это? И Пьер чувствовал, что это был никто.
Это был порядок, склад обстоятельств.
Порядок какой то убивал его – Пьера, лишал его жизни, всего, уничтожал его.


От дома князя Щербатова пленных повели прямо вниз по Девичьему полю, левее Девичьего монастыря и подвели к огороду, на котором стоял столб. За столбом была вырыта большая яма с свежевыкопанной землей, и около ямы и столба полукругом стояла большая толпа народа. Толпа состояла из малого числа русских и большого числа наполеоновских войск вне строя: немцев, итальянцев и французов в разнородных мундирах. Справа и слева столба стояли фронты французских войск в синих мундирах с красными эполетами, в штиблетах и киверах.
Преступников расставили по известному порядку, который был в списке (Пьер стоял шестым), и подвели к столбу. Несколько барабанов вдруг ударили с двух сторон, и Пьер почувствовал, что с этим звуком как будто оторвалась часть его души. Он потерял способность думать и соображать. Он только мог видеть и слышать. И только одно желание было у него – желание, чтобы поскорее сделалось что то страшное, что должно было быть сделано. Пьер оглядывался на своих товарищей и рассматривал их.
Два человека с края были бритые острожные. Один высокий, худой; другой черный, мохнатый, мускулистый, с приплюснутым носом. Третий был дворовый, лет сорока пяти, с седеющими волосами и полным, хорошо откормленным телом. Четвертый был мужик, очень красивый, с окладистой русой бородой и черными глазами. Пятый был фабричный, желтый, худой малый, лет восемнадцати, в халате.
Пьер слышал, что французы совещались, как стрелять – по одному или по два? «По два», – холодно спокойно отвечал старший офицер. Сделалось передвижение в рядах солдат, и заметно было, что все торопились, – и торопились не так, как торопятся, чтобы сделать понятное для всех дело, но так, как торопятся, чтобы окончить необходимое, но неприятное и непостижимое дело.
Чиновник француз в шарфе подошел к правой стороне шеренги преступников в прочел по русски и по французски приговор.
Потом две пары французов подошли к преступникам и взяли, по указанию офицера, двух острожных, стоявших с края. Острожные, подойдя к столбу, остановились и, пока принесли мешки, молча смотрели вокруг себя, как смотрит подбитый зверь на подходящего охотника. Один все крестился, другой чесал спину и делал губами движение, подобное улыбке. Солдаты, торопясь руками, стали завязывать им глаза, надевать мешки и привязывать к столбу.
Двенадцать человек стрелков с ружьями мерным, твердым шагом вышли из за рядов и остановились в восьми шагах от столба. Пьер отвернулся, чтобы не видать того, что будет. Вдруг послышался треск и грохот, показавшиеся Пьеру громче самых страшных ударов грома, и он оглянулся. Был дым, и французы с бледными лицами и дрожащими руками что то делали у ямы. Повели других двух. Так же, такими же глазами и эти двое смотрели на всех, тщетно, одними глазами, молча, прося защиты и, видимо, не понимая и не веря тому, что будет. Они не могли верить, потому что они одни знали, что такое была для них их жизнь, и потому не понимали и не верили, чтобы можно было отнять ее.