Om din önskade hierarki är program -> tema -> strand -> år -> enhet -> lärande_händelse, bör du justera din tabellstruktur för att återspegla detta. Speciellt tema bör ha en främmande nyckelrelation mellan tema och program, och du behöver en extra nivå för året. Att ha en främmande nyckel mellan tema och program undviker behovet av en korskoppling. Cross joins har en vana att bita dig och bör i allmänhet undvikas.
Om du tittar på denna db-fiol du kommer att se att jag har gjort dessa ändringar. Jag har kallat årsnivån strandår för att slippa använda ett reserverat ord, men avsikten bör vara tydlig. Nu blir kopplingarna inre kopplingar (istället för vänsterkopplingar) för att plocka upp beskrivningsvärdena från högre nivåer i trädet, och den nedre nivån (learning_events) innehåller automatiskt bara värden som matchar sträng, år och enhet, utan någon annan anledning än att strukturen i sig garanterar det, genom det enkla ändamålet att varje nivå har en främmande nyckel till nivån ovanför.
Observera att de främmande nycklarna effektivt kedjar samman. Du behöver till exempel inte en specifik främmande nyckel mellan learning_event och strand, eftersom de mellanliggande nycklarna i kedjan garanterar relationen.