
- •- Бд и банк данных (БнД).
- •- Лекция 7. Определения и характеристики нормальных форм 1nf, 2nf, 3nf, bcnf. Понятие и виды денормализации.
- •- Процесс нормализации.
- •- Лекция 9. Языки манипулирования данными для реляционной модели. Язык запросов sql, общие характеристики. Основы синтаксиса sql; выражения и основные типы данных языка sql.
- •Схемы хеширования
- •Отображение ключей путем хеширования с цепочками
- •- Основные принципы технологии клиент-сервер.
- •Способы (модели) реализации архитектуры клиент-сервер
- •- Классификация субд по типу модели представления данных.
- •- Виды функциональных зависимостей.
- •- Термины реляционной модели.
- •- Операторы в языке sql.
- •- Уровни представления данных в информационной системе.
- •Трехуровневая модель системы управления базой данных
От Тулуповой О.П.:
На прохождение теста = 50 мин
Вопросов в тесте = 30
Оценка:
c 80% (доп. 6 неправильных ответов ) – "5"
с 70% (доп. 9 неправильных ответов ) – "4"
с 60% (доп. 12 неправильных ответов ) – "3"
более 12 неправильных ответов –"2"
К экзамену прочитать лекции по БД, в электронном варианте лекции лежат на диске Р:\ в моей папке.
Повторить:
- Бд и банк данных (БнД).
БД – есть унифицированная совокупность взаимосвязанных именованных данных с общими правилами организации, описания, хранения и обработки для отображения состояния объектов и их взаимосвязей некоторой предметной области и совместно используемых приложениями (пользователями).
Автоматизированный БнД – это система информационных , программных, языковых, организационных и технических средств, предназначенных для централизованного накопления и коллективного многоаспектного использования данных в некоторой прикладной области. БнД включает в себя одну или несколько БД, СУБД и комплекс прикладных программ.
- Лекция 7. Определения и характеристики нормальных форм 1nf, 2nf, 3nf, bcnf. Понятие и виды денормализации.
Определение. Отношение находится в 1NF, если любые значения всех атрибутов являются атомарными и в отношении нет повторяющихся групп.
Очевидно, если произвольное отношение отвечает требованиям реляционной модели, оно соответственно удовлетворяет определению 1NF.
Определение. Отношение находится в 2NF, если оно соответствует 1NF и его неключевые атрибуты полностью зависят от всего первичного ключа.
Определение. Отношение находится в 3NF, если оно соответствует 2NF и не содержит транзитивных зависимостей.
Определение. Отношение находится в BCNF, если оно соответствует 3NF и если и только если любая функциональная зависимость между её полями сводится к полной функциональной зависимости от возможного ключа.
- Процесс нормализации.
Нормализация – это процесс проектирования, позволяющий гарантировать эффективность структур данных в реляционной БД. При проектировании данные разбиваются на несколько связанных таблиц, с соблюдением специальных требований нормализации.
Нормализация – практически - это разбиение таблицы на две или более, обладающих лучшими свойствами при включении, изменении и удалении данных. Окончательная цель нормализации сводится к получению такого проекта базы данных, в котором каждый факт появляется лишь в одном месте, т.е. исключена избыточность информации. Это делается не столько с целью экономии памяти, сколько для исключения возможной противоречивости (несогласованности) хранимых данных.
Основой процесса нормализации является предложенный Э.Коддом в рамках реляционной теории формальный аппарат, называемый нормализацией отношений.
Следует отметить, что процесс нормализации не имеет отношения к физическому размещению данных. Речь идет только о пользовательском и глобальном логическом представлении данных
Процесс нормализации основан на понятии функциональной зависимости атрибутов.
- Лекция 9. Языки манипулирования данными для реляционной модели. Язык запросов sql, общие характеристики. Основы синтаксиса sql; выражения и основные типы данных языка sql.
Язык SQL – самый распространенный и пока единственный стандартный язык для работы с БД. Практически все крупнейшие разработчики СУБД в настоящее время создают свои продукты с использованием языка SQL либо с SQL-интерфейсом. В него сделаны огромные инвестиции как со стороны разработчиков, так и со стороны пользователей. Он стал частью архитектуры приложений, является стратегическим выбором многих крупных и влиятельных организаций.
Язык, в терминах которого дается описание языка SQL, называется метаязыком. Синтаксические определения обычно задают с помощью специальной металингвистической символики, называемой Бэкуса-Наура формами (БНФ). Прописные буквы обычно используются для записи зарезервированных слов языка SQL. Строчные буквы употребляются для записи слов, определяемых пользователем. Применяемые в нотации БНФ символы и их обозначения показаны в таблице.
Символ |
Обозначение |
::= |
Равно по определению |
| |
Необходимость выбора одного из нескольких приведенных значений |
<…> |
Описанная с помощью метаязыка структура языка |
{…} |
Обязательный выбор некоторой конструкции из списка |
[…] |
Необязательный выбор некоторой конструкции из списка |
[,…n] |
Необязательная возможность повторения конструкции от нуля до нескольких раз |
Идентификаторы языка SQL предназначены для обозначения объектов в базе данных и являются именами таблиц, представлений, столбцов и других объектов базы данных. Символы, которые могут использоваться в создаваемых пользователем идентификаторах языка SQL, должны быть определены как набор символов. Стандарт SQL задает набор символов, который используется по умолчанию, – он включает строчные и прописные буквы латинского алфавита (A-Z, a-z), цифры (0-9) и символ подчеркивания (_). На формат идентификатора накладываются следующие ограничения:
идентификатор может иметь длину до 128 символов;
идентификатор должен начинаться с буквы;
идентификатор не может содержать пробелы.
<идентификатор>::=<буква>|{<буква>|<цифра>}[,...n]
Большинство компонентов языка не чувствительны к регистру. Поскольку у языка SQL свободный формат, отдельные SQL-операторы и их последовательности будут иметь более читаемый вид при использовании отступов и выравнивания.
Основные категории команд (специализированные «подъязыки») языка SQL:
DDL – язык определения данных;
DML – язык манипулирования данными;
DQL – язык запросов;
DCL – язык управления данными;
команды администрирования данных;
команды управления транзакциями
Язык запросов DQL наиболее известен пользователям реляционных баз данных, несмотря на то, что он включает одну команду (или оператор) SELECT. Эта команда вместе со своими многочисленными опциями и предложениями используется для формирования запросов к реляционной базе данных.
Оператор SELECT имеет (в простейшем случае) следующий формат:
SELECT [ALL | DISTINCT ] {*|[имя_столбца
[AS новое_имя]]} [,...n]
FROM имя_таблицы [[AS] псевдоним] [,...n]
[WHERE <условие_выбора>]
[GROUP BY имя_столбца_группировки [,...n]]
[HAVING < условие_выбора групп>]
[ORDER BY имя_столбца [,...n]]
Ключевое слово ALL означает, что в результирующий набор строк включаются все строки, удовлетворяющие условиям запроса. DISTINCT означает, что в результирующий набор включаются только различные строки, то есть дубликаты строк результата не включаются в набор.
Символ * (звездочка) означает, что в результирующий набор включаются все столбцы из исходных таблиц запроса.
В разделе FROM задается перечень исходных отношений (таблиц) запроса.
В разделе WHERE задаются условия отбора строк результата или условия соединения кортежей исходных таблиц, подобно операции условного соединения в реляционной алгебре.
В разделе GROUP BY задается список полей группировки.
В разделе HAVING задаются предикаты-условия, накладываемые на каждую группу.
В части ORDER BY задается список полей упорядочения результата, то есть список полей, который определяет порядок сортировки в результирующем отношении.
- Лекция 14. Понятия об индексации и хешировании. Физическая организация базы данных; хешированные, индексированные файлы.
Чтобы пользователь чувствовал себя комфортно, время ожидания ответа на запрос к БД должно быть приемлемым – желательно не превышать нескольких секунд. В связи с этим требованием, на физическом уровне архитектуры баз данных специально разрабатываются методы ускорения выборки, позволяющие обойтись без полного перебора строк при выполнении реляционных операций модификации отношений и отбора данных.
Наибольший эффект дают метод индексирования и метод хеширования значений ключей отношения.
Индексирование
Индекс, индексирование представляет собой механизм доступа, ускоряющий выборку данных из таблицы.
Индексирование – логическая сортировка строк таблицы. Оно заключается в создании вспомогательных файлов, содержащих упорядоченные списки значений ключей отношения со ссылками на строку отношения, в которой они находятся.
Индексные файлы занимают дополнительную память, но резко ускоряют поиск, благодаря применению специальных высокоэффективных методов поиска, например, метода половинного деления. Для одного отношения может быть создано несколько индексов. Кроме того, можно создавать индекс для нескольких отношений, если они содержат одинаковые атрибуты, что позволяет ускорить выполнение операций соединения отношений.
Индексы позволяют находить строки, в которых значения ключевых полей совпадают с заданным значением или принадлежат заданному интервалу.
Хеширование (перемешивание, иногда называли рандомизацией)
Хеширование (или хэширование, англ. hashing, от hash - перемешивание) – это метод прямого произвольного доступа к записям базы данных, обеспечивающий быструю произвольную выборку и редактирование записей.
Метод заключается в преобразовании ключа записи в абсолютный или относительный адрес расположения записи в физической памяти. Хеширование обычно используется для уменьшения времени доступа к дисковым файлам базы данных.
Функцию преобразования ключа обычно называют функцией хеширования (хеш-функцией или функцией свёртки), таких функций много, они имеют разную эффективность. Результат вычисления хеш-функции – хеш-код (или хеш-адрес) – обычно целое число в диапазоне физических номеров строк таблицы.
В общем случае однозначного соответствия между исходными данными и хеш-кодом нет. Поэтому может существовать множество записей данных, дающих одинаковые хеш-коды – т.е. возникают так называемые коллизии. Вероятность возникновения коллизий играет немаловажную роль в оценке «качества» хеш-функций. В идеале для задач поиска хеш-адрес должен быть уникальным, чтобы за одно обращение получить доступ к элементу, характеризуемому заданным ключом (идеальная хеш-функция). Однако на практике идеал приходится заменять компромиссом и исходить из того, что получающиеся наборы с одинаковым хеш-адресом содержат более одного элемента – т.е. допускаются коллизии. Коллизии разрешаются за счет организации списков в дополнительных участках памяти.
На практике часто используют простые хеш-функции, например, f(k)= k mod p, где k – целое число, первичный ключ отношения; р – простое целое число; mod – операция, вычисляющая остаток при целочисленном делении.
Хеширование используется не только в базах данных – это широко используемый метод информатики. Хеширование полезно, когда широкий диапазон возможных значений должен быть сохранен в малом объеме памяти, и нужен способ быстрого, практически произвольного доступа. Заглядывая в адресную книгу, энциклопедию, алфавитный указатель, мы даже не задумываемся, что упорядочение по алфавиту является не чем иным, как хешированием.
В общем, в широком смысле, – хеширование есть разбиение множества ключей (однозначно характеризующих элементы хранения и представленных, как правило, в виде текстовых строк или чисел) на непересекающиеся подмножества (наборы элементов), обладающие определенным свойством. Это свойство и описывается хеш-функцией, и называется хеш-адресом. Решение обратной задачи возложено на хеш-структуры (хеш-таблицы): по хеш-адресу они обеспечивают быстрый доступ к нужному элементу.
В определенном смысле, хеширование похоже на использование массивов для прямого доступа к элементам данным по индексу массива. Как известно, массив задает отображение (A) множества индексов (I) на множество элементов (E), т. е. A: I → E. Массив позволяет по индексу быстро найти требуемый элемент. Хеширование решает в точности такую же задачу. Однако здесь уже в роли индекса выступает хеш-адрес, который определяется как значение некоей хеш-функции, применяемой к уникальному ключу. В этом смысле хеш-структуры можно рассматривать как обобщение массива.
Хеш-таблицы часто применяются в базах данных, и, не менее широко, в языковых процессорах типа компиляторов и ассемблеров, где они эффективно обслуживают таблицы идентификаторов. В таких приложениях, таблица – наилучшая структура данных.
Так как всякий доступ к таблице должен быть произведен через хеш-функцию, функция должна удовлетворять двум требованиям: Она должна быть быстрой, и она должна порождать хорошие ключи для распределения элементов по таблице. Последнее требование минимизирует коллизии (случаи, когда два разных элемента имеют одинаковое значение хеш-функции) и предотвращает случай, когда элементы данных с близкими значениями попадают только в одну часть таблицы