- •1.Понятие базы данных
- •2. Предметная область информационной системы
- •3. Назначение и основные компоненты системы баз данных
- •4. Уровни представления баз данных
- •5. Понятие модели данных
- •6. Типы структур данных
- •7. Операции над данными
- •8. Ограничения целостности
- •9. Сетевая модель данных (смд)
- •10. Иерархическая модель данных (имд)
- •11. Реляционная модель данных (рмд)
- •12. Понятие отношения
- •13. Схема отношения
- •14. Достоинства и недостатки рмд
- •15. Операции реляционной алгебры. Язык манипулирования данными для реляционной модели
- •16. Другие модели данных
- •17. Объектно-реляционные модели данных
- •18. Объектно-ориентированные модели данных
- •19 Обзор современных систем управления базами данных (субд)
- •20 Классификация субд
- •21 Правила Кодда для реляционной субд (рсубд)
- •22 Основные функции реляционной субд
- •24 Типы данных sql.
- •Типы данных sql с плавающей точкой (дробные числа) и целые числа
- •Типы данных sql – Дата и время
- •25 Sql: создание и модификация базы данных.
- •26 Sql: Выборка данных. Поиск
- •27 Sql: Выборка из нескольких таблиц.
- •28 Sql:Агрегатные функции.
- •29 Sql: Подзапросы.
- •30 Sql: Представления.
- •31 Sql: Операторы модификации данных.
- •32 Кластеризация данных
- •33 Требования к проекту базы данных
- •34 Этапы проектирования базы данных
- •1. Предварительный анализ по.
- •2. Рассмотрение и принятие результатов анализа.
- •7. Согласование стандартов проектирования, в частности:
- •35 Инфологическое проектирование
- •1. Функциональный подход к проектированию бд.
- •2. Предметный подход к проектированию бд.
- •36 Проектирование с использованием метода "сущность-связь"
- •37 Определение требований к операционной обстановке
- •37 Выбор субд и инструментальных программных средств
- •39 Логическое проектирование бд
- •40 Физическое проектирование бд
- •41 Проектирование реляционной базы данных
- •42 Аномалии модификации данных
- •43 Нормализация и декомпозиция отношений
- •44 Первая нормальная форма (1нф).
- •45 Функциональные зависимости. Вторая нормальная форма (2нф).
- •46 Транзитивные зависимости. Третья нормальная форма (3нф).
- •47 Механизмы среды хранения и архитектура субд
- •48 Структура хранимых данных
- •49 Управление пространством памяти и размещением данных
- •50 Виды адресации хранимых записей
- •51 Способы размещения данных и доступа к данным в рбд
- •52 Способы доступа к данным
- •53 Индексирование данных. Индексированные файлы
- •54 Способы организации индексов
- •55 Многоуровневые индексы на основе в-дерева
- •56 Хеширование. Хешированные файлы
- •57 Методы хеширования
- •58 Разрешение коллизий
30 Sql: Представления.
Представление — это именованная таблица, содержимое которой является результатом запроса, заданного при описании представления. Причем данный запрос выполняется всякий раз, когда таблица-представление становится объектом команды SQL.
Представления позволяют:
• ограничивать число столбцов, из которых пользователь выбирает или в которые вводит данные;
• ограничивать число строк, из которых пользователь выбирает или в которые вводит данные;
• выводить дополнительные столбцы, преобразованные из других столбцов базовой таблицы;
• выводить группы строк таблицы.
Представление определяется с помощью команды CREATE VIEW (СОЗДАТЬ ПРЕДСТАВЛЕНИЕ). Например:
CREATE VIEW MOSCSTUD AS SELECT * FROM STUDENT WHERE CITY = 'Москва';
Оператор INSERT, примененный к представлению, фактически осуществляет вставку строки в соответствующую базовую таблицу, причем во все столбцы этой таблицы независимо от того, видны они пользователю через представление или скрыты от него.
Любое применение оператора DELETE удаляет строки базовой таблицы независимо от их значений.
31 Sql: Операторы модификации данных.
Это команды - INSERT (вставить), UPDATE (обновить), DELETE (удалить).
Команда INSERT осуществляет вставку в таблицу новой строки. В простейшем случае она имеет следующий вид:
INSERT INTO <имя таблицы> VALUES (<значение>, <значение>, ...);
Например, ввод новой строки в таблицу STUDENT может быть осуществлен следующим образом
INSERT INTO STUDENT
VALUES (101,'Иванов'/Александр', 200, 3,'Москва','6/10/1979', 15);
Удаление строк из таблицы осуществляется с помощью команды DELETE.
Например
DELETE FROM STUDENT 1
WHERE CITY = “М0СКВа”;
Команда UPDATE позволяет изменять, то есть обновлять, значения некоторых или всех полей в существующей строке или строках таблицы.
Для указания конкретных строк таблицы, значения полей которых должны быть изменены, в команде UPDATE можно использовать предикат, указываемый в предложении WHERE.
UPDATE UNIVERSITY SET RATING=200 WHERE CITY = 'Москва';
32 Кластеризация данных
Принцип организации кластеров
Кластеризация является методом совместного хранения родственных данных (таблиц). Кластер – это структура памяти, в которой хранится набор таблиц (в одних и тех же блоках данных). Эти таблицы должны иметь общие столбцы, используемые для соединения (например, первичный ключ таблицы ТОВАРЫ и внешний ключ таблицы ПОСТАВКИ, рис. 6.6,б).
Рис. 6.6. Некластеризованные (а) и кластеризованные (б) данные
Кластерный ключ – это столбец или набор столбцов (полей записи), общих для кластеризуемых таблиц. Каждая таблица, созданная в кластере, должна иметь столбцы, соответствующие типам и размерам столбцов кластерного ключа. Количество столбцов в кластерном ключе ограничено (например, для Oracle8 это ограничение равно 16).
Совместное хранение означает, что на одной странице или в одном блоке памяти хранятся данные из всех кластеризованных таблиц, имеющие одинаковое значение кластерного ключа. Физически это обычно реализуется так: в начале страницы (блока) хранится запись из таблицы, для которой кластерный ключ является первичным (или уникальным), а вслед за ней располагаются записи из другой таблицы (таблиц), имеющие те же значения кластерного ключа. Фактически, данные хранятся в виде соединения таблиц по значениям кластерного ключа. В этом случае выигрыш по времени для выполнения соединения таблиц по сравнению с раздельно хранимыми таблицами составляет 3-6 раз.
Если все данные, относящиеся к одному значению кластерного ключа, не помещаются в одном блоке, то выделяется новый блок памяти и предыдущий блок хранит ссылку на него. Но если система позволяет изменять размер блока (в частности, СУБД Oracle), при создании кластера желательно установить размер блока, исходя из оценки среднего количества записей с одинаковыми значения кластерного ключа.
Значения кластерного ключа таблицы могут обновляться, но, так как расположение записи зависит от этого значения, обновление может вызвать физическое перемещение записи. Поэтому часто обновляющиеся атрибуты не являются хорошими кандидатами на вхождение в кластерный ключ.
Два основных преимущества кластеров:
Уменьшается обмен с диском, улучшается время доступа к кластеризованным таблицам и их соединение.
Значение кластерного ключа хранится только один раз для кластера вне зависимости от того, сколько строк различных таблиц имеют это значение кластерного ключа, за счёт чего достигается экономия памяти.
С другой стороны, наличие кластеров обычно увеличивает время выполнения операции добавления записи (INSERT), т.к. требует от системы дополнительных временных затрат на просмотр блоков данных для поиска того блока, куда нужно поместить новую запись. (Наличие кластеров прозрачно для пользователей и приложений.)
6.4.2. Использование кластеров
Кластеры обычно строятся для таблиц, часто используемых в соединении друг с другом, например, связанных отношением "один-ко-многим". Не стоит создавать кластер:
если данные в кластерном ключе этих таблиц часто обновляются;
если часто требуется полный просмотр отдельной таблицы.
если суммарные данные таблиц с одним и тем же значением кластерного ключа занимают больше одного блока данных.
Изменение столбцов кластера требует гораздо больше системных ресурсов, чем обновление некластеризованных данных, так что выигрыш от ускорения поиска данных оказывается меньше, чем затраты на физическое перемещение строк.
Полный просмотр индивидуальных таблиц кластера требует больше времени, чем просмотр некластеризованных таблиц, т.к. физически требуется обратиться к большему числу блоков. Если по отдельности некластеризованные таблицы занимают n1 и n2 блока соответственно, то вместе они будут занимать (n1+n2) блоков, и для полного просмотра каждой из них придётся обращаться к диску (n1+n2) раз.
Часто для окончательного определения целесообразности создания кластера в конкретной ситуации ставят эксперименты и измеряют производительность БД.