Классика баз данных - статьи

       

или любую формулу реляционного исчисления.


или любую формулу реляционного исчисления. Но, к сожалению, на

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

относятся расширения - остается непонятным...

Прежде всего это касается возможности таблиц (в модели SQL)

содержать строки-дубликаты. На первый взгляд это кажется мелочью.

На самом деле это принципиально. Вся реляционная теория основана

на теории множеств. Математические множества не допускают наличия

дублирующих элементов. Поэтому в теории реляционных баз данных

отношения, которые определяются как множества кортежей, не могут

содержать кортежи-дубликаты. И дальше все получается прекрасно.

Строится алгебра или исчисление, которые замкнуты относительно

понятия отношения: результат вычисления алгебраического выражения

или интерпретации логической формулы является отношением,

следовательно, везде, где можно использовать хранимое отношение,

можно использовать выражение или формулу. Именно из

фундаментального свойства отсутствия дубликата следует наличие

возможного (а следовательно, и первичного) ключа отношения (быть

может, нескольких возможных ключей).

С другой стороны, требование отсутствия дубликатов в некоторых

случаях приводит к утрате части информации при выполнении

алгебраических операций. Прежде всего это связано с операцией

проецирования отношения. Поскольку не требуется, чтобы в число

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

при выполнении этой операции могут возникать кортежи-дубликаты, а

поскольку в результате должно получиться отношение, то они должны

устраняться. Тем самым, при выполнении операции проекции мы,

вообще говоря, теряем информацию о количестве кортежей,

содержащих одни и те же значения в атрибутах проекции.

Поскольку язык SQL является компромиссом между требованиями

теории и практики, в нем отсутствие в таблицах дублирующих строк

не является абсолютным требованием. То есть хорошим тоном

является отказ от использования таких таблиц, но язык этого не

требует.

Содержание  Назад  Вперед