при каком соединении могут остаться висящие кортежи

при каком соединении могут остаться висящие кортежи

Рисунок 2.16 – Пример естественного соединения отношений

Тета-соединение

Равенство значений общих атрибутов – не единственное условие, по которому можно выполнить соединение. У соединяемых отношений может вообще не быть общих атрибутов. Тем не менее, логическое условие способно связывать различным образом и те атрибуты, которые не являются общими.

Соединение отношений, при котором кортежи отбираются по произвольному условию, отличному от равенства общих атрибутов, называется тета-соединением. Математическое обозначение операции: при каком соединении могут остаться висящие кортежи. Здесь x – простой или составной атрибут отношения при каком соединении могут остаться висящие кортежи, а C(x) – логическое условие ограничения при каком соединении могут остаться висящие кортежи.

Операция естественного соединения не включает в результирующие отношения «висящие» кортежи – те, которые не совпадают по общему атрибуту ни с одним кортежем другого отношения. Рассмотрим пример на рис. 2.17 (а). Исходные отношения R1 и R2 имеют общий атрибут x0. Заметим, что значениям 1 и 5 в R1.x0 не соответствует ни один кортеж R2 – первый и последний кортежи R1 являются «висящими». Третий кортеж отношения R2 – также «висящий», т. к. значения общего атрибута в нем не определено.

Естественное соединение этих отношений (рис. 2.17 (б)) не содержит информации о «висящих» кортежах. Если подобный исход нежелателен, то следует воспользоваться другой операцией – внешним соединением (рис. 2.17 (в)). Она имеет следующее обозначение: при каком соединении могут остаться висящие кортежи. Результатом внешнего соединения является естественное соединение с последующим включением «висящих» кортежей обоих отношений, причем значения недостающих атрибутов принимаются за неопределенные. В отношении на рис. 2.17 (в) висящими являются первый, шестой и седьмой кортежи. Первый и шестой взяты из R1, в NULL установлены значения атрибута x21, отсутствующего в R1. Седьмой кортеж взят из отношения R2, в котором отсутствует атрибут x11; значение этого атрибута в кортеже принудительно установлено в NULL.

Частными случаями внешнего соединения являются левое внешнее соединение (при каком соединении могут остаться висящие кортежи) и правое внешнее соединение (при каком соединении могут остаться висящие кортежи). Левое внешнее соединение содержит «висящие» кортежи отношения R1 (рис. 2.17 (г)), правое – «висящие» кортежи отношения R2 (рис. 2.17 (д)).

Чтобы распечатать файл, скачайте его (в формате Word).

Источник

При каком соединении могут остаться висящие кортежи

Заметим, что атрибут cert# в MovieExec, на который ссылается внешний ключ, фактически является первичным ключом этого отношения. Для того чтобы в от>юше-нии studio корректно объявить атрибут presC# внешним ключом, ссылающимся на cert# из MovieExec, атрибут cerW обязательно должен быть объявлен первичным ключом своего отношения.

Смысл любого из приведенньк описаний внешнего ключа заключается в следующем. Если какое-то значение появляется в компоненте presC# кортежа из Studio, > оно должно появиться и в компоненте cert* одного из кортежей MovieExec. Единственным исключением является то, что при наличии значения NULL в компоненте presCff кортежа из Studio не требуется, чтобы оно было значением и в компоненте cert# (фактически разумно вообще не допускать NULL в качестве атрибута, являющегося первичным ключом; см. раздел 6.3.1). □

6.2.2 Применение ссылочной целостности

Мы рассмотрели, как вводятся внешние ключи. При этом не совпадающее с NULL значение внешнего ключа должно появляться в соответствующих атрибутах того отношения, на когорое он ссылается. Но как при-менять такое ограничение при изменениях БД? В конкретных СУБД могут использоваться три варианта действий.

Правило по умолчанию:

отвергать изменения, нарушающие ограничения

в SQL по умолчанию принимается правило, согласно которому система отвергает любое измврнение, нарушающее ссылочную целостность. Обратимся к примеру 6.3, в котором требовалось, чтобы значение presC# отношения Studio было также значением свг1# отношения MovieExec. В данном случае следующие действия будут отвергнуты системой (и вызовут ошибку выполнения операций):

L Попытка ввести в Studio новый кортеж, в котором значение компонента presC# не совпадает ни с NULL, ни со значением компонента cert# любого кортежа из MovieExec. Действие отвергается, и такой кортеж никогда не вводится в Studio.

2. Попытка обновить кортеж из Studio, изменив presC# на отличное от NULL значение, которого нет в компоненте сег1# любого кортежа из MovieExec. Изменение отвергается, и кортеж остается в прежнем виде.

3. Попытка удаления кортежа из MovieExec, компонент которого cert# входит как компонент presC# в один или несколько кортежей из Studio. Удаление отвергается, и кортеж остается в MovieExec.

4. Попытка изменения кортежа в MovieExec, при котором меняется значение cert#, но при ЭТ0.М старое значение cert# остается значением presC# в Studio. Изменение отвергается, и кортеж остается в прежнем виде.

Существует и другой подход к выполнению удалений и изменений в отношении, на которое делается ссылка, и назьшается он правилом каскада. Согласно этому правилу для соблюдения ссылочной целостности при удалении из MovieExec кортежа, обозначающего президента студии, система удаляет соответствующие ему кортежи из отношения Studio. Изменения выполняются аналогично. Если cert# администратора ф1и1ьма изменяется с с, на и в Studio есть кортеж со значением с, в компоненте presC#, система изменит это значение на Cj.

Е Висящие кортежи и правила изменений

1 Кортеж со значением внешнего к.чюча, не появляющимся в отношении, 5 на которое делается ссылка, называется висящим кортежем. Кортеж, не участ-I вуюшнм в соединении, тоже называется висящим. Такое совпааение терминов I неслучайно. Если значения внешнего ключа кортежа нет в отношении, на которое делается ссылка, то ои не участвует в соединении этого отношения с отношением, в которое он входит.

Именно висящие кортежи нарушают ссылочную целостность для ограничения по внешнему ключу.

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

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

Правшю установки в NULL заключается в установке значения внешнего ключа в NULL в каждом висящем кортеже.

Пример 6.4. Рассмотрим, как можно изменеть описание отношения

Studio(name, address, presC#)

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

Movie Exec(name, address, cert#, netWorth)

Ha рис. 6.3 показано расширение первой из приведенных в примере 6.3 формулировок CREATE TABLE с помощью дополнительных предложений ON DELETE и ON UPDATE.

1) CREATE TABLE Studio (

2) name CHAR(30) PRIMARY KEY.

3) address VARCHAR(255),

4) presC# INT REFERENCES MovieEKec(cert#)

5) ON DELETE SET NULL

6) ON UPDATE CASCADE

pHt. 6.3. Выбор стратегии сохронений референциольной целосгноаи

Правило установки зкачсенил NULL

Третий подход к рассматриваемой проблеме заключается в том, чтобы заменить значение presC#. обозначаюшее удаленного или замененного президента студии, на NULL. Такой подкол получ!Ш название установки NULL

Последние два npawwa применяются для удалений м изменений независимо дру 03 друга и фиксируются и описании внешнего кчюча с помошью ключевых слон ON DELETE или ON UPDATE, за которыми следуют SET NULL или CASCADE.

Строка (5) означает, что при удалении кортежа из MovieExec компонент presC#, относящийся к президент) любой студии, устанавливается в значение NULL. Согласно строке (6), при изменении значения компонента cert# кортежа из MovieExec таким же образом изменяются все кортежи из Studio, имеющие такое же значение вкомпоненте presC#.

6.2.3 Упражнения к разделу 6.2

Упрожнение 6.2.1. Опиингге перечисленные ниже ограничения ссылочной целостности для БД фильмов

a) Продюсером фильма должен бьпъ человек, упомянутый в MovieExec. Изменения отношения MovieExec, нарушающие это ограничение, отвергаются.

b) Ограничение то же, что и в пункте (а), но в результате его нарушения значение producerC# в отношении Movie устанавливается в NULL.

c) Ограничение то же, что и в пункте (а), но в результате его нарушения из отношения Movie удаляется кортеж, который вызывает нарушение.

d) Фильм, появляющийся в Starsin, должен появиться и в Movie. При нарушении этого ограничения изменения отвергаются.

e) Кинозвезда, появляющаяся в Starsin, должна появиться и в MovieStar. При нарушении этого ограничения удаляются кортежи, вызывающие нарушение.

Упражнение 6.2.2. Введите ограничение, согласно которому каждый фильм из отношения Movie должен появиться по крайней мере с одной кинозвездой в отношении Starsin. Можно ли это сделать путем ограничения внешним ключом? Обоснуйте свой ответ.

Упражнение 6.2.3. Опишите перечисленные ниже ограничения ссылочной иелостности на основе схемы БД из уттражнения 4.1.3

Classes(class, type, country. numGuns. bore, displacement) Ships(name, class, launched) Battles(name, date) Outcomes(ship, battle, result)

Источник

SQL – Основы

при каком соединении могут остаться висящие кортежи

1. SQL запрос, содержащий агрегирующую функцию в конструкции select.

a. может содержать поля с вычисленными значениями;

b. может также содержать обычные поля;

c. не может содержать совместно указания GROUP BY и ORDER BY.

d. должен включать указание ORDER BY;

e. должен включать указание GROUP BY, если в выборке содержатся обычные поля;

2. Какие из следующих ключевых слов SQL могут быть использованы для выполнения CRUD (Create, Read, Update, Delete) операций над данными?

3. Оператор сцепления (конкатенации) выглядит таким образом:

a. WHERE AutoNum LIKE ‘_74%’

b. WHERE AutoNum [2,2] = ‘74’

c. WHERE AutoNum LIKE ‘%74%’

d. WHERE LEFT (AutoNum, 2,2) = ‘74’

e. WHERE AutoNum LIKE ‘_74’

5. Какие из следующих ключевых слов используются в конструкции order by (выберите все подходящие варианты)?

6. Все перечисленные ключевые слова относятся к DML (Data Manipulation Language): INSERT, CREATE, DELETE, UPDATE.

7. Что делает опция ESCAPE в следующем выражении SQL:

SELECТ РrоduсtName, РrоduсtСоde FRОМ Рrоducts LІКЕ ‘GА_00_А’ ЕSСАРЕ ‘A’

a. Позволяет исключить из выборки значения, в которых встречается символ ‘A’

b. Позволяет интерпретировать символ подчеркивания в строке как обычный символ, если он стоит после ‘A’

c. Позволяет исключить из выборки значения, в которых третий и шестой символы ‘A’

d. Позволяет интерпретировать символ подчеркивания в строке как обычный символ, если он стоит перед ‘A’

e. В SQL такой опции нет

8. Для какого из ключевых слов можно добавить строку «TABLE employees», чтобы запрос выполнился для таблицы employees?

9. Выберите количественные предикаты:

10. Стандартные строковые функции SQL включают:

11. Таблица RATE имеет поля rate_id, id_del, value.
Какой результат выполнения следующего запроса? (Используемый стандарт: ANSI SQL 99)

DELETЕ FROM RAТE whеrе rate_id іn (SELEСТ rаte_іd FROМ RATЕ WHERЕ іd_dеl=1) AND id_del=0

a. Запрос удалит из таблиц RATE все записи

b. Запрос не выполнится

c. Запрос удалит из таблиц RATE все записи у которых поле id_del=0

d. Запрос выполнится, но не удалит ни одной записи

e. Запрос удалит из таблиц RATE все записи у которых поле id_del=1

12. Выберите верный синтаксис DELETE выражений.

a. DELETE FROM HAVING

c. DELETE FROM WHERE

d. DELETE FROM ORDER BY

13. Синонимом какого понятия является понятие ‘кортеж’?

a. порядок выборки данных

b. порядок сортировки результатов

c. порядок сортировки полей при выборке

d. ничего из вышеперечисленного

15. Какая разница между decimal и numeric?

16. При каком соединении могут остаться висящие кортежи?

a. при перекрестном соединении (cross join)

b. при тета-соединении (theta-join)

c. при левом внешнем соединении (left outer join)

d. при полном внешнем соединении (full outer join)

e. при естественном соединении (natural join)

17. С помощью какого update-запроса можно обновить значения более чем одной колонки?

a. UPDATE table_name SET col1_name = ‘col1val’ SET col2_name = ‘col2val’;

b. Одним запросом можно обновить не более одной колонки

c. UPDATE table_name SET col1_name = ‘col1val’ and SET col2_name = ‘col2val’;

d. UPDATE table_name SET col1_name = ‘col1val’, col2_name = ‘col2val’;

Источник

ЧИТАТЬ КНИГУ ОНЛАЙН: Базы данных: конспект лекций

НАСТРОЙКИ.

при каком соединении могут остаться висящие кортежи

при каком соединении могут остаться висящие кортежи

при каком соединении могут остаться висящие кортежи

при каком соединении могут остаться висящие кортежи

СОДЕРЖАНИЕ.

СОДЕРЖАНИЕ

при каком соединении могут остаться висящие кортежи

Базы данных: конспект лекций

Лекция № 1. Введение

1. Системы управления базами данных

Системы управления базами данных (СУБД) – это специализированные программные продукты, позволяющие:

1) постоянно хранить сколь угодно большие (но не бесконечные) объемы данных;

2) извлекать и изменять эти хранящиеся данные в том или ином аспекте, используя при этом так называемые запросы;

3) создавать новые базы данных, т. е. описывать логические структуры данных и задавать их структуру, т. е. предоставляют интерфейс программирования;

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

Соответственно, базы данных – это наборы данных, находящиеся под контролем систем управления.

Сейчас системы управления базами данных являются наиболее сложными программными продуктами на рынке и составляют его основу. В дальнейшем предполагается вести разработки по сочетанию обычных систем управления базами данных с объектно-ориентированным программированием (ООП) и интернет- технологиями.

Изначально СУБД были основаны на иерархических и сетевых моделях данных, т. е. позволяли работать только с древовидными и графовыми структурами. В процессе развития в 1970 г. появились системы управления базами данных, предложенные Коддом (Codd), основанные на реляционной модели данных.

2. Реляционные базы данных

Термин «реляционный» произошел от английского слова «relation» – «отношение».

В самом общем математическом смысле (как можно помнить из классического курса алгебры множеств) отношение – это множество

Например, рассмотрим бинарные отношения строгого порядка «больше» и «меньше» на множестве упорядоченных пар чисел A 1 = A2 = <3, 4, 5>:

Эти же отношения можно представить в виде таблиц.

при каком соединении могут остаться висящие кортежи

Отношение «меньше» R

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

Нужно заметить, что эти два рассмотренных нами отношения R > и R R > и R R > и R R > и R R >):

при каком соединении могут остаться висящие кортежи

Отношение строгого порядка (вместо отношения R

Обе таблицы-отношения получают новое (в данном случае одинаковое, так как введением дополнительных заголовков мы стерли различия между отношениями R > и R R > и R

Лекция № 2. Отсутствующие данные

В системах управления базами данных для определения отсутствующих данных описаны два вида значений: пустые (или Empty-значения) и неопределенные (или Null-значения).

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

1. Пустые значения (Empty-значения)

Пустое значение – это просто одно из множества возможных значений

при каком соединении могут остаться висящие кортежи

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

Источник

Основы реляционной алгебры

Реляционная алгебра базируется на теории множеств и является основой логики работы баз данных.
Когда я только изучал устройство баз данных и SQL, предварительное ознакомление с реляционной алгеброй очень помогло дальнейшим знаниям правильно уложиться в голове, и я постараюсь что бы эта статья произвела подобный эффект.

Так что если вы собираетесь начать свое обучение в этой области или вам просто стало интересно, прошу под кат.

Реляционная база данных

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

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

таблица PRODUCTS

IDNAMECOMPANYPRICE
123ПеченькиООО ”Темная сторона”190
156ЧайООО ”Темная сторона”60
235АнанасыОАО ”Фрукты”100
623ТоматыООО ”Овощи”130

Таблица состоит из 4х строк, строка в таблице является кортежем в реляционной теории. Множество упорядоченных кортежей называется отношением.
Перед тем как дать определение отношения, введем еще один термин — домен. Домены применительно к таблице это столбцы.

Для ясности, теперь введем строгое определение отношения.

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

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

COMPANYDRIVER
ООО ”Темная сторона”Владимир
ООО ”Темная сторона”Михаил
ОАО ”Фрукты”Руслан
ООО ”Овощи”Владимир

Видно, что в организации может быть несколько водителей, и чтобы однозначно идентифицировать водителя необходимо и значение из столбца “Название организации” и из “Имя водителя”. Такой ключ называется составным.

В реляционной БД таблицы взаимосвязаны и соотносятся друг с другом как главные и подчиненные. Связь главной и подчиненнной таблицы осуществляется через первичный ключ (primary key) главной таблицы и внешний ключ ( foreign key ) подчиненной таблицы.
Внешний ключ это атрибут или набор атрибутов, который в главной таблице является первичным ключем.

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

Операции реляционной алгебры

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

IDSELLER
123OOO “Дарт”
156ОАО ”Ведро”
235ЗАО “Овоще База”
623ОАО ”Фирма”

Условимся, что в этой таблице ID это внешний ключ, связанный с первичным ключом таблицы PRODUCTS.

Для начала рассмотрим самую простую операцию — имя отношения. Её результатом будет такое же отношение, то есть выполнив операцию PRODUCTS, мы получим копию отношения PRODUCTS.

Проекция

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

Синтаксис операции:
π (ID, PRICE) PRODUCTS

В результате этой операции получим отношение:

IDPRICE
123190
15660
235100
623130
Выборка

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

Синтаксис операции:
σ (PRICE>90) PRODUCTS

IDNAMECOMPANYPRICE
123ПеченькиООО ”Темная сторона”190
235АнанасыОАО ”Фрукты”100
623ТоматыООО ”Овощи”130

В условии выборки мы можем использовать любое логическое выражение. Сделаем еще одну выборку с ценой больше 90 и ID товара меньше 300:

σ (PRICE>90 ^ ID π COMPANY σ (PRICE 123ПеченькиООО ”Темная сторона”190123OOO “Дарт”156ЧайООО ”Темная сторона”60156ОАО ”Ведро”123ПеченькиООО ”Темная сторона”190156ОАО ”Ведро”156ЧайООО ”Темная сторона”60123OOO “Дарт”

Для примера использования этой операции представим себе необходимость выбрать продавцов с ценами меньше 90. Без произведения необходимо было бы сначала получить ID продуктов из первой таблицы, потом по этим ID из второй таблицы получить нужные имена SELLER, а с использованием произведения будет такой запрос:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *