Отношения, совместимые по типу
Некоторые реляционные операторы (например, объединение) требуют, чтобы отношения имели одинаковые заголовки. Как было показано в предыдущей лекции, отношение состоит из заголовка и тела. Операция объединения двух отношений есть объединение двух множеств кортежей, взятых из тел соответствующих отношений. Однако будет ли результат считаться отношением? Во-первых, если исходные отношения имеют разное количество атрибутов, то, очевидно, что множество, являющееся объединением таких разнотипных кортежей, нельзя представить в виде отношения. Во-вторых, пусть даже отношения имеют одинаковое количество атрибутов, но атрибуты имеют личные наименования. Тогда возникает вопрос, как тогда определить заголовок отношения, полученного в результате объединения множеств кортежей? В-третьих, пусть отношения имеют одинаковое количество атрибутов, атрибуты имеют одинаковые наименования, но определены на различных доменах. Тогда опять же объединение кортежей не будет образовывать отношение.
Определение. Отношения называются совместимыми по типу, если они имеют идентичные заголовки, а именно:
1) отношения имеют одно и то же множество имен атрибутов, т. е. для любого атрибута в одном отношении найдется атрибут с таким же наименованием в другом отношении;
2) атрибуты с одинаковыми именами определены на одних и тех же доменах.
Некоторые отношения не являются совместимыми по типу, но становятся таковыми после некоторого переименования атрибутов. Для того чтобы такие отношения можно было использовать в реляционных операторах, вводится вспомогательный оператор переименования атрибутов.
Оператор переименования атрибутов имеет следующий синтаксис:
R rename A1, A2, …, An as new A1, A2, …, An;
где R — отношение, A1, A2, …, An — исходные имена атрибутов, new A1, A2, …, An. — новые имена атрибутов. В результате применения оператора переименования атрибутов получаем новое отношение с измененными именами атрибутов.
Пример. Оператор rename возвращает неименованное отношение, в котором атрибут Student переименован в Head (Староста):
R rename Student as Head;
Дата добавления: 2015-08-08; просмотров: 2150;