Базы данных
Теория к заданию 3 из ЕГЭ по информатике
Технология хранения, поиска и сортировки информации в базах данных
Структура базы данных (записи и поля)
Хранение информации — одна из важнейших функций компьютера. Одним из распространенных средств такого хранения являются базы данных.
База данных (БД) — это информационная модель, позволяющая в упорядоченном виде хранить данные о группе объектов, обладающих одинаковым набором свойств.
Известны три основных типа организации данных в БД и связей между ними: иерархические, сетевые и табличные базы данных.
Иерархическая БД. Элементы в записи упорядочены. Один элемент считается главным, остальные — подчиненными. Примером такой структуры может быть дерево каталогов на диске или генеалогическое дерево. Служба имен доменов в Интернет (DNS) также является собранием иерархических баз данных для перевода имен доменов Интернет из символов в числовые адреса протокола передачи данных IP. Поиск какого-либо элемента данных в такой системе может оказаться довольно трудоемким из-за необходимости последовательно проходить несколько иерархических уровней.
Сетевая БД. Это более гибкая структура, т. к. в ней дополнительно к вертикальным связям устанавливаются горизонтальные связи. Процесс поиска данных в такой базе легче, чем в иерархической. Сетевой базой данных фактически является служба WWW сети Интернет.
Табличная БД. Это наиболее распространенная структура. Информация организована в виде таблиц. Каждая строка таблицы содержит информацию об одном отдельном объекте описываемой в БД предметной области, а каждый столбец — определенные характеристики (свойства, атрибуты) этих объектов. В БД столбцы называются полями, а строки — записями. Поля образуют структуру БД, а записи составляют информацию, которая в ней содержится.
Поля — основные элементы структуры БД. Они обладают свойствами, от которых зависит, какие типы данных можно вносить в поле, а какие — нет, а также то, что можно делать с данными, содержащимися в поле.
Основными свойствами любого поля являются следующие:
Размер поля. Выражается в знаках (или в символах). От длины поля зависит, сколько информации в нем может поместиться. Так как символы кодируются одним или двумя байтами, можно считать, что длина поля измеряется в байтах.
Имя. Имена полей должны быть уникальными, иначе компьютер запутается в их содержимом.
Подпись. Это та информация, которая отображается в заголовке столбца. Если подпись не задана, то в заголовке отображается имя поля. Разным полям можно задать одинаковые подписи.
Формат. Устанавливает формат данных.
Тип поля определяется типом данных, которые оно содержит.
Основные типы полей:
Текстовое поле — для ввода текста. Максимальный размер — 255 символов.
Числовое поле — для ввода числовых данных.
Дата/время — для ввода даты и времени в определенном формате.
Логическое поле — для ввода логических данных, имеющих только два значения (ДА — 1, НЕТ — 0). Его длина всегда равна 1 байту.
Денежное поле — числа в денежном формате.
Поле объекта OLE — в этом поле можно хранить картинки, музыкальные клипы, видеозаписи.
Счетчик — это числовое поле, имеющее свойство автоматического наращивания. При вводе новой записи в это поле автоматически вводится число, на единицу большее, чем значение того же поля в предыдущей записи. Эти числа не могут быть изменены пользователем. Обычно применяется для нумерации записей.
Поле МЕМО — используется, если нужно вставить длинный текст. В него можно поместить до 65535 символов (64 Кбайт). Особенность поля в том, что сами данные хранятся не в нем, а в другом месте, — в поле хранится только указатель на то, где они расположены.
Гиперссылка — ссылки на информационный ресурс в Интернете.
Запись БД — это строка таблицы, содержащая набор значений свойств, размещенный в полях базы данных.
Каждая таблица должна содержать по крайней мере одно ключевое поле, содержимое которого уникально для каждой записи в таблице. Ключевое поле позволяет однозначно идентифицировать каждую запись таблицы. На практике в качестве первичного ключа часто используют поле типа Счетчик, т. к. одинаковые значения в это поле нельзя ввести по определению.
Если таблица базы данных содержит слишком много полей и при этом записи во многих полях дублируют друг друга, то такую таблицу целесообразно разбить на несколько таблиц, содержащих данные, относящиеся к различным аспектам базы данных. Затем таблицы связывают между собой. Модель данных, представляющая собой совокупность таблиц с установленными между ними связями, называется реляционной. В реляционной модели каждая таблица описывает один класс объектов.
Связи между таблицами могут быть одного из трех типов:
- «один-к-одному» — связанные таблицы имеют одинаковое количество записей и между этими записями установлено взаимнооднозначное соответствие;
- «один-ко-многим» — каждой записи в одной (главной) таблице могут соответствовать несколько записей в другой (подчиненной) таблице, а запись в подчиненной таблице не может иметь более одной соответствующей ей записи в главной таблице;
- «многие-ко-многим» — одной записи в первой таблице могут соответствовать несколько записей во второй таблице и наоборот. Две таблицы, находящиеся в отношении «многиеко-многим», могут быть связаны только с помощью третьей (связующей) таблицы.
Для создания, наполнения и обработки баз данных разработаны специальные программные средства — системы управления базами данных (СУБД).
Примеры решения задач
Пример 1. В таблице представлен фрагмент базы данных о клиентах некоторой фирмы.
Код_Клиента | Фамилия | Адрес | Телефон | |
К1216Р | Карпов | ул. Кирова, 25 | 2892316 | [[email protected]](mailto:[email protected]) |
М1347П | Маслов | ул. Королева, 12 | 7937847 | [[email protected]](mailto:[email protected]) |
Сколько полей и сколько записей в данной базе?
Решение. Поля — это столбцы базы данных, а записи — это строки. Следовательно, в данной базе 5 полей (Код_Клиента, Фамилия, Адрес, Телефон, E-mail) и 2 записи (о клиентах Карпове и Маслове).
Табличное и картотечное представление баз данных
Компьютерные базы данных пришли на смену бумажным картотекам. Примером картотеки может служить каталог библиотеки или карточка складского учета. Там каждой единице хранения (книге) соответствует карточка, заполненная стандартным образом. В то же время для работы нужны отчеты в табличной форме, например поступление товарно-материальных ценностей на склад или их выдача со склада, инвентаризационные ведомости и пр.
Обычная форма представления записей базы данных — табличная. Эта форма особенно удобна при работе с БД в целом, групповых операциях над записями, генерации отчетов (выборок из БД) или поиском записей. Конкретные столбцы в отчете и их порядок может задавать пользователь. Однако в ряде случаев, например, при вводе и редактировании данных, предпочтительной и более удобной будет картотечная форма представления.
При этом каждая запись выводится в виде определенной экранной формы. Структура формы одинакова для всех записей. Названия полей соответствуют названиям столбцов табличной формы представления базы данных, а их расположение задается разработчиком БД. Как правило, внешний вид этих форм соответствует первичным бумажным документам, таким как карточка складского учета, банковское платежное поручение и т. д.
Сортировка и отбор записей
Основными инструментами обработки данных являются сортировка, фильтр и запрос.
Сортировка — это упорядочивание данных по некоторому признаку. Различают сортировку по возрастанию и по убыванию. Для числовых значений сортировка означает ранжирование по значению, а для текстовых — упорядочивание по алфавиту.
В СУБД Access сортировка осуществляется только по одному полю. Каждая новая сортировка отменяет результаты предыдущей. Вложенные сортировки выполняются с помощью запросов.
СУБД Access позволяет производить поиск записей, в которых значения определенного поля полностью или частично совпадают с заданной величиной. В СУБД Access 2007 поиск информации в таблице осуществляется следующим образом. Установить курсор в поле, в котором будет выполняться поиск, открыть на ленте вкладку Главная и в группе Найти выбрать команду Найти . Откроется окно Поиск и замена. В поле Образец надо ввести значение, которое следует найти. Для этого можно использовать подстановочные знаки (маску):
«*» — любой символ в начале или в конце;
«?» — любой символ в любом месте;
«[ ]» — любой символ из заключенных в скобки (например, маска b[ae]ll найдет ball, bell, но не bill);
«!» — любой символ, кроме заключенных в скобки (например, b[!ae]ll найдет bill, bull, но не ball, bell);
«-» — любой символ из диапазона (например, b[a-c]d найдет bad, bbd, bcd);
«#» — любая цифра.
После задания образца для поиска надо задать остальные параметры поиска и щелкнуть на кнопке Найти далее. Если заданное значение будет найдено, оно выделится цветом. Чтобы продолжить поиск, надо снова щелкнуть на кнопке Найти далее. Если данных больше не будет найдено, программа выдаст об этом соответствующее сообщение.
Вкладка Замена этого окна позволяет не только найти какую-либо информацию, но и заменить ее на другую.
Выбор из базы тех записей, которые удовлетворяют требованиям пользователя, также осуществляется с помощью фильтров. Для задания фильтра нужно открыть на ленте вкладку Главная и в группе Сортировка и фильтр выбрать команду Фильтр. Команды этой группы Выделение и Дополнительно предлагают несколько дополнительных видов фильтров. Например, фильтр «по выделенному» позволяет отобрать записи, содержащие выделенный фрагмент; фильтр «исключить выделенное» скрывает записи, содержащие выделенный фрагмент; расширенный фильтр позволяет задать более сложные условия отбора записей, а также сортировку по нескольким параметрам.
Все виды фильтров можно применять как ко всей базе данных, так и к уже отобранным по некоторому критерию записям.
Использование различных способов формирования запросов к базам данных
Запрос — это мощное средство обработки данных, соединяющее в себе возможности, предоставляемые сортировкой и фильтрацией. С помощью запросов можно отбирать данные из нескольких таблиц сразу, создавать новые вычисляемые поля, в которых данные преобразуются при помощи формул, назначать сортировку и условие отбора для каждого поля. Запросы являются самостоятельными объектами БД, т. е. сохраняются с некоторым именем и могут использоваться в дальнейшем.
Для создания запросов к БД существует специальный язык запросов SQL (Structured Query Language) — структурированный язык запросов. Вместо него в СУБД Access есть простое средство, которое называется бланком запроса. С его помощью можно сформировать запрос простыми приемами, перетаскивая элементы запроса между окнами.
В СУБД Access запросы можно создавать автоматически, с помощью мастера или вручную (с помощью конструктора). В верхнюю часть бланка вставляются таблицы, из которых отбираются данные, а в нижней части задается описание операций обработки.
Последовательность создания простого запроса на выборку в СУБД Access 2007 следующая. На ленте нужно открыть вкладку Создание и в группе Другие выбрать команду Конструктор запросов. При этом на ленте появится вспомогательная вкладка Работа с запросами/Конструктор. Также программа выведет бланк запроса и окно Добавление таблицы. Сначала надо задать таблицы или запросы, на которых будет основываться новый запрос. Это выполняется указанием имени таблицы (запроса) и щелчком на кнопке Добавить в окне Добавление таблицы.
Далее нужно заполнить строки нижней панели бланка, которые определяют структуру запроса, т. е. результирующей таблицы.
Строку Поле заполняют перетаскиванием названий полей из таблиц в верхней части бланка. Каждому полю будущей результирующей таблицы соответствует один столбец бланка запроса по образцу. Строка Имя таблицы заполняется автоматически при перетаскивании поля. Щелчок на кнопке Сортировка выведет кнопку раскрывающегося списка, содержащего виды сортировки. Таким образом, при необходимости можно отсортировать результирующие данные по возрастанию или по убыванию.
Флажок Вывод на экран указывает, надо ли выводить поле на экран.
В строке Условие отбора записывают тот критерий, по которому выбирают записи для включения в результирующую таблицу. По каждому полю можно создать свое условие отбора. Для формирования условий можно использовать логические операции (И, ИЛИ и др.)
Запуск запроса осуществляется выбором команды Выполнить из группы Результаты на вкладке Работа с запросами/Конструктор. При запуске образуется результирующая таблица, содержащая отобранную информацию.
Пользователь, не имевший отношения к созданию базы, не может изменить параметры, по которым делается запрос на выборку. Но часто пользователю надо предоставить возможность выбора того, что он хочет найти в таблицах БД. Для этого существует специальный запрос — запрос с параметром. В строке Условие отбора бланка запроса в нужном поле надо ввести команду LIKE [] языка SQL
После запуска запроса на экран выведется окно, содержащее текст. В этом окне пользователю предлагается ввести параметр. По щелчку на кнопке ОК появится результирующая таблица.
Например, имеется БД, содержащая сведения о футболистах разных клубов: Фамилия, Имя, Дата Рождения, Рост, Вес, Клуб, Специализация. Требуется выбрать только спортсменов, принадлежащих одному конкретному клубу. А к какому именно клубу — должен выбирать пользователь. При формировании запроса с помощью бланка в строке Условие отбора поля Клуб нужно записать команду LIKE [Введите название клуба]. Тогда при запуске запроса на экран будет выведено окно с текстом Введите название клуба, полем для ввода и кнопкой ОК. Пользователь должен ввести название клуба, например Спартак, и щелкнуть на кнопке ОК. После этого появится результирующая таблица, содержащая записи о спортсменах клуба Спартак.
С помощью запросов можно производить вычисления. Поле, содержимое которого является результатом расчета по содержимому других полей, называется вычисляемым полем. Оно может существовать только в результирующей таблице. В исходных (базовых) таблицах такое поле не создается, и таблицы не меняются.
Для создания запроса, производящего вычисления, служит тот же самый бланк запроса. Разница в том, что в одном из столбцов записывают формулу. В нее входят заключенные в квадратные скобки названия полей, участвующих в расчете, а также знаки математических операций. Если формула большая, то с помощью клавиш [Shift]+[F2] можно открыть вспомогательное окно Область ввода. В него можно ввести сколь угодно длинную формулу, а затем щелчком на кнопке ОК перенести ее в бланк запроса по образцу.
Например, имеется БД по итогам командных соревнований. Базовая таблица содержит сведения о проведенных играх команд, количестве побед, поражений, ничьих, о том, сколько забито и пропущено голов. В запросе надо отобразить результативность каждой команды. Для этого надо создать вычисляемое поле. Его название не должно совпадать ни с одним полем таблицы и отделяться от формулы двоеточием. В бланке запроса в строке Поле в свободном столбце нужно ввести формулу:
Результативность : [Забито] / [Игры]
Вычисляемое поле можно сделать полем сортировки, чтобы не только получать новые результаты, но и анализировать их.
Примеры решения задач
Пример 1. К нескольким файлам применялись различные архиваторы и в таблицу записывались исходный размер файлов и размер архивов. Ниже приведен фрагмент этой таблицы:
Имя файла | Размер | ZIP | RAR | ARJ |
Text1.doc | 285 | 114 | 106 | 112 |
Ref.doc | 843 | 42 | 34 | 41 |
Требуется отобрать файлы, исходный размер которых был больше 2 Мбайт и при использовании WinRAR уменьшился более чем в 4 раза. Какое условие нужно использовать для формирования запроса?
- (Размер > 2000) И (Размер/RAR > 4)
- (Размер > 2048) И (RAR < 256)
- (Размер > 2048) ИЛИ (Размер/RAR > 4)
- (Размер > 2048) И (Размер/RAR > 4)
Решение. Исходя из условия задачи, в условии запроса должна использоваться логическая операция «И» (логическое умножение), поэтому вариант 3) не подходит. Кроме того, надо учесть, что 1 Мбайт = 1024 байта. Запрос с условием 1) может отобрать записи о файлах с исходным размером менее 2 Мбайт, следовательно, также не подходит. Правильный вариант — 4).
Ответ: 4).
Пример 2. В таблице представлен фрагмент базы данных, содержащей информацию о странах, их площади (поле Площадь), численности населения (поле Население), расположении в части света (поле ЧС):
№ | Страна | Столица | Площадь | Население | ЧС |
1 | Бельгия | Брюссель | 30,5 | 10289 | Европа |
2 | Коста-Рика | Сан-Хосе | 51,1 | 3896 | Северная Америка |
3 | Израиль | Тель-Авив | 20,8 | 6116 | Азия |
4 | Дания | Копенгаген | 43,1 | 5384 | Европа |
Какое условие нужно использовать для формирования запроса, отбирающего все европейские страны площадью менее 30 тыс. кв. км с численностью населения более 10 тыс. человек?
- (Площадь < 30) И (Население > 10000)
- (ЧС = Европа) И (Площадь < 30) ИЛИ (Население > 10000)
- (Площадь < 30) И (Население > 10000) ИЛИ (ЧС = Европа)
- (ЧС = Европа) И (Площадь < 30) И (Население > 10000)
Решение. Исходя из условия задачи, в условии запроса должна использоваться логическая операция «И» (логическое умножение), поэтому варианты 2) и 3) не подходят. Условие 1) также неверно, т. к. в нем не задано расположение страны (Европа), т. е. по такому запросу будут отобраны страны, расположенные в Африке, Азии и т. д. Правильный вариант 4).
Ответ: 4).