Таблицы предыстории SQL |
К третьему типу относятся таблицы предыстории, называемые иначе таблицами транзакций. В данном примере одна такая таблица должна содержать предысторию классов, в которых учащиеся прошли полное обучение. Как правило, для данного типа таблицы вполне подходит первичный ключ с атрибутом AUTO_INCREMENT. Частичная структура таблицы предыстории классов, которые окончили учащиеся, может выглядеть так, как показано ниже.
По окончании каждого класса, когда выставляется итоговая оценка, в таблицу предыстории классов вводится строка по каждому учащемуся и классу. Таким образом, табель или справку об успеваемости учащегося (т.е. перечень оконченных им классов) можно получить по следующему запросу: SELECT с.name, h.semester, h.class_grade FROM student_class_history AS h INNER JOIN students AS s ON s.id = h.student_id INNER JOIN classes AS с ON c.id = h.class_id WHERE h.student_id = 234 ORDER BY h.semester ASC, c.name ASC Аналогичную таблицу предыстории можно было бы создать и для записи классов, которые вел каждый преподаватель. Эту таблицу было бы целесообразно проиндексировать по столбцам studentid и classid. Соответствующие запросы можно было бы составить и для отбора строк из этой таблицы по столбцу semester_id, а следовательно, и данный столбец стоило бы проиндексировать. Это же относится и к столбцу date_ completed, если по нему предполагается делать запросы. Понравился материал? Пригодилась информация? Плюсани в социалки!
|
Похожие новости | |