Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОС_ответы.doc
Скачиваний:
43
Добавлен:
27.10.2018
Размер:
21.59 Mб
Скачать

17 Використання агрегатних функцій у запитах.

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

Согласно стандарту ISO, предусмотрено 5 обобщающих функций:

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

Примеры использования агрегатных функций

Пример: Определить количество студентов, сдававших экзамен по каждой дисциплине

SELECT Р1.Дисциплина, Count(*) AS Количество

FROM Р1

WHERE Р1.Оценка is not null

GROUP BY Р1.Дисциплина

ORDER BY Р1.Дисциплина;

Пример : Определить число всех студентов, сдавших успешно сдавших сессию

SELECT COUNT(*) as Количество

FROM Сессия

WHERE Оценка > 2;

Count(*) –подсчет количества кортежей в результирующей таблице

Пример :Определить сколько всего студентов сдавало сессию

(Для удаления дубликатов используется ключевое слово DISTING)

SELECT COUNT (DISTING, Код_Студента) AS Количество

FROM Сессия

WHERE Оценка IS NOT NULL;

Пример: Определить количество всех студентов, сдававших сессию и средний бал на сессии

SELECT

COUNT (DISTING, Код_Студента) AS Количество,

AVG(Оценка) AS СР-бал

FROM Сессия

WHERE Оценка IS NOT NULL;

Пример: Сколько положительных оценок получил каждый студент

SELECT Сессия.[Код студента],Count(Сессия.Оценка) AS [Количество]

FROM Сессия

WHERE Сессия.Оценка>2

GROUP BY Сессия.[Код студента];

Группировка результатов.

GROUP BY <список полей результата>

При использовании обобщающих функций (count(), sum(), max(), min(), avg(), а они применяются к содержимому целого столбца), в результате возвращается одна строка со значением обобщающей функции.

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

Предложение SELECT в этом случае может иметь следующие элементы: имена столбцов, обобщающие функции, константы.

Пример. Вычислить количество студентов, сдававших экзамен по каждой дисциплине.

SELECT P1.Дисциплина, Count(*) as Количество

FROM P1

GROUP BY P1.Дисциплина;

18 Фізична модель даних. Структура записів на носії.

Физические модели баз данных определяют способы размещения данных на диске и способы доступа к ним.

При выборе физической организации учитываются:

1. Эффективность

2. Время получения ответа от системы

3. Минимальные затраты

Физическая модель должна определить:

1. Каким образом вставить новую запись или удалить старую, не нарушая структуры записей и адресации.

2. Как можно определить структуру данных

3. Как организовать структуру, чтобы обеспечить поиск по первичному или нескольким ключам.

Файловая структура баз данных

База данных на диске хранится в виде одного или нескольких файлов, которые содержат одну или несколько записей. Каждая запись состоит из нескольких полей.

Запись соответствует некоторой сущности, а поле – атрибуту.

Физическая запись является единицей обмена данными между жестким диском и ОЗУ.

Физическая запись может содержать несколько логических и наоборот.

Порядок хранения данных в файле зависит от структуры файла.

В базах данных файловые структуры классифицируются следующим образом:

1. Файлы прямого доступа

2. Файлы последовательного доступа

3. Индексные файлы

4. Инвертированные списки.

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

Файлы последовательного доступа разделяются на две группы: неупорядоченные и упорядоченные.

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

Такие файлы используются в случаях:

1. Когда данные загружаются большими порциями

2. Когда при выборке извлекаются все записи таблицы

3. Таблица имеет дополнительные структуры поиска (индекс по ключу).

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

Упорядоченные последовательные файлы

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

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

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

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

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

Файлы с плотным индексом (индексно-прямые). Основная область содержит последовательность записей одинаковой длины в произвольном порядке. Индексная область включает в себя первичный ключ таблицы и номер записи, соответствующей данному значению ключа.

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

Инвертированный список – двухуровневая индексная структура, на первом уровне находится файл, в котором значению вторичного ключа соответствует номер блока. Записи этого файла упорядочены по вторичному ключу. На втором уровне находится цепочка блоков, содержащих номера записей, отвечающих одному и тому же значению вторичного ключа. Блоки упорядочены по значению вторичного ключа.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]