Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Temy_na_zachet.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
175.96 Кб
Скачать

От Тулуповой О.П.:

На прохождение теста = 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. Массив позволяет по индексу быстро найти требуемый элемент. Хеширование решает в точности такую же задачу. Однако здесь уже в роли индекса выступает хеш-адрес, который определяется как значение некоей хеш-функции, применяемой к уникальному ключу. В этом смысле хеш-структуры можно рассматривать как обобщение массива.

Хеш-таблицы часто применяются в базах данных, и, не менее широко, в языковых процессорах типа компиляторов и ассемблеров, где они эффективно обслуживают таблицы идентификаторов. В таких приложениях, таблица – наилучшая структура данных.

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

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