
- •Основные понятия баз данных. Этапы развития субд. Функции субд. Требования к системам управления базами данных.
- •Архитектура баз данных. Логическая и физическая независимость данных. Схема прохождения запросов к бд.
- •Логическая и физическая независимость данных
- •Классификация моделей данных. Архитектура и модели "клиент-сервер" в технологии бд.
- •Модели «клиент-сервер» в технологи баз данных
- •Модель файлового сервера
- •Модель удаленного доступа к данным
- •Модель сервера баз данных
- •Модель сервера приложений
- •Реляционная модель бд, ее основные достоинства. Таблица, кортеж, атрибут, домен, первичный ключ, внешний ключ. Фундаментальные свойства отношений.
- •Фундаментальные свойства отношений
- •Обеспечение целостности данных.
- •Основы реляционной алгебры. Операторы реляционной алгебры. Операторы реляционной алгебры
- •Понятия полной и транзитивной функциональной зависимости. Нормализация, третья нормальная форма, шаги нормализации.
- •Нормальные формы и нормализация
- •Модель «объект-свойство-отношение», er-диаграммы, проектирование схемы баз данных. Инфологическая модель данных «Сущность-связь»
- •Классификация сущностей
- •Язык sql, его структура, стандарты, история развития. Подмножество языка dml: операторы select, insert, update, delete.
- •Типы данных в субд oracle 9.2i
- •Структура языка sql
- •Оператор выбора select
- •Запросы с использованием единственной таблицы Выборка без использования параметра where
- •Выборка с использованием параметра where
- •Использование параметров group by и having
- •Запросы с использованием нескольких таблиц Запросы с использованием соединений
- •Последовательности
- •Создание и удаление последовательностей
- •Изменение последовательностей
- •.Использование последовательностей
- •Оператор ввода новых строк insert Вставка единственной записи в таблицу
- •Вставка множества записей
- •Оператор изменения значений полей update
- •Обновление единственной записи
- •Обновление множества записей
- •Обновление с подзапросом
- •Оператор удаления строк delete
- •Удаление единственной записи
- •Удаление множества записей
- •Удаление с вложенным подзапросом
- •Подмножество языка ddl: операторы create, alter, drop. Представления, их значение; обновляемые представления. Оператор create Создание таблицы
- •Создание первичного ключа
- •Создание уникального ключа
- •Создание домена
- •Создание внешнего ключа
- •Удаление ограничений целостности
- •Оператор drop
- •Представления
- •Создание и удаление представлений
- •Операции выборки из представлений
- •Обновляемые представления
- •Подмножество языка dcl: операторы grant, revoke. Системные привилегии, привилегии на объекты, роли.
- •Объектные и системные привилегии
- •Операторы grant и revoke
- •Транзакции, операторы управления транзакциями: commit, rollback, savepoint; журнал транзакций, уровни блокировок.
- •Операторы управления транзакциями
- •Журналы транзакций
- •Язык pl/sql, его структура, основные операторы.
- •Курсоры, явные и неявные курсоры, операторы работы с курсором, оператор select into.
- •Процедуры, функции, пакеты.
- •Триггеры, их основные свойства и значение.
- •Параллельные архитектуры бд; масштабируемость, надежность, производительность.
- •Распределенные базы данных, фрагментация, тиражирование.
- •Средства защиты данных в субд.
- •Аутентификация/авторизация при помощи паролей.
- •Инкапсуляция передаваемой информации в специальных протоколах обмена.
- •Ограничение информационных потоков.
- •Классы безопасности
- •Шлюзы к базам данных. Архитектура odbc. Www-интерфейс к бд. Промежуточное программное обеспечение (ппо) баз данных
- •Доступ к базам данных
- •Недостатки реляционных субд
- •Манифест систем объектно-ориентированных баз данных Обязательные свойства: золотые правила
- •Необязательные возможности Множественное наследование, проверка и вывод типов, распределенность, проектные транзакции (протяженные транзакции или вложенные транзакции), версии
- •Объектная модель данных
- •Объектно-ориентированные, объектно-реляционные бд, универсальные бд
- •Эволюция технологий и возможностей субд oracle (oracle 8i, oracle 9i, oracle 10g).
- •Роль grid-технологий в организации хранения и обработки данных. Перспективы развития технологий баз данных.
Создание и удаление представлений
Для создания представлений используется следующий синтаксис:
CREATE [OR REPLACE] VIEW имя_представления AS
оператор SELECT
[WITH CHECK OPTION];
Использование необязательного параметра OR REPLACE позволяет заменить уже существующее представление с таким же именем новым. Если существующего представления с таким именем нет, то этот параметр игнорируется.
Примеры создания представлений:
-- создание представления, содержащего все поля таблицы
-- CONTRAGENTS за исключением поля Address (скрытие данных)
CREATE OR REPLACE VIEW Contragents_Lite AS
SELECT Contr_id, Name, Phone, Comments FROM Contragents;
-- создание представления, содержащего информацию о наличии
-- товаров на складе (скрытие сложности запроса):
-- идея создания данного представления в том, чтобы не
-- создавать дополнительную таблицу, а использовать уже
-- имеющуюся информацию из таблиц INCOMING (сделки закупки)
-- и OUTGOING (сделки продажи)
CREATE OR REPLACE VIEW WareHouse
AS
SELECT p.*, (i.Quantity-o.Quantity) Quantity
FROM Products p,
(SELECT p.Prod_id, NVL(SUM(Quantity),0) Quantity
FROM Products p LEFT JOIN Incoming i ON p.Prod_id=i.Prod_id
GROUP BY p.Prod_id) i,
(SELECT p.Prod_id, NVL(SUM(Quantity),0) Quantity
FROM Products p LEFT JOIN Outgoing o ON p.Prod_id=o.Prod_id
GROUP BY p.Prod_id) o
WHERE p.Prod_id=i.Prod_id AND p.Prod_id=o.Prod_id;
Удаление представлений, как и всех других объектов базы данных, осуществляется при помощи оператора DROP, например:
DROP VIEW Contragents_Lite;
Операции выборки из представлений
Для пользователя выборка данных из представления ничем не отличается от выборки данных из таблицы. Иногда пользователи и не догадываются, пользуются они реальной таблицей или представлением. Выборка данных из представлений осуществляется так же, как и из таблиц – при помощи оператора SELECT, например:
-- выборка всей информации обо всех контрагентах
-- за исключением адреса, поскольку поле не было включено
-- в представление
SELECT * FROM Contragents_Lite ORDER BY Name;
-- выборка всей информации о товаре под номером 1,
-- включая его текущее количество на складе
SELECT * FROM WareHouse WHERE Prod_id=1;
Обновляемые представления
Если к представлению можно применить операторы обновления (INSERT, UPDATE или DELETE), то представление является обновляемым (updateble), иначе оно является читаемым (read-only).
Ниже приведены критерии того, является ли представление обновляемым в SQL:
оно базируется на одной таблице;
оно должно включать первичный ключ таблицы;
оно не должно включать полей, полученных в результате применения функций агрегирования;
оно не может содержать спецификации DISTINCT;
оно не должно использовать GROUP BY или HAVING;
оно не должно использовать подзапросы;
оно может быть определено на другом представлении, но это представление должно быть обновляемым;
оно не может содержать константы, строки или выражения в списке выбираемых выходных полей;
для INSERT оно должно включать поля из таблицы, которые имеют ограничения NOT NULL.
Например, приведенное представление Contragents_Lite является обновляемым, поскольку оно удовлетворяет всем перечисленным критериям, а представление WareHouse – нет.
Для обновляемых представлений применимы любые операторы обновления, которые при выполнении по отношению к представлению транслируются на исходную таблицу, на основе которой было создано представление. Однако это правило на первый взгляд не согласуется с функцией представлений по защите данных, описанной ранее. Действительно, если представить, что при помощи представления были скрыты столбцы или строки, но пользователь знает об их существовании, он может выполнить операции обновления данных, затрагивающие скрытую в представлении информацию.
Для предотвращения описанной ситуации применяется параметр WITH CHECK OPTION, который может указываться при создании обновляемых представлений после оператора SELECT. При наличии этого параметра СУБД предотвращает операции обновления данных, если они нарушают условия горизонтальной или вертикальной фильтрации, определенные в предложении в операторе SELECT:
-- создание обновляемого представления с защитой от
-- изменений скрытого столбца Address
CREATE OR REPLACE VIEW Contragents_Lite AS
SELECT Contr_id, Name, Phone, Comments FROM Contragents
WITH CHECK OPTION;