Поиск и сортировка информации в базах данных
Тема: Поиск и сортировка информации в базах данных.
В заданиях данной темы требуется определить какую-либо информацию на основе табличных данных, приведенных в условии. Рассмотрим несколько типичных заданий и их решения.
Пример 1.
Во фрагменте базы данных представлены сведения о родственных отношениях. На основании приведённых данных определите, сколько всего внуков и внучек есть у Карпец Д. К.
|
|
Решение.
Найдем в первой таблице Карпец Д. К., её ID равен 866. Сначала найдем всех её детей, то есть найдем из таблицы 2 все записи, где ID_Родителя равен 866. Это записи с ID 911 и 938. Найдем их детей с помощью таблицы 2. Это записи с ID 879, 1041, 995, 1017. Чтобы не запутаться, удобно записывать эти данные в виде дерева такого вида:
Получили, что у Карпец Д. К. четверо внуков и внучек.
Ответ: 4
Пример 2.
Во фрагменте базы данных представлены сведения о родственных отношениях. Укажите в ответе идентификационный номер (ID) дяди Ан В.А. Примечание. Дядя — это брат матери или отца.
|
|
Решение.
Найдем идентификационный номер (ID) самого Ан В.А. (не торопитесь, обратите внимание, что в таблице может быть несколько человек с такой фамилией, то человек с такой фамилией и инициалами точно будет ровно один). Его ID равен 1251. Чтобы найти его дядю, придется сначала найти:
- его родителей;
- родителей его родителей (бабушек и дедушек);
- детей этих дедушек и бабушек: среди них ровно один искомым дядей Ан В.А.
Для удобства будем записывать найденные ID в виде дерева.
Найдем родителей Ан В.А. из второй таблицы (те строки, где ID_Ребенка равен 1251):
Теперь найдем родителей его родителей (то есть в таблице 2 найдем те записи, где ID_Ребенка равны 2230 и 9252):
Для человека с ID 9252 записей о родителях в таблице нет.
Теперь найдем детей для людей с ID 5215 или 6214 – именно эти люди будут дядями и тетями для исходного Ан В.А. (ID которого 1251 – в самом низу нашего дерева)
Нам повезло, и такой человек нашелся только один – с ID 2300 (но в других задачах, возможно, их будет несколько, и тогда нужно не забыть найти среди них человека нужного пола). Под ID 2300 в таблице 1 человек мужского пола, значит, это и есть искомый дядя. В данной задаче в качестве ответа нужно написать только ID.
Ответ: 2300
Пример 3.
Даны фрагменты двух таблиц из базы данных. Каждая строка таблицы 2 содержит информацию о ребёнке и об одном из его родителей. Информация представлена значением поля ID в соответствующей строке таблицы 1. На основании приведённых данных определите, у скольких детей в момент рождения матерям было меньше 30 полных лет. При вычислении ответа учитывайте только информацию из приведённых фрагментов таблиц.
|
|
Решение. Для того, чтобы найти ответ, нужно найти, сколько лет было каждой из матерей на момент рождения каждого её ребёнка. ID родителя и ребенка можно найти по таблице 2, а их годы рождения – по таблице 1. Чтобы было удобнее, оставим в таблице 2 только матерей и их детей.
ID_Родителя | ID_Ребенка |
866 | 911 |
866 | 938 |
911 | 879 |
911 | 1041 |
1026 | 900 |
949 | 995 |
949 | 1017 |
1026 | 932 |
Теперь нужно для каждого ребенка посчитать, сколько лет было матери в момент рождения. Для этого вычтем из года рождения ребенка год рождения матери (их мы находим из первой таблице по ID). Можно записать эти данные в дополнительный столбец рядом.
ID_Родителя | ID_Ребенка | Возраст матери на момент рождения ребенка |
866 | 911 | 29 |
866 | 938 | 32 |
911 | 879 | 27 |
911 | 1041 | 39 |
1026 | 900 | 29 |
949 | 995 | 36 |
949 | 1017 | 37 |
1026 | 932 | 33 |
Из полученной таблицы находим, у скольких детей в момент рождения матерям было меньше 30 лет. Таких детей трое.
Ответ: 3
Пример 4.
Сколько записей удовлетворяют условию «Пол = 'м' И Материаловедение < Охрана труда»?
Фамилия | Пол | Родной язык | Охрана труда | Материаловедение | Химия | Высшая математика |
Андрюшин | м | 100 | 72 | 55 | 66 | 70 |
Борискин | м | 75 | 34 | 86 | 64 | 89 |
Варенкова | ж | 85 | 77 | 73 | 79 | 74 |
Дегтеряев | м | 77 | 85 | 81 | 81 | 80 |
Евлашина | ж | 88 | 75 | 79 | 56 | 75 |
Закирина | ж | 72 | 80 | 66 | 70 | 70 |
Решение.
Обратим внимание, что условие состоит из двух простых условий соединённых союзом «И». Следует знать, что:
- при соединении условий союзом «И» все условия должны одновременно выполняться;
- при соединении союзом «ИЛИ» хотя бы одно условие должно выполняться.
Проверим каждую строку этой таблицы, выполняются ли оба условия: «Пол = 'м'» и «Материаловедение < Охрана труда». Отметим цветом все строки, которые нам подходят.Фамилия Пол Родной язык Охрана труда Материаловедение Химия Высшая математика Андрюшин м 100 72 55 66 70 Борискин м 75 34 86 64 89 Варенкова ж 85 77 73 79 74 Дегтеряев м 77 85 81 81 80 Евлашина ж 88 75 79 56 75 Закирина ж 72 80 66 70 70
Оказалось, что подходят две записи.
Ответ: 2.
Пример 5.
В таблице приведен фрагмент базы данных с результатами тестирования:
Сколько записей в этой таблице удовлетворяют условиюФамилия Пол Английский Французский Немецкий Кукушкина
Морозов
Прохорова
Самоварова
Тубин
Шапочкинж
м
ж
ж
м
м7
9
10
9
3
1010
6
3
9
3
109
10
3
8
3
8
Пол <> 'ж' ИЛИ Английский <= Французский ИЛИ Французский <> Немецкий- 5 2) 63) 34) 4
Решение.
Обратим внимание, что в сложном условии может участвовать более 2 простых условий. В этом случае нужно помнить, что:
1) сначала выполняются отношения, затем – «И», потом – «ИЛИ»;
2) в качестве отношений могут быть использованы знаки отношений <, <= (меньше или равно), >, >= (больше или равно), = (равно), <> (не равно);
- 5 2) 63) 34) 4
- для изменения порядка выполнения операций могут быть использованы скобки.
Также обратим внимания, что в качестве ответа нужно записать не количество подходящих записей, а номер верного варианта ответа, так что не забывайте очень внимательно читать условие.
Отметим в таблице все строки, в которых хотя бы одно из перечисленных трех условий истинно (так как условия соединены союзом «ИЛИ»):Фамилия Пол Английский Французский Немецкий Кукушкина
Морозов
Прохорова
Самоварова
Тубин
Шапочкинж
м
ж
ж
м
м7
9
10
9
3
1010
6
3
9
3
109
10
3
8
3
8
Получилось, что 5 записей удовлетворяют данному сложному условию. В ответ запишем номер правильного варианта.
Ответ: 1
Пример 6.
В таблице представлены несколько записей из базы данных «Расписание»:
Укажите номера записей, которые удовлетворяют условию№ Учитель День_недели Номер_урока Класс 1 Айвазян Г.С. понедельник 3 8А 2 Айвазян Г.С. понедельник 4 9Б 3 Айвазян Г.С. вторник 2 10Б 4 Михальчук М.С. вторник 2 9А 5 Пай С.В. вторник 3 10Б 6 Пай С.В. среда 5 8Б
Номер_урока > 2 И Класс > '8А'- 1, 6 2) 2, 63) 2, 5, 6 4) 1, 2, 5, 6
Решение.
Так же как и в прошлых заданиях, если два простых условия соединены союзом «И», то они должны выполняться одновременно. Однако в этом задании одно из условий может стать для вас камнем преткновения. Посмотрим на него внимательно:
Класс > '8А'
Значение поля поле Класс имеет тип «символьная строка», поэтому сравнение Класс > '8А' будет выполняться по символам, начиная с первого. Символ считается «больше» другого, если его код больше. Так как в кодовых таблицах цифры располагаются последовательно, то при сравнении, например, строк '8А' и '10Б' первая из них окажется больше (так как код символа '8' больше кода символа '1').
Оставим в таблице только те записи, для которых оба условия выполняются:
№ | Учитель | День_недели | Номер_урока | Класс |
2 | Айвазян Г.С. | понедельник | 4 | 9Б |
6 | Пай С.В. | среда | 5 | 8Б |
Получается, что только 2 записи удовлетворяют условию: записи с номерами 2 и 6. В ответе укажем номер правильного варианта ответа.
Ответ: 2