Похоже на случай нетривиального дизайна ... Что касается дизайнов БД, которые я видел, не может быть ни одного условия объединения без потери 1NF на этом.
Предлагаемое решение, которое может встретиться с несколькими самостоятельными объединениями безпотеря 1NF-
Предполагая, что по классу вы имеете в виду курс ... предварительные условия (prerequisite_id (pk), class_no * (fk), отношение, Linked_Prerequisites (fk) *)
, если Linked_Prerequisites равно null, мыможно использовать, чтобы объединить все строки, доступные под определенным class_no, чтобы найти все предпосылки.
например,
Prerequisites(prerequisite_id,class_with_prerequisite,class_id_of_prerequisite, relationship, linked_prerequisites)
1,1,2,and,2
2,1,3,null,null
3,1,4,or,null
--------------
Class(*deptartment, class_number*(pk), description)
12,1,classA
12,2,classB
12,3,ClassC
12,4,ClassD
--------------
Используя это, вы можете создать ориентированный граф.Сначала вы можете выбрать данные из предварительных условий, чтобы они имели ненулевые данные, а затем соединить их с собой, чтобы создать внутри себя иерархию.
Если вы сами поддерживаете данные, вы можете манипулировать ими, чтобы работать на одном уровне, ориентированном награфик, с которым вам нужно написать только одноуровневое соединение.