Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции СУБД.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
6.32 Mб
Скачать

17.1.Обновление всех строк

Предложение WHERE в инструкции UPDATE является необязательным. Если оно опущено, то обновляются все строки целевой таблицы. Например:

Увеличить заработную плату всех сотрудников на 5%:

update staff set salary = 1.05 * salary;

17.2.Инструкции update с подчиненным запросом

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

Например:

Всем служащим отделения Минского отделения увеличить зарплату на 10%

update staff

set salary = 1.1 * salary

where bno in (select bno from branch

where city = ‘Минск’);

Подчиненные запросы в предложении WHERE инструкции UPDATE, так же как и в инструкции DELETE, могут иметь любой уровень вложенности и содержать внешние ссылки на целевую таблицу инструкции UPDATE.

18.Условия целостности данных

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

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

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

Целостность таблицы(сущности). Первичный ключ таблицы должен в каждой строке иметь уникальное значение, отличное от значений во всех остальных строках. Можно указать СУБД, чтобы она обеспечивала целостность таблиц.

Ссылочная целостность. В реляционной базе данных каждая строка таблицы-потомка с помощью внешнего ключа связана со строкой таблицы-предка, содержащей первичный ключ, значение которого равно значению внешнего ключа. В учебной базе данных значение столбца Bno таблицы STAFF связывает служащего с офисом, в котором он работает. Столбец Bno должен содержать значение из столбца Bno таблицы BRANCH; в противном случае служащий будет закреплен за несуществующим офисом. Можно указать СУБД, чтобы она обеспечивала ограничение на значения внешнего ключа.

Бизнес правила. Обновление информации в базе данных может быть ограничено деловыми правилами, которым подчиняются сделки, представляемые подобными обновлениями. Например, организация, использующая базу данных, может установить деловое правило, запрещающее принимать заказы на продукцию в количествах, превышающих её количество на складе. Можно указать СУБД, что следует проверять каждую новую строку, добавляемую в таблицу ДОГОВОРА, и убеждаться, что значение в столбце Количество не нарушает установленное деловое правило.

Непротиворечивость. Многие реальные деловые операции вызывают в базе данных несколько изменений одновременно. Например, операция “увольнение сотрудника и передача всех закрепленных за ним объектов другим сотрудникам этого же отделения” может включать в себя удаление строки из таблицы STAFF с предварительным изменением содержимого соответствующих столбцов SNO таблицы Property_for_Rent. Одна инструкция DELETE и инструкция UPDATE – все они должны быть выполнены для того, чтобы база данных осталась в правильном, непротиворечивом состоянии. Можно указать СУБД, что следует обеспечивать непротиворечивость изменяемых данных.