- •Основные понятия информационных систем Информация и субд
- •Файловые системы
- •Структуры файлов
- •Именование файлов
- •Области применения файлов
- •Потребности информационных систем
- •Структуры хранения данных и методы доступа к ним
- •Доступ к базе данных
- •Диспетчер дисков
- •Диспетчер файлов
- •Кластеризация
- •Наборы страниц и файлы
- •Индексирование
- •Плотное и неплотное индексирование
- •Структура типа б-дерева
- •Хеширование
- •Задание
- •Расширяемое хеширование
- •Цепочки указателей
- •Управление данными, размещенными в оперативной памяти
- •Функции и архитектура субд
- •Примеры приложений субд
- •Обзор основных компонентов субд
- •Диспетчер памяти
- •Процессор запросов
- •Диспетчер транзакций
- •Параллелизм
- •Задание. Привести схему применения двухфазной блокировки для решения проблемы незафиксированной зависимости и проблемы несовместимого анализа.
- •Журнализация
- •Поддержка языков бд
- •Типовая организация современной субд
- •Ранние подходы к организации бд
- •Основные особенности систем, основанных на инвертированных списках
- •Структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Иерархические системы
- •Иерархические структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Сетевые системы
- •Сетевые структуры данных
- •Манипулирование данными сетевой схемы
- •Ограничения целостности сетевых систем
- •Достоинства и недостатки
- •Реляционные базы данных Общие понятия и терминология реляционного подхода
- •Тип данных
- •Фундаментальные свойства отношений (таблиц)
- •Реляционная модель
- •Каталог
- •Базовые таблицы, представления, снимки и запросы
- •Отношения и предикаты
- •Null-значения; потенциальные и внешние ключи
- •Базисные операции над реляционными данными
- •5.1. Реляционная алгебра
- •5.1.1. Общая интерпретация реляционных операций
- •Замкнутость реляционной алгебры и операция переименования
- •Особенности теоретико-множественных операций реляционной алгебры
- •Специальные реляционные операции
- •Операция взятия проекции
- •Операция соединения отношений
- •Операция деления отношений
- •Упражнения
- •Задание
- •Операция расширения и подведения итогов
- •Операция подведения итогов
- •Задания
- •Операторы обновления
- •Упражнения по запросам
- •5.2. Реляционное исчисление
- •Кортежные переменные и правильно построенные формулы
- •Еще раз о свободных и связанных переменных
- •Целевые списки и выражения реляционного исчисления
- •Реляционное исчисление доменов
- •Список литературы
Задания
Написать выражение для запроса: «Получить города, в которых хранится более пяти красных деталей».
Написать выражение для запроса: «Получить города, в которых хранится не более пяти красных деталей» (!!!).
Операторы обновления
Операция присвоения дает возможность «запомнить» значение некоторых алгебраических выражений в базе данных и, таким образом, изменять состояние базы данных или, иначе говоря, обновлять базу данных. Так например, с помощью операции Union(объединение) можно вставить кортежи, аMinus(вычитание) – удалить кортежи. Однако присвоение – это несколько грубая операция, потому что она позволяет только полностью заменять значение отношения. на практике требуются более точные операции обновления. Ниже представлен синтаксис этих операций.
INSERT. Операторвставкиимеет следующий вид:
INSERT source INTO target;
Пример: INSERT (S WHERE CITY = ‘London’) INTO TEMP;
UPDATE. Операторобновленияимеет следующий вид:
UPDATEtargetсписок-присвоений, где список-присвоений имеет форму
Атрибут:=скалярное-выражение
Пример: UPDATEPWHERECOLOR=’RED’CITY:=’Paris’;
DELETE. Операторудаленияимеет следующий вид:
DELETEtarget, гдеtarget– реляционное выражение; все кортежи в результирующем отношении удаляются.
Пример: DELETE S WHERE STATUS <20;
Упражнения по запросам
Для выполнения упражнений используются следующие отношения:
ПоставщикиS(S# (номер поставщика),Sname(имя поставщика),Status,CITY(город))PRIMARYKEY(S#)
ДеталиP(P# (номер детали),Pname(название детали),Color(цвет детали),Weight,CITY)PRIMARYKEY(P#)
ПроектыJ(J#,JNAME(название проекта),CITY)PRIMARYKEY(J#)
ОтправкиSPJ(S#,P#,J#,Qty(количество))
PRIMARY KEY (S#, P#, J#) FOREIGN KEY (S#) REFERENCES S
FOREIGN KEY (P#) REFERENCES P
FOREIGN KEY (J#) REFERENCES J
Получить полную информацию обо всех проектах.
Получить полную информацию обо всех проектах в Лондоне.
Получить номера поставщиков, которые обеспечивают проект J1.
Получить все отправки, где количество находится в диапазоне от 300 до 750 включительно.
Получить все сочетания «цвета деталей – города деталей».
Получить все такие тройки «номера поставщиков – номера деталей – номера проектов», для которых выводимые поставщик, деталь и проект размещены в одном городе.
Получить все такие тройки «номера поставщиков – номера деталей – номера проектов», для которых выводимые поставщик, деталь и проект не размещены в одном городе.
Получить все такие тройки «номера поставщиков – номера деталей – номера проектов», для которых никакие из двух выводимых поставщиков, деталей и проектов не размещены в одном городе.
Получить номера деталей, поставляемых поставщиком в Лондоне.
Получить номера деталей, поставляемых поставщиком в Лондоне для проекта в Лондоне.
Получить все пары названий городов, для которых поставщик из первого города обеспечивает проект во втором городе.
Получить номера деталей, поставляемых для всех проектов, обеспечиваемых поставщиком из того же города, где размещен проект.
Получить номера проектов, обеспечиваемых, по крайней мере, одним поставщиком не из того же города.
Получить все такие пары номеров деталей, которые обе поставляются одновременно одним поставщиком.
Получить общее число проектов, обеспечиваемых, поставщиком S1.
Получить общее количество деталей Р1, поставляемых поставщиком S1.
Для каждой детали, поставляемой для проекта, получить номер детали, номер проекта и соответствующее общее количество.
Получить номера деталей, поставляемых для некоторого проекта со средним количеством больше 320.
Получить имена проектов, обеспечиваемых поставщиком S1.
Получить цвета деталей, поставляемых поставщиком S1.
Получить номера деталей, поставляемых для какого-либо проекта в Лондоне.
Получить номера проектов, использующих, по крайней мере, одну деталь, имеющуюся у поставщика S1.
Получить номера поставщиков, поставляющих, по крайней мере, одну деталь, поставляемую, по крайней мере, одним поставщиком, который поставляет, по крайней мере, одну красную деталь.
Получить номера поставщиков со статусом, меньшим чем у поставщика S1.
Получить номера проектов, город которых стоит первым в алфавитном списке городов.
Получить номера проектов, для которых среднее количество поставляемых деталей Р1 больше, чем наибольшее количество любых деталей, поставляемых для проекта J1.
Получить номера поставщиков, поставляющих деталь Р1 для некоторого проекта в количестве, большем среднего количества деталей Р1 в поставках для этого проекта.
Получить номера проектов, для которых не поставляются красные детали поставщиками из Лондона.
Получить номера проектов, полностью обеспечиваемых для лондонских проектов.
Получить номера поставщиков, поставляющих одну и ту же деталь для всех проектов.
Получить номера проектов, обеспечиваемых, по крайней мере, всеми деталями поставщика S1.
Получить все города, в которых расположен, по крайней мере, один поставщик, одна деталь или один проект.
Получить номера деталей, поставляемых либо лондонским поставщиком, либо для лондонского проекта.
Получить пары «номер поставщика – номер детали», такие, что данный поставщик не поставляет данную деталь.
Получить все пары номеров поставщиков, скажем SxиSy, такие, что оба эти поставщика поставляют в точности одно и то же множество деталей.