Тема: Поиск и сортировка информации в базах данных.
Что нужно знать:
· при составлении условия отбора можно использовать знаки отношений <, <= (меньше или равно), >, >= (больше или равно), = (равно), <> (не равно)
· последовательность выполнения логических операций в сложных запросах: сначала выполняются отношения, затем – «И», потом – «ИЛИ»
· для изменения порядка выполнения операции используют скобки
Пример задания:
Результаты тестирования представлены в таблице:
Фамилия | Пол | Математика | Русский язык | Химия | Информатика | Биология |
Аганян | ж | |||||
Воронин | м | |||||
Григорчук | м | |||||
Роднина | ж | |||||
Сергеенко | ж | |||||
Черепанова | ж |
Сколько записей в ней удовлетворяют условию « Пол =’ж’ ИЛИ Химия > Биология »?
1) 5 2) 2 3) 3 4) 4
Решение:
1) заданное сложное условие отбора состоит из двух простых
У1: Пол =’ж’
У2: Химия > Биология
которые связаны с помощью логической операции «ИЛИ»
2) заметим, что столбцы «Фамилия», «Математика», «Русский язык» и «Информатика» никак не влияют на результат; уберем их из таблицы и добавим два новых столбца, в которых будем отмечать, выполняются ли условия У1 и У2 для каждой строчки
Пол | Химия | Биология | Пол =’ж’ | Химия > Биология |
ж | + | |||
м | + | |||
м | ||||
ж | + | |||
ж | + | + | ||
ж | + | + |
3) логическая операция «ИЛИ» означает выполнение хотя бы одного из двух условия (или обоих одновременно), поэтому заданному сложному условию удовлетворяют все строки, где есть хотя бы один плюс; таких строк пять, они выделены зеленым фоном:
Пол | Химия | Биология | Пол =’ж’ | Химия > Биология |
ж | + | |||
м | + | |||
м | ||||
ж | + | |||
ж | + | + | ||
ж | + | + |
4) таким образом, правильный ответ – 1.
Возможные ловушки и проблемы: · можно перепутать действие операций «И» и «ИЛИ» (неверный ответ 2) · можно перепутать порядок выполнения операций «И» и «ИЛИ», если они обе используются в сложном условии · помните, что в бланк нужно вписать не количество записей, удовлетворяющих условию, а номер ответа из предложенных |
Еще пример задания:
Из правил соревнования по тяжелой атлетике: Тяжелая атлетика – это прямое соревнование, когда каждый атлет имеет три попытки в рывке и три попытки в толчке. Самый тяжелый вес поднятой штанги в каждом упражнении суммируется в общем зачете. Если спортсмен потерпел неудачу во всех трех попытках в рывке, он может продолжить соревнование в толчке, но уже не сможет занять какое-либо место по сумме 2-х упражнений. Если два спортсмена заканчивают состязание с одинаковым итоговым результатом, высшее место присуждается спортсмену с меньшим весом. Если же вес спортсменов одинаков, преимущество отдается тому, кто первым поднял победный вес. Таблица результатов соревнований по тяжелой атлетике:
Фамилия И.О. | Вес спортсмена | Взято в рывке | Рывок с попытки | Взято в толчке | Толчок с попытки |
Айвазян Г.С. | 77,1 | 150,0 | 3 | 200,0 | 2 |
Викторов М.П. | 79,1 | 147,5 | 1 | 202,5 | 1 |
Гордезиани Б.Ш. | 78,2 | 147,5 | 2 | 200,0 | 1 |
Михальчук М.С. | 78,2 | 147,5 | 2 | 202,5 | 3 |
Пай С.В. | 79,5 | 150,0 | 1 | 200,0 | 1 |
Шапсугов М.Х. | 77,1 | 147,5 | 1 | 200,0 | 1 |
Кто победил в общем зачете (по сумме двух упражнений)?
1) Айвазян Г.С. 2) Викторов М.П. 3) Михальчук М.С. 4) Пай С.В.
Решение:
1) основная сложность этой задачи (особенно для тех, кто не увлекается тяжелой атлетикой) состоит в том, что бы внимательно прочитать и понять достаточно запутанные условия соревнований
2) можно убрать из таблицы всех участников, кроме тех, которые упомянуты в ответах
3) в условии читаем первое правило для определения победителя: «Самый тяжелый вес поднятой штанги в каждом упражнении суммируется в общем зачете », поэтому добавим в таблицу столбец «Общий зачет», в котором для каждого спортсмена сложим веса, взятые в рывке и в толчке
Фамилия И.О. | Вес спортсмена | Взято в рывке | Рывок с попытки | Взято в толчке | Толчок с попытки | Общий зачет |
Айвазян Г.С. | 77,1 | 150,0 | 3 | 200,0 | 2 | 350,0 |
Викторов М.П. | 79,1 | 147,5 | 1 | 202,5 | 1 | 350,0 |
Михальчук М.С. | 78,2 | 147,5 | 2 | 202,5 | 3 | 350,0 |
Пай С.В. | 79,5 | 150,0 | 1 | 200,0 | 1 | 350,0 |
4) все интересующие нас участники набрали одинаковый результат, поэтому по этому критерию выявить победителя не удалось; читаем далее: «Если два спортсмена заканчивают состязание с одинаковым итоговым результатом, высшее место присуждается спортсмену с меньшим весом »; отсюда сразу следует, что победитель – Айвазян Г.С., поскольку его вес – наименьший среди всех участников
5) таким образом, правильный ответ – 1.
Возможные ловушки и проблемы: · длинное и запутанное условие, которое нужно формализовать · можно перепутать порядок применения условий; например, если сначала учесть количество попыток, то победителем будет Викторов · лишняя информация, которая не влияет на решение задачи, но осложняет восприятие длинного условия и выделение действительно значимой информации |
Еще пример задания:
В таблице представлены несколько записей из базы данных «Расписание»:
№ | Учитель | День_недели | Номер_урока | Класс |
1 | Айвазян Г.С. | понедельник | 3 | 8А |
2 | Айвазян Г.С. | понедельник | 4 | 9Б |
3 | Айвазян Г.С. | вторник | 2 | 10Б |
4 | Михальчук М.С. | вторник | 2 | 9А |
5 | Пай С.В. | вторник | 3 | 10Б |
6 | Пай С.В. | среда | 5 | 8Б |
Укажите номера записей, которые удовлетворяют условию
Номер_урока > 2 И Класс > '8А'
1) 1, 6 2) 2, 6 3) 2, 5, 6 4) 1, 2, 5, 6
Решение:
1) уберем из таблицы всю лишнюю информацию, оставив только номер записи, номер урока и класс:
№ | Номер_урока | Класс |
1 | 3 | 8А |
2 | 4 | 9Б |
3 | 2 | 10Б |
4 | 2 | 9А |
5 | 3 | 10Б |
6 | 5 | 8Б |
2) логическая связка И означает одновременное выполнение двух условий; оставим в таблице только те строки, для которых выполняется первое из двух условий, Номер_урока > 2
№ | Номер_урока | Класс |
1 | 3 | 8А |
2 | 4 | 9Б |
5 | 3 | 10Б |
6 | 5 | 8Б |
3) теперь нужно из оставшихся строк отобрать те, для которых Класс > '8А'; на взгляд «нормального» человека, этому условию удовлетворяют последние 3 строчки, однако это неправильный ответ
4) дело в том, что в данном случае поле Класс имеет тип «символьная строка», поэтому сравнение будет Класс > '8А' выполняться по кодам символов, начиная с первого
5) цифры во всех кодовых таблицах располагаются последовательно, одна за другой, от 0 до 9
6) поэтому код цифры «1» меньше, чем код цифры «8», и строка 5 не удовлетворяет условию Класс > '8А'
7) к счастью, русские буквы А и Б во всех кодовых таблицах расположены друг за другом[1], поэтому сравнение пройдет «нормально», условие Класс > '8А' для записи № 6 будет истинно
6) в результате после применения условия Класс > '8А' остаются две записи
№ | Номер_урока | Класс |
2 | 4 | 9Б |
6 | 5 | 8Б |
7) таким образом, правильный ответ – 2.
Возможные ловушки и проблемы: · помните, что символьные строки сравниваются по кодам символов · цифры в таблице кодов стоят подряд от 0 до 9 (коды 48-57) · в кодировке Windows русские буквы стоят по алфавиту |
Еще пример задания:
База данных о торговых операциях дистрибутора состоит из трех связанных таблиц. Ниже даны фрагменты этих таблиц.
Таблица зарегистрированных дилеров
Наименование организации | ID дилера | Регион | Адрес |
ООО «Вектор» | D01 | Башкортостан | г. Уфа, ул. Школьная, 15 |
АО «Луч» | D02 | Татарстан | г. Казань, ул. Прямая, 17 |
АОЗТ «Прямая» | D03 | Адыгея | г. Майкоп, просп. Мира, 8 |
ООО «Окружность» | D04 | Дагестан | г. Дербент, ул. Замковая, 6 |
ИЧП Скаляр | D05 | Дагестан | г. Махачкала, ул. Широкая, 28 |
АО «Ромб» | D06 | Татарстан | г. Набережные Челны, ул. Заводская, 4 |
Таблица отгрузки товара
Номер накладной | Отгружено дилеру | Артикул товара | Отгружено упаковок | Дата отгрузки |
001 | D01 | 01002 | 300 | 5/01/2009 г. |
002 | D02 | 01002 | 100 | 5/01/2009 г. |
003 | D06 | 01002 | 200 | 5/01/2009 г. |
004 | D01 | 02002 | 20 | 5/01/2009 г. |
005 | D02 | 02002 | 30 | 5/01/2009 г. |
006 | D02 | 01003 | 20 | 6/01/2009 г. |
Таблица товаров
Наименование товара | Артикул | Отдел | Количество единиц в упаковке | Брутто вес упаковки |
Фломастеры, пачка 24 шт. | Канцтовары | |||
Бумага А4,пачка 500 листов | Канцтовары | |||
Скрепки металлические, 1000 шт. | Канцтовары | |||
Розетки трехфазные | Электротовары | |||
Лампа накаливания, 60 Вт | Электротовары | |||
Выключатель 2-клавишный | Электротовары |
Сколько пачек бумаги было отгружено в Татарстан 5 января 2009 года?
1) 100 2) 200 3) 300 4) 1500
Решение:
1) уберем из таблиц всю лишнюю информацию; во-первых, нас интересует только бумага и только количество пачек, поэтому таблица товаров сводится к одной строчке
Наименование товара | Артикул | Количество единиц в упаковке |
Бумага А4,пачка 500 листов |
2) во-вторых, нас интересуют только дилеры из Татарстана, причем их названия и адреса не дают полезной информации, нужен только код; вот что остается от таблицы дилеров:
ID дилера | Регион |
D02 | Татарстан |
D06 | Татарстан |
3) из таблицы отгрузки товара выбираем только информацию о поставках этим дилерам:
Отгружено дилеру | Артикул товара | Отгружено упаковок | Дата отгрузки |
D02 | 01002 | 100 | 5/01/2009 г. |
D06 | 01002 | 200 | 5/01/2009 г. |
D02 | 02002 | 30 | 5/01/2009 г. |
D02 | 01003 | 20 | 6/01/2009 г. |
4) в последней таблице отмечаем строчки, которые относятся к бумаге (артикул 01002) и дате 5/01/2009:
Отгружено дилеру | Артикул товара | Отгружено упаковок | Дата отгрузки |
D02 | 01002 | 100 | 5/01/2009 г. |
D06 | 01002 | 200 | 5/01/2009 г. |
5) таким образом, в 5/01/2009 в Татарстан было отгружено 300 упаковок бумаги
6) теперь вспоминаем, что в таблице товаров сказано, что в каждой упаковке 5 пачек, поэтому всего отгружено 1500 пачек
7) таким образом, правильный ответ – 4.
Возможные ловушки и проблемы: · обратите внимание, что спрашивается количество пачек, а не количество упаковок; среди ответов есть «отвлекающий» вариант 300 – после выполнения шага 5 появляется соблазн выбрать именно его |
[1] Интересующиеся могут посмотреть на коды русских букв в кодировке КОИ-8R
и ужаснуться, осознав, что было бы при использовании букв В и Г.