Комментарии

Таблицы предыстории SQL
( 0 Голосов )

К третьему типу относятся таблицы предыстории, называемые иначе таблицами транзакций. В данном примере одна такая таблица должна содержать предысторию классов, в которых учащиеся прошли полное обучение. Как правило, для данного типа таблицы вполне подходит первичный ключ с атрибутом AUTO_INCREMENT. Частичная структура таблицы предыстории классов, которые окончили учащиеся, может выглядеть так, как показано ниже.

  • Столбец history_id: атрибуты INT, AUTO_INCREMENT, PRIMARY  KEY.
  • Столбец student_id: внешний ключ к таблице учащихся.
  • Столбец class_id: внешний ключ к таблице классов.
  • Столбец semester: значение типа varchar (б) (формат: уууухх, где уууу — учебный год, хх — 01,02, 03, т.е. номер семестра, четверти или иного периода учебного года в зависимости от вида учебного заведения).
  • Столбец date_completed: дата окончания.
  • Столбец class_grade: значение типа varchar (2).
  • Столбец comments: значение типа varchar (1024).

По окончании каждого класса, когда выставляется итоговая оценка, в таблицу предыстории классов вводится строка по каждому учащемуся и классу. Таким образом, табель или справку об успеваемости учащегося (т.е. перечень оконченных им классов) можно получить по следующему запросу:

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, если по нему предполагается делать запросы.


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости
Добавить комментарий


Защитный код