Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы и ответы для экзамена по курсу.docx
Скачиваний:
90
Добавлен:
11.09.2019
Размер:
86.84 Кб
Скачать

Тип данных

Понятие тип данных в реляционной модели данных полностью эквивалентно со­ответствующему понятию в алгоритмических языках. Набор поддерживаемых ти­пов данных определяется СУБД и может сильно различаться в разных системах. Однако практически все СУБД поддерживают следующие типы данных:

  • целочисленные;

  • вещественные;

  • строковые;

  • специализированные типы данных для денежных величин;

  • специальные типы данных для временных величин (дата и/или время);

  • типы двоичных объектов (данный тип не имеет аналога в языках программиро­вания; обычно для его обозначения используется аббревиатура BLOB — Binary Large Object).

В рассматриваемом примере используются три типа данных — строковый (столб­цы «Имя» и «Специальность»), временной тип (столбец «Дата_рождения») и це­лочисленный тип («Курс» и «№_студенческого_билета»).

Домен

Наименьшая единица данных реляционной модели — это отдельное атомарное (неразложимое) для данной модели значение данных. Доменом называется мно­жество атомарных значений одного и того же типа. Иными словами, домен пред­ставляет собой допустимое потенциальное множество значений данного типа.

В нашем примере можно для каждого столбца таблицы определить домен:

  • домены «Имена» и «Специальности» для столбцов «Имя» и «Специальность» со­ответственно будут базироваться на строковом типе данных — в число их значе­ний могут входить только те строки, которые могут изображать имя и название специальности (в частности, такие строки не должны начинаться с мягкого знака);

  • домен «Даты_рождения» для столбца «Дата_рождения» определяется на базо­вом временном типе данных — данный домен содержит только допустимый диапазон дат рождения студентов;

  • домены «Номера_курсов» и «Номера_студенческих_билетов» базируются на целочисленном типе — в число его значений могут входить только те целые числа, которые могут обозначать номер курса университета (обычно от 1 до 6) и номер студенческого билета (обязательно положительное число).

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

В самом общем виде домен определяется заданием некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выра­жения, применяемого к элементу типа данных. Если вычисление этого логического выражения дает результат «истина», то элемент данных является элементом домена.

Следует отметить также семантическую нагрузку понятия домена: данные счита­ются сравнимыми только в том случае, когда они относятся к одному домену. Если же значения двух атрибутов берутся из различных доменов, то их сравнение, вероятно, лишено смысла.

В нашем примере значения доменов «Номера_курсов» и «Номера_студенческих_билетов» основаны на одном типе данных — целочислен­ном, но не являются сравнимыми.

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

Атрибуты, схема отношения, схема базы данных

Столбцы отношения называют атрибутами, им присваиваются имена, по кото­рым к ним затем производится обращение.

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

Схема нашего отношения СТУДЕНТ запишется так:

СТУДЕНТ {№_студенческого_билета Номера_студенческих_билетов

Имя Имена.

Дата_рождения Даты_рождения.

Курс Номера_курсов.

Специальность Специальности}

Степень отношения это число его атрибутов. Отношение степени один называ­ют унарным, степени два — бинарным, степени три — тернарным,…, а степени nарным.

Степень отношения СТУДЕНТЫ равна пяти, то есть оно является 5-арным. Схемой базы данных называется множество именованных схем отношений.

Кортеж

Кортеж, соответствующий данной схеме отношения, представляет собой множе­ство пар {имя атрибута, значение}, которое содержит одно вхождение каждого име­ни атрибута, принадлежащего схеме отношения. «Значение» является допусти­мым значением домена данного атрибута (или типа данных, если понятие домена не поддерживается). Тем самым степень кортежа, то есть число элементов в нем, совпадает со степенью соответствующей схемы отношения. Иными словами, кор­теж — это набор именованных значений заданного типа.

Таким образом, отношение, по сути, является множеством кортежей, соответству­ющим одной схеме отношения.

Кардинальным числом или мощностью отношения называется число его кортежей. Мощность отношения СТУДЕНТЫ равна 6. В отличие от степени отношения кар­динальное число отношения изменяется во времени.

Пустые значения

В некоторых случаях какой-либо атрибут отношения может быть неприменим. На­пример, в рассматриваемом в качестве примера отношении СТУДЕНТЫ может также храниться информация о потенциальных абитуриентах, посещающих под­готовительные курсы вуза.

В этом случае неприменимыми оказываются атрибуты «№_студенческого_билета» и «Курс» (так как абитуриенты еще не поступили в вуз и, следовательно, не имеют студенческого билета и не могут быть отнесены к како­му-либо курсу). Кроме того, иногда при вводе информации в строку реляционной таблицы некоторые данные могут быть неизвестны и выясняться позже. (Для наше­го примера — при поступлении на подготовительные курсы абитуриент еще не оп­ределился окончательно, на какую специальность он будет поступать.)

В обоих указанных случаях в поля, соответствующие неприменимым или неизве­стным атрибутам, ничего не заносится, и строка записывается в базу данных с пу­стыми значениями этих атрибутов.

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

Для обозначения пустых значений полей используется слово NULL.

Ключи отношения

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

Более строго определить понятие первичного ключа можно следующим образом:

если R отношение с атрибутами A1 A2..., An, то множество атрибутов

К = Ai„ Аj ...,Ak) отношения R является первичным ключом этого отношения тогда и толь­ко тогда, когда удовлетворяются два независимых от времени условия:

  • уникальность: в произвольный момент времени никакие два различных корте­жа отношения R не имеют одного и того же значения для Аi Аj ..., Аk.

  • минимальность: ни один из атрибутов Аi Аj ..., Аk не может быть исключен из К без нарушения уникальности.

Для каждого отношения свойством уникальности обладает, по крайней мере, пол­ный набор его атрибутов. Однако требуется обеспечить и условие минимальности. Поэтому, как правило, в отношении всегда имеется один атрибут, обладающий свойством уникальности и являющийся первичным ключом.

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

Простой ключ ключ, содержащий только один атрибут. В общем случае опера­ции объединения выполняются быстрее в том случае, когда в качестве ключа ис­пользуется самый короткий и самый простой из возможных типов данных. С этой точки зрения наилучшим образом подходит целочисленный тип, который имеет аппаратную поддержку для выполнения над ним логических операций.

Сложный или составной ключ — состоит из нескольких атрибутов.