- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Учреждение образования
- •«Белорусский государственный университет
- •Информатики и радиоэлектроники»
- •Пояснительная записка
- •Содержание дисциплины
- •1. Название тем лекционных занятий, их содержание, объем в часах.
- •2 Перечень тем ипр их наименование и объем в часах
- •3 Перечень тем контрольных работ их наименование и объем в часах
- •4. Курсовая работа, ее характеристика
- •Перечень тем курсовых работ
- •5. Литература
- •5.1 Основная
- •5.2 Дополнительная
- •6. Перечень компьютерных программ, наглядных и других пособий, методических указаний и материалов и технических средств обучения
- •7. Учебно-методическая карта дисциплины
- •1.1.3. Способы организации знаний в базах знаний
- •1.1.4. Применение баз знаний
- •1.1.5. Виды моделей баз данных
- •2. Теория баз данных
- •2.1. История развития представлений о базах данных
- •2.1.1. Области применения вычислительной техники
- •2.1.2. Базы данных и информационные системы
- •2.1.3. История развития баз данных
- •2.1.4. Этапы развития баз данных
- •2.2. Основные термины и определения теории бд, виды бд и их отличия
- •2.2.1. Классификация бд
- •2.3. Реляционные бд, понятие сущности и связи
- •2.3.1. Общие определения
- •2.3.2. Факты о реляционной модели данных
- •2.3.3. Достоинства реляционной модели данных
- •2.3.4. Недостатки реляционной модели данных
- •2.3.5. Целостность бд
- •2.3.6. Отношения
- •2.3.7. Кортежи и отношения
- •2.3.8. Связи
- •2.3.9. Ключи отношений
- •2.3.10. Ссылочная целостность
- •2.3.11. Консистентность данных
- •2.4. Многоуровневая архитектура баз данных, понятие физического и логического уровней баз данных
- •2.4.1. Определения
- •2.4.2. Многоуровневая структура баз данных
- •Indexed р#
- •2.4.3. Постоянная и переменная длина записи
- •2.4.4. Способы представления данных
- •2.4.5. Простейший вариант – плоский файл
- •2.4.6. Факторизация по значениям поля
- •2.4.7. Индексирование по полям
- •2.4.8. Комбинация простых представлений
- •2.4.9. Использование цепочек указателей
- •2.4.10. Многосписочные структуры
- •2.4.11. Инвертированная организация
- •2.4.12. Иерархическая организация
- •2.4.14. Промежуточный итог
- •2.4.15. Методы индексирования
- •2.4.16. Индексирование по комбинации полей
- •2.4.17. Селективный индекс
- •2.4.18. Индексация по методу сжатия
- •2.4.19. Фронтальное сжатие
- •2.4.20. Сжатие окончания
- •2.4.21. Символьные указатели
- •2.4.23. Индексно-последовательная организация
- •2.4.24. Сбалансированные деревья
- •2.4.25. Ведение файла
- •2.4.26. Хэширование
- •2.5.2. Факторы эффективности хэширования
- •2.5.3. Размер участка памяти
- •2.5.4. Плотность заполнения
- •2.5.5. Алгоритмы хэширования
- •2.5.6. Размещение записей в области переполнения
- •2.5.7. Итог
- •2.6. Механизмы обработки и хранения данных в бд
- •2.6.1. Введение
- •2.6.2. Механизмы обработки и хранения данных в ms-sql 6.0-6.5
- •2.6.3. Механизмы обработки и хранения данных в ms-sql 7.0 и более поздних версиях
- •2.6.4. Метод доступа isam
- •2.6.5. Метод доспута MyIsam
- •2.6.6. Метод доступа vsam
- •2.6.7. Включение записей в *sam-файлы
- •2.6.8. Размещение индексов для *sam-файлов
- •2.6.9. Метод доступа InnoDb
- •InnoDb в MySql 5.1
- •2.7.3. Сетевые структуры
- •3.1.4. Стандарты разработки бд/субд
- •3.1.5. Sql и его стандарты
- •3.1.6. Использование методологии idef1x
- •3.1.7. Пример логической и физической схемы в ErWin
- •3.1.8. Минимальный набор стандартных таблиц
- •3.1.8. Итог
- •3.2. Средства автоматизированного проектирования бд
- •3.2.1. Введение
- •3.2.2. Case-технологии
- •3.2.3. Достоинства case-технологий
- •3.2.4. Промежуточные выводы и определения
- •3.2.5. Методологии структурного моделирования
- •3.2.6. Методология sadt (idef0)
- •3.2.7. Методологии информационного моделирования
- •3.2.8. Нотация Чена
- •3.2.9. Нотация Мартина
- •3.2.10. Нотация ide1x
- •3.2.11. Нотация Баркера
- •3.2.12. Язык информационного моделирования
- •3.2.13. Case-средства
- •3.2.14. Процесс создания модели бд в ErWin
- •3.2.15. Процесс создания модели бд в Sparx ea
- •3.2.16. Итог
- •3.3. Особенности проектирования бд на логическом и физическом уровнях
- •3.3.1. Введение
- •3.3.2. Модель бд
- •3.3.4. Банки данных
- •3.3.5. Модели данных
- •3.3.6. Этапы проектирования бд
- •3.3.7. Проектирование бд: внешний уровень
- •Изучение процессов преобразования входных данных в выходные.
- •3.3.8. Проектирование бд: инфологический уровень
- •3.3.9. Проектирование бд: даталогический уровень
- •3.3.10. Уровни sql
- •3.3.11. Проектирование бд: физический уровень
- •3.4.3. Требования нормализации
- •3.4.4. Примеры аномалий
- •3.4.5. Нормальные формы
- •3.4.6. Зависимости
- •3.4.6. Первая нормальная форма
- •3.4.7. Вторая нормальная форма
- •3.4.8. Третья нормальная форма
- •3.4.9. Нормальная форма Бойса-Кодда
- •3.4.10. Четвёртая нормальная форма
- •3.4.11. Пятая нормальная форма
- •3.4.12. Доменно-ключевая нормальная форма
- •3.4.13. Ещё раз, кратко, все нормальные формы
- •3.4.14. Ещё раз, кратко, в ErWin
- •3.4.15. Обратное проектирование бд
- •3.4.16. Итог
- •3.5. Повышение качества бд на стадии проектирования
- •3.5.1. Памятки разработчикам бд
- •3.5.2. Показатели качества бд
- •Практическая часть
- •Указания по выбору варианта
- •Индивидуальные практические работы Индивидуальная практическая работа № 1 Общие сведения
- •Практическая часть
- •Указания по выбору варианта
- •Индивидуальная практическая работа № 2 Общие сведения
- •Указания по выбору варианта
- •Практическая часть
2.5.5. Алгоритмы хэширования
Процедура преобразования ключа в адрес (алгоритм хэширования) обычно выполняется в три этапа.
Если ключ не цифровой, он преобразуется в соответствующее цифровое представление таким образом, чтобы, исключить потерю информации, содержащейся в ключе. Например, буквенные знаки должны переводиться в цифровой код; допускается также представление символьного ключа в виде строки битов.
Ключи (в цифровом или битовом представлении) преобразуются в совокупность произвольно распределённых чисел, значения которых имеют тот же порядок, что и значения адресов основной области памяти. Желательно, чтобы набор ключей был распределён как можно равномернее в диапазоне, переводимом в допустимые адреса.
Полученные числа умножаются на константу, что позволяет разместить их строго в диапазоне значений адресов основной области. Например, пусть в результате выполнения этапа 2 мы получаем четырёхзначные числа, а в основной области имеется 7000 пакетов. Тогда четырёхзначные числа следует умножать на 0.7, что позволит распределить получаемые адреса в интервале от 0000 до 6999. Этот относительный номер участка преобразуется в машинный адрес участка.
Разработано множество различных алгоритмов, используемых на этапе 2, для преобразования ключа в адрес.
Желательно, чтобы величины, получаемые на выходе этапа 2, были распределены как можно более равномерно. В действительности же существующие алгоритмы не обеспечивают равномерности получаемого распределения, что приводит к направлению многих записей в область переполнения. Ниже рассмотрены некоторые из алгоритмов.
Метод квадратов
Ключ возводится в квадрат. После этого из полученного результата выделяется число, состоящее из центральных цифр.
Для получения номера участка достаточно умножить полученное число на соответствующую константу (в примере, рассмотренном выше, эта константа равна 0.7).
Умножение на константу обеспечивает выравнивание адреса в соответствии с размером основной области.
Например, пусть ключ записей состоит из шести цифр, а число участков в основной области равно 7000. Если ключ записи равен 172 148, то его квадрат равен 029 634 933 904. Четыре центральные цифры составляют число 3493. Номер участка равен 3493*0.7=2445.
Деление
Данный метод, в основе которого лежит обычное деление чисел, даёт лучшие результаты, чем метод квадратов. Ключ делится на число, равное числу участков в основной области или близкое к нему. Делитель должен быть простым числом или числом, которое не содержит небольших сомножителей. Остаток от деления и даёт относительный адрес участка.
Например, если число участков равно 7000, то в качестве делителя можно использовать число 6997. Пусть ключ записи равен 172 148. Остаток от деления 172 148 на 6997, равный 4220, будет взят в качестве относительного адреса участка, в который направляется запись с ключом 172 148.
При использовании данного метода в область переполнения направляется меньшее число записей. Одна из причин этого заключается в том, что ключи часто задаются в определенной последовательности (например, возрастающей). Тогда и остатки от деления на число (например, на 6997) также будут иметь соответствующую последовательность, что обеспечит равномерное заполнение участков.
Сдвиг разрядов
Все разряды числа, являющегося ключом, разбиваются на две части: старшие и младшие разряды. Обе эти части сдвигаются по направлению друг к другу так, чтобы число перекрывающихся разрядов соответствовало длине адреса.
Цифры, содержащиеся в перекрывающихся разрядах, суммируются, и результат, как и в первом методе, выравнивается в соответствии с диапазоном адресов участков.
Рассмотрим рисунок…
Рисунок 2.5.5.1 – Сдвиг разрядов
Складывание
Ключ разбивается на три части, средняя из которых равна длине адреса. Первая и третья части налагаются на вторую подобно тому, как складывается втрое лист бумаги; цифры суммируются, и результат, как и в предыдущем методе, выравнивается в соответствии с размером основной области. Этот метод наиболее удобен для преобразования больших ключей.
Рассмотрим на рисунке…
Рисунок 2.5.5.1 – Складывание
Анализ отдельных разрядов ключа
Для достижения равномерного распределения адресов участков можно использовать анализ распределения значений чисел и символов в каждом ключе.
Выбросив из ключа разряды, имеющие распределение, сильно отличающееся от равномерного, и преобразуя только оставшиеся разряды, мы сможем достичь более равномерного распределения адресов на выходе алгоритма перемешивания.
Преобразование основания системы счисления
После преобразования системы счисления выделяются младшие разряды числа.
Рассмотрим пример (перевод в 11-ричную систему счисления). Пусть ключ равен 172 148. Тогда
1*11^5+7*11^4+2*11^3+1*11^2+4*11^1+8 = 266 373
Младшие разряды: 6373.
Выравнивание адреса: 6373*0.7 = 4461
Метод Лина
В данном методе осуществляется представление ключа в системе счисления с основанием р, после чего осуществляется деление результата по модулю q, где р и q – простые числа (или числа, не содержащие небольших множителей).
Рассмотрим пример. Ключ 172 148 поразрядно преобразуется в двоичную строку: 0001 0111 0010 0001 0100 1000.
После этого осуществляется перегруппировка строки по три разряда: 000 101 110 010 000 101 001 000=05 620 510.
Затем осуществляется деление числа 05 620 510 на константу q по правилам деления десятичных чисел. Остаток от деления даёт номер участка.
Деление полиномов
Цифра каждого разряда ключа рассматривается как коэффициент полинома.
Например, ключ 172 148 может быть представлен полиномом
1x^5+7x^4+2x^3+1x^2+4x^1+8x^0
Затем этот полином делится на некоторый заранее выбранный и неизменяемый полином.
Коэффициенты полинома – остатка от деления – образуют число, которое является относительным адресом участка.