Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
ГЛАВА 17. АДРЕСАЦИЯ ДАННЫХ В ПАМЯТИ ЭВМ ПО СОДЕРЖИМОМУ
17.1. Методы адресации данных при однозначном соответствии ключей и адресов Как отмечалось в гл. 16, при адресации по содержимому размещение данных и их выборка осуществляются по известному значению ключа, т. е. определяется содержимым самих данных. Идея такого метода адресации заключается в нахождении следующей зависимости: где А — адрес элемента данных;/— адресная функция; К— ключ записи. Классификация методов адресации данных по содержимому представлена на рис. 17.1.
Методы однозначного соответствия ключей и адресов наиболее просты и легко реализуемы. Они обеспечивают определенную упорядоченность записей в файле. Адресная функция выбирается разработчиком БД и представляет собой зависимость, связывающую значение ключа К и адрес А. Следует особо отметить, что для рассматриваемых методов адресная функция задает взаимнооднозначное соответствие между множествами возможных значений ключей и возможных адресов. В силу простоты адресной функции данные методы обеспечивают быстрый поиск нужной записи. Метод адресации по ключу, эквивалентному адресу. Идея метода очень проста: либо ключевой атрибут трактуется как адрес, с которого размещается запись, либо в нее при поступлении в систему в качестве дополнительного атрибута включается адрес памяти, и в дальнейшем именно этот атрибут используется в качестве ключа. В качестве адреса записи, содержащей информацию о сотруднике, может быть использован номер его паспорта. При необходимости получить эту информацию следует обратиться непосредственно по этому ключу-адресу. В качестве адреса записи, содержащей информацию о финансовом состоянии клиента банка, может быть использован номер его банковского счета. При необходимости получить эту информацию следует обратиться непосредственно по этому ключу-адресу. Заметим, что при исключительно высокой скорости поиска требуемой записи по ее ключу использование памяти с точки зрения рационального заполнения будет далеко не лучшим (особенно для первого примера). Адресация по алгоритму преобразования ключа в адрес. Метод предполагает линейную упорядоченность записей в файле, в котором выполняется адресация, и использование записей фиксированной длины. Составляется уравнение адресной функции, по которому значение ключа записи преобразуется в ее адрес в файле, что позволяет и адресовать элемент данных, и найти его. Пример. В базе данных «КАДРЫ» в качестве ключа используется поле «КОДСОТРУДНИКА», значения которого состоят из трех символов — буквы и двух цифр (например, И6 — код сотрудника Иванова). Будем считать, что фамилии сотрудников могут начинаться с 30 букв (за исключением букв «ъ», «ы», «ь»). Множество возможных значений ключей составят следующие значения: 221 Будем считать, что буква кодируется числом от 1 до 30 (А — 1; Б — 2;... Я — 30). Тогда адресная функция имеет вид Аот = (КОД_БУКВЫ - 1)100 + ЦИФРЫ_КОДА_СОТРУДНИКА, где Аотп — относительный адрес; AUW1 — машинный адрес; m — длина записи; b — адрес базы. Очевидно, Что многие записи в таком файле окажутся пустыми. Общее количество записей будет составлять 3 000 шт. Если в организации служат 300 сотрудников, 90 % записей окажутся пустыми. Рассмотрим еще один пример. Пример. Файл данных о продаже авиабилетов имеет логическую структуру: {HP; ДВ; НСМ} (номер рейса; дата вылета; наличие свободных мест). Первичный ключ такой записи составляют первые два поля. Пусть номер рейса меняется от 01 до 50; дата вылета — от 001 до 366; размер записи — 20 байт. Структура ключа записи и адреса записей будут иметь вид:
Тогда адресная функция имеет вид: Достоинства этого метода очевидны — это простота и высокая скорость поиска. Недостаток метода также понятен: малое заполнение памяти, отведенной для хранения файла. Действительно, если бы номера рейсов могли принимать значения от 0001 до 9 999 (как в действительности и бывает), то первичный ключ изменялся бы от 0 001 001 до 9 999 366 и нужно было бы 9 999 • 366 = 3 659 634 участков памяти. Если же аэропорт в день обслуживает 50 рейсов (что реально для многих аэропортов), то реально нужны всего 18 300 участков 222 памяти. Соотношение возможного и реального числа участков памяти для хранения данных наглядно подтверждает указанный недостаток этого метода адресации. Однако высокая скорость извлечения информации, как правило, оказывается более важным обстоятельством,; и именно таким образом часто организуют работу информационно-справочных систем для широкого класса пользователей. Пример. Пусть файл «ОКЛАДЫ» в БД «КАФЕДРА» содержит информацию о вакантных местах работы на кафедре и имеет поля: должность; ученая степень; ученое звание и тарифный разряд сотрудника. Будем считать, что на кафедре имеются вакантные должности старшего научного сотрудника, преподавателя, старшего преподавателя, доцента. Требуется разработать адресную функцию и определить относительный адрес записи о тарифном разряде старшего преподавателя, имеющего ученую степень и не имеющего ученого звания. Для каждой должности следует рассмотреть все возможные комбинации ученых степени и звания. Например, для старшего научного сотрудника:
Для преподавателя:
и далее для старшего преподавателя и доцента. Если ввести поле «КОДЛОЛЖНОСТИ», можно записать:
223 Тогда легко составить таблицу соответствия:
Адресная функция имеет вид: А™ = (КОД_^ЦОЛЖНОСТИ - 1)4 + УЧЕНАЯ_СТЕПЕНЬ 2 + + УЧЕНОЕ_ЗВАНИЕ. Таким образом для старшего преподавателя, имеющего ученое звание, но не имеющего ученой степени, аргументом адресной функции будет:
Относительный адрес такой записи равен 10. |
Последнее изменение этой страницы: 2019-05-08; Просмотров: 228; Нарушение авторского права страницы