- •Основные требования к организации бд.
- •Основные компоненты субд (27).
- •Три уровня представления данных в автоматизированных информационных системах.
- •Логическая и физическая независимость данных.
- •Классификация моделей данных.
- •Инфологическое моделирование.
- •Иерархическая модель данных.
- •Сетевая модель данных.
- •Реляционная модель данных. Элементы реляционной модели.
- •Многотабличные запросы. Состояние справочной целостности. Использование псевдонимов.
- •Использование union для объединения результатов инструкций select.
- •Использование distinct.
- •Изменение существующих данных, представление.
- •Распределенная обработка данных (модель файлового сервера, удаленного доступа к данным, активного сервера, сервера приложений).
- •Модели транзакций.
- •Файловые структуры, используемые для хранения информации в бд (файлы прямого и последовательного доступа, индексные файлы, инвертированные списки, b-деревья и т.Д.)
- •Хеширование. Методы разрешения коллизий.
Многотабличные запросы. Состояние справочной целостности. Использование псевдонимов.
Пример: пусть необходимо поставить в соответствие преподавателей и учебные предметы, которые он ведет
Предполагается, что созданы следующие таблицы:
STUDENT (SNUM, SFAM, SIMA, STIP)
USPEV (UNUM, OCENKA, UDATA, SNUM, PNUM)
PREDMET (PNUM, PNAME, TNUM)
TEACHER (TNUM, TFAM, TIMA, TDATE)
UDATA – дата оценки
TDATE – день рождения учителя
Вывод фамилии преподавателя и предмет, который он ведет
SELECT TEACHER.TFAM, PREDMET.PNAME;
FROM TEACHER, PREDMET;
WHERE TEACHER.TNUM=PREDMET.TNUM
Эти таблицы уже были соединены через поле TNUM. Эта связь называется состоянием справочной целостности. Объединение многотабличных запросов, которые используют предикаты, основанные на равенствах – объединение по равенству. Этот же подход может использоваться для объединения вместе двух копий одиночной таблицы. Когда объединяется таблица сама с собой, все повторяемые имена столбца заполняются префиксами имени таблицы. Чтобы ссылаться к этим столбцам внутри запроса, необходимо иметь 2 различных имени для этой таблицы. Это можно сделать с помощью определения временных имен, называемых псевдонимами, которые определяются в предложении FROM запроса.
Вывод фамилий студентов, имеющих одинаковый размер стипендии
SELECT FIRST.SFAM, SECOND.SFAM, FIRST.STIP;
FROM STUDENT FIRST, STUDENT SECOND; WHERE FIRST.STIP=SECOND.STIP
FIRST, SECOND - псевдонимы
В данном запросе SQL ведет себя так, как если бы он соединял 2 различные таблицы, называемые FIRST и SECOND. Псевдоним существует только тогда, команда выполняется, а после завершения запроса псевдоним больше не имеет никакого значения. Допускается использовать любое число псевдонимов для одной таблицы запросов.
Использование union для объединения результатов инструкций select.
UNION объединяет информацию из 2-х и более отдельных запросов SELECT в один курсор или таблицу. При этом в команде SELECT можно использовать до 10 членов UNION, связывая каждую инструкцию SELECT с предыдущей. Результирующий набор, созданный первой командой SELECT, определяет требуемую структуру для остальных команд SELECT. Порядок, количество, размер и тип полей в первой команде SELECT определяет структуру для всех последующих команд SELECT.
Например, для получения списка всех студентов и преподавателей фамилии которых заключены между буквами «К» и «С»:
SELECT SFAM, SIMIA FROM STUD;
WHERE SFAM BETWEEN ‘K’ AND ‘C’;
UNION;
SELECT TFAM, TIMIA FROM TEACHER;
WHERE TFAM BETWEEN ‘K’ AND ‘C’
Когда 2 или более запросов подвергаются объединению, их столбцы вывода должны быть совместимы для объединения. Это означает для каждого запроса необходимость включения одинакового числа столбцов в том же порядке, что и 1, 2, 3 и т.д. и при этом должна присутствовать совместимость типов.
Например: символьные поля должны иметь одинаковое число символов. Кроме того нельзя использовать агрегатные функции в запросе SELECT при объединении. Агрегатные функции – MIN, MAX, AVG, SUM. Также UNION будет автоматически исключать дубликаты строк из вывода.
Воздействие ключевого слова UNION аналогично действию DISTINCT. Это значит, что каждая добавленная в результирующий набор запись проверяется на уникальность. Члены UNION используются только для объединения запросов, но никак не влияют на подзапросы.
Правила объединения с помощью UNION:
Любое поле, включенное в первый список полей, должно быть представлено полем или заглушкой в последующих списках полей.
Любое поле из последующих списков полей, которое не входит в первый список полей, должно быть представлено заглушкой в первом списке
В первом списке не должно быть вычисляемых полей
Члены ORDER BY и INTO могут входить в любую инструкцию SELECT, но только 1 раз и применяются ко всему результату.
Член ORDER BY должен ссылаться на поля, по их позициям в списке, а не по имени.
При отсутствии члена ORDER BY для сортировки используется порядок следования полей в списке.
Члены GROUP BY и HAVING могут присутствовать в каждой инструкции SELECT, причем их влияние ограничено только результатами работы данной инструкции SELECT.
С помощью членов UNION нельзя объединять результаты подзапросов, то есть члены UNION нельзя применить к инструкциям SELECT, используемым внутри члена WHERE других инструкций SELECT.
При построении объединения можно использовать не более 10 членов UNION.
