- •Министерство образования и науки Российской Федерации
- •Цель лекции
- •План лекции
- •1 Происхождение вычислительных машин
- •2 Изучение алгоритмов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Биты и их хранение
- •2 Оперативная память
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Устройства внешней памяти
- •3 Хранение и поиск файлов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление числовых значений
- •2 Хранение целых чисел
- •3 Хранение дробей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление текста
- •2 Представление изображений
- •Достоинства пиксельной графики
- •Недостатки пиксельной графики
- •Достоинства векторной графики
- •Недостатки векторной графики
- •3 Представление звука
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Сжатие изображений
- •2 Ошибки передачи данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Архитектура эвм
- •2 Связь процессора с другими устройствами
- •3 Другие архитектуры
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Машинный язык
- •2 Пример машинного языка
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Выполнение программы
- •2 Пример выполнения программы
- •3 Программы и данные
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Логические операции
- •2 Операции сдвига
- •3 Арифметические операции
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция операционных систем
- •2 Архитектура операционных систем
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие процесса
- •2 Управление процессами
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Классификация сетей
- •2 Сетевые протоколы*
- •3 Безопасность сетей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие алгоритма
- •2 Представление алгоритма
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Теория решения задач
- •2 Общие методы решения задач
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритм последовательного поиска
- •2 Управление циклами
- •3 Алгоритм сортировки методом вставки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритмы поиска и сортировки
- •2 Управление рекурсией
- •3 Разработка рекурсивных процедур
- •План лекции
- •1 Эффективность алгоритмов
- •Контрольные вопросы
- •Цель лекции
- •2 Верификация программ
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция и классификация языков программирования
- •2 Концепции традиционного программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Процедурные единицы
- •2 Реализация языка программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Объектно-ориентированное программирование
- •2 Декларативное программирование
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структуры данных
- •Integer Scores (2.9).
- •2 Статические и динамические структуры
- •3 Указатели
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Массивы
- •2 Списки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структура и функции стека
- •2 Реализация стека
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Очереди
- •2 Деревья
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Пользовательские типы данных
- •Int Age;
- •2 Классы
- •Int *StackEntries;
- •3 Стандартная библиотека шаблонов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Роль операционной системы
- •2 Последовательные файлы
- •3 Вопросы программирования
- •0000000010000110
- •001100010011001100110100
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения индексации
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения хеширования
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Общие вопросы
- •2 Система управления базой данных
- •3 Поддержка целостности баз данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Модели баз данных
- •2 Реляционная модель баз данных
- •3 Объектно-ориентированные базы данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Интеллект и машины
- •2 Распознавание образов
- •3 Мышление
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Искусственные нейронные сети
- •2 Генетические алгоритмы
- •Контрольные вопросы
- •Невычислимые функции Цель лекции
- •План лекции
- •1 Основы машины Тьюринга
- •2 Невычислимая функция
- •3 Сложность задач
- •Листинг 1. Процедура MergeLists для объединения двух упорядоченных списков
- •Листинг 2. Алгоритм сортировки слиянием, реализованный в процедуре MergeSort
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Шифрование с открытым ключом
- •2 Модульная арифметика
- •Контрольные вопросы
- •Литература
- •Internet-ресурсы
Контрольные вопросы
1. Поясните термины: «хеширование», «хеш-функции» и «хеш-таблицы»?
2. Каким требованиям должна отвечать хеш-функция?
3. Что такое коллизия и как ее избежать?
4. Что такое фактор загрузки? Поясните на примере.
6. Какие функции языка С++ реализуют механизм хеширования?
Лекция № 30 Реализация и поддержка целостности баз данных
Цель лекции
Изучить способы организации и хранения информации с использованием баз данных.
План лекции
1. Общие вопросы.
2. Система управления базой данных.
3. Поддержка целостности баз данных.
Базы данных представляют собой синтез структур данных и файловых структур. В современных базах данных методы из обеих областей применяются для создания такой системы хранения больших объемов данных, которая может выглядеть как система с множеством видов организаций данных и обслуживать приложения различных типов. В этой главе мы рассмотрим строение систем баз данных и некоторые направления современных исследований.
1 Общие вопросы
Термин база данных (database) относится к набору данных, многомерному в том смысле, что между его элементами существуют внутренние связи, и поэтому доступ к информации можно осуществлять с различных точек зрения. В этом отличие базы данных от файлов традиционных систем, иногда называемых одноуровневыми файлами, которые являются одномерной системой хранения и представляют информацию только с одной точки зрения. Если одноуровневый файл, в котором хранится информация о композиторах и их произведениях, может предоставить только список произведений, отсортированный по автору, в базе данных можно найти все работы одного композитора, всех композиторов, написавших произведения определенного типа, или, например, всех композиторов, создавших аранжировки произведений других авторов.
Исторически базы данных развивались как способ интеграции систем хранения данных. С развитием компьютерных технологий для них находилось все больше применений в управлении информацией, и каждое приложение реализовывалось как отдельная система с собственным набором данных. Необходимость обработки платежных ведомостей привела к появлению последовательных файлов, а позже необходимость интерактивного получения данных в отделах кадров привела к возникновению другой файловой структуры, основанной на индексировании. Хотя обе эти системы представляют собой существенное улучшение прежних ручных способов обработки данных, набор отдельных автоматизированных систем все же являлся неэффективной тратой ресурсов по сравнению с возможностями интегрированной системы базы данных. Например, если в каждом отделе использовалась собственная файловая система, большая часть информации, необходимой в организации, дублировалась в этих хранилищах. В результате, когда сотрудник переезжал на новое место жительства, ему необходимо было посетить несколько отделов по всей организации, чтобы заполнить там формы о смене адреса. Опечатки, неправильное размещение учетных карточек или бездействие сотрудника приводили к появлению ошибочных и конфликтующих между собой данных в различных системах. После переезда информационный бюллетень мог прийти по правильному адресу, но с указанием неверного имени, а в записях платежной ведомости мог все так же оставаться старый адрес. Системы баз данных стали мощным средством интеграции информации, хранимой и обрабатываемой внутри определенной структуры (рис. 1). В них и с платежными ведомостями, и с информационными бюллетенями можно работать внутри одной интегрированной информационной системы.

Рисунок 1 – Файловая организация в сравнении с базой данных: а – файловая информационная система; б – информационная система с базой данных
Еще одно преимущество интегрированной информационной системы состоит в контроле, который получает организация, когда вся ее информация размещена в одном общем хранилище. Если каждый отдел обладает собственными независимыми данными, эти данные обычно работают на конкретный отдел, а не на целую организацию. В противоположность этому, если в большой организации внедрена интегрированная база данных, управление информацией может быть отдано административной должности, известной как администратор базы данных (database administrator, DBA), которая исполняется одним или несколькими сотрудниками. Этот центральный администратор осведомлен как о данных, доступных внутри организации, так и о потребностях различных отделов. Таким образом, в структуре базы данных заложено, что решения относительно организации и доступа к данным можно принимать, учитывая интересы всей организации.
Там, где есть преимущества, есть и недостатки. Одна из проблем — управление доступом к данным, требующим деликатного обращения. Например, сотрудник, работающий с информационными бюллетенями организации, должен иметь доступ к именам и адресам всех сотрудников, но финансовые данные должны быть ему недоступны; аналогично, сотрудник, занимающийся платежными ведомостями, не должен иметь доступ к прочим финансовым записям корпорации. Можно утверждать, что правильное управление доступом к информации в базе данных зачастую так же важно, как и возможность совместно использовать ее.
Разграничение прав доступа в системах баз данных обычно осуществляется на основе схем и подсхем. Схема (schema) — это описание структуры всей базы данных, которое используется в приложениях базы данных. Подсхема — это описание только части базы данных, имеющей отношение к определенным задачам пользователя. Например, представим себе схему университетской базы данных, записи о студентах в которой содержат не только поля, относящиеся к учебе, но и текущий адрес, и номер телефона. Кроме того, в базе запись каждого студента связана с записью его факультетского научного руководителя. Записи каждого сотрудника факультета содержат имя, адрес, сведения о трудовой деятельности и т. д. На основе этой схемы поддерживается система указателей, которая в конечном итоге может даже связать информацию о студенте с данными о трудовой деятельности сотрудника факультета.
Чтобы секретарь университета не мог при помощи этих связей получить конфиденциальную информацию о факультете, его права доступа к базе данных должны, быть ограничены подсхемой, которая описывает записи факультета, но не включает сведения о трудовой деятельности. В пределах этой подсхемы пользователь может узнать, кто из сотрудников факультета является научным руководителем определенного студента, но не может получить дополнительную информацию об этом сотруднике. А подсхема для бухгалтерии позволяет получить данные о трудовой деятельности любого сотрудника факультета, но не предоставляет информации о связях между студентами и научными руководителями. Так, бухгалтер сможет изменить размер заработной платы сотрудника факультета, но не сможет узнать имена студентов, для которых данный сотрудник является научным руководителем.
Кроме относящихся непосредственно к безопасности существуют и другие недостатки, связанные с развитием технологии баз данных. Сегодня возможно хранить огромные объемы данных и обмениваться ими на больших расстояниях с минимальными усилиями, и с этим увеличением масштаба возрастает вероятность получения неверных данных и неправильного их применения. Известно немало случаев несправедливых действий, произошедших по причине неправильных отчетов о кредитных операциях, ошибочных досье преступников и дискриминации, причиной которых был неавторизованный или неэтичный доступ к частной информации.
В других случаях проблема возникает в первую очередь из-за права собирать и хранить информацию. Какого рода информацию о своих клиентах имеет право собирать страховая компания? Имеет ли право правительство вести учет мнений отдельных граждан, высказанных посредством голосования? Имеет ли право компания, продающая товары по кредитным карточкам, продавать записи о покупках, совершенных ее клиентами, в маркетинговые фирмы? Эти вопросы представляют лишь несколько проблем, которые необходимо решить обществу в связи с разрастанием технологий баз данных.
Чтобы разобраться в системах баз данных, важно понимать различие между программами, которые общаются с пользователем базы данных, и программами, которые в действительности манипулируют базой данных.
