Ако желаната от вас йерархия е програма -> тема -> нишка -> година -> единица -> учебно_събитие, тогава трябва да коригирате структурата на таблицата си, за да отразява това. По-специално темата трябва да има връзка с външен ключ между тема и програма и вие се нуждаете от допълнително ниво за година. Наличието на външен ключ между тема и програма избягва необходимостта от кръстосано присъединяване. Кръстосаните съединения имат навика да ви хапят и обикновено трябва да се избягват.
Ако погледнете тази db цигулка ще видите, че направих тези промени. Извиках годишно ниво strandyear, за да избегна използването на запазена дума, но намерението трябва да е ясно. Сега присъединяванията стават вътрешни съединения (вместо левите съединения), за да вземат стойностите на описанието от по-високи нива в дървото, а долното ниво (learning_events) автоматично съдържа само стойности, които съвпадат с верига, година и единица, без друга причина, освен че самата структура го гарантира, чрез простото средство всяко ниво да има външен ключ към нивото по-горе.
Имайте предвид, че външните ключове ефективно са верижна връзка. Не се нуждаете например от специфичен външен ключ между learning_event и направление, защото интервенционните ключове във веригата гарантират връзката.