Расширение модели данных (трехтабличная БД) По учебнику Семакин Н.Г., Хеннер Е.К.Информационные системы и модели © 2006 Медведев Л.Н.
Инфологическая модель База данных должна включать в себя сведения обо всех учениках школы и об их успеваемости Поэтому должен появиться новый тип объекта: КЛАССЫ Атрибуты объекта: КЛАССЫ(КЛАСС, КЛАС_РУК, ЧИСЛО_УЧ)
Изменения в таблице УЧЕНИКИ Таблица КЛАССЫ должна быть связана с таблицами УЧЕНИКИ и УСПЕВАЕМОСТЬ. Связь КЛАССЫ УЧЕНИКИ имеет тип «один-ко-многим» (в классе множество учеников) Связь устанавливается через общие поля. Поэтому в таблицу УЧЕНИКИ нужно будет добавить новое поле КЛАСС: УЧЕНИКИ (КЛАСС, НОМЕР_УЧ, ФАМИЛИЯ, ИМЯ, ПОЛ, АДРЕС)
Изменения в таблице УСПЕВАЕМОСТЬ Надо ли добавить в таблицу УСПЕВАЕМОСТЬ поле КЛАСС? Попробуйте дать ответ сами. (ДА НЕТ)ДАНЕТ
Вы ответили «ДА» Вы правы. Ведь ученик, который получает отметки за четверть должен быть идентифицирован. Его номер – в списке класса, а сам класс должен быть указан в числе ключей. Поэтому: УСПЕВАЕМОСТЬ(КЛАСС, НОМЕР_УЧ., ПРЕДМЕТ, 1_ЧЕТВ, 2_ЧЕТВ, 3_ЧЕТВ, 4_ЧЕТВ, ГОД) Нажмите ПродолжитьПродолжить
Вы ответили «НЕТ» А почему? Один из возможных аргументов за этот ответ: номер ученика надо вести по всей школе, а не по классам. Тогда номер будет идентифицировать ученика полностью. Контраргумент: вся структура БД не предусматривает сквозной нумерации учеников в школе. Хотя, это было бы, наверно, логично. По этому пути идут большинство практических БД (вспомните ИНН, против которого протестуют некоторые верующие). Нажмите ПРОДОЛЖИТЬПРОДОЛЖИТЬ
Связи в трехтабличной БД Связи в БД устанавливаются по такой схеме Попробуйте создать связи в этой БД (нажмите)нажмите
Создание запросов Задание 1 1.Получить список всех девочек из девятых классов, у которых годовые оценки по информатике пятерки. Запишем команду на гипотетическом языке запросов:.выбор УЧЕНИКИ.ФАМИЛИЯ, УЧЕНИКИ.ИМЯ, УЧЕНИКИ. КЛАСС где УЧЕНИКИ.КЛАСС='9?' и УЧЕНИКИ.ПОЛ='ж' и УСПЕВАЕМОСТЬ.ПРЕДМЕТ='информатика' и УСПЕВАЕМОСТЬ.ГОД=5 сортировать УЧЕНИКИ.ФАМИЛИЯ по возрастанию В условии отбора УЧЕНИКИ.КЛАСС=' 9?' используется символ- заменитель «?». На его месте в значении данного поля может быть любой другой символ. Поэтому условие будет истинным для любого 9 класса (9а и 9б). Выполнить задание
Задание 2 Получить список учеников восьмых классов, у которых есть хотя бы одна тройка по истории за четверть, Вывести также фамилию классного руководителя..выбор УЧЕНИКИ.ФАМИЛИЯ, УЧЕНИКИ.КЛАСС, КЛАСС. КЛАС_РУК где УЧЕНИКИ.КЛАСС=' 7 ?' и УСПЕВАЕМОСТЬ. ПРЕДМЕТ»'история' и (УСПЕВАЕМОСТЬ. 1_ЧЕТВ=3 или УСПЕВАЕМОСТЬ.2_ЧЕТВ=3 или УСПЕВАЕМОСТЬ.3_ЧЕТВ=3 или УСПЕВАЕМОСТЬ.4_ЧЕТВ=3) сортировать УЧЕНИКИ.ФАМИЛИЯ по возрастанию В этом запросе используются все три таблицы базы данных Выполнить задание Для тех, кто не смог сделать сам задание 1-2
Задание 3 Получить список всех учеников 7-х, 8-х и 9-х классов, у которых сумма оценок по математике за четыре четверти больше 16. Сгруппировать список по классам, расположить в порядке убывания суммы оценок. В этом запросе используется вычисляемое поле СУММА. Оно присутствует только в запросе и не войдет в таблицы базы данных. Команда на гипотетическом языке запросов запишется так:.выбор УЧЕНИКИ.ФАМИЛИЯ, УЧЕНИКИ.КЛАСС, СУММА: УСПЕВАЕМОСТЬ. 1_ЧЕТВ + 2_ЧЕТВ + 3_ЧЕТВ + 4_ЧЕТВ где (УЧЕНИКИ.КЛАСС ='7? или = '8?' или = '9?') и УСПЕВАЕМОСТЬ.ПРЕДМЕТ='математика' и СУММА > 16 сортировать УЧЕНИКИ.КЛАСС по возрастанию, СУММА по убыванию
Значение поля СУММА получается путем суммирования оценок за четыре четверти. По этому же полю можно производить сортировку, устанавливать условия отбора. Вычисляемое поле представляется в следующем формате: : : Выражение записывается по традиционным правилам для арифметических выражений, используемых в программировании и в электронных таблицах. Выполнить задание Выполнить задание Для тех, кто не может сделать сам задание 3
К заданию 1 К заданию 2
Коротко о главном Добавление к модели данных нового отношения требует связывания его с имеющимися отношениями. При этом приходится изменять структуру старых отношений, добавляя в них поля для связывания.
Задания по созданию запросов Записать команды запросов на выборку на гипотетическом языке для перечисленных ниже задач. Везде организовать сортировку по первому полю. Получить список, в котором будут указаны фамилии, имена и классы учеников, имеющих пятерки по истории за все четыре четверти учебного года. Получить список, в котором будут указаны фамилии, имена, классы и годовые оценки по математике для учеников, которые учились «ровно» весь год, т. е. все четвертные оценки были одинаковыми. Получить список учеников девятых классов, у которых годовая оценка по математике выше их средней оценки за четыре четверти.
К заданию 3 Примечание: Это поле при вводе заполняется так, как показано на рисунке. При выполнении запроса Access переписывает исходное и добавляет второе поле (служебное)