Jika hierarki yang Anda inginkan adalah program -> theme -> strand -> year -> unit -> learning_event, maka Anda harus menyesuaikan struktur tabel Anda untuk mencerminkan hal ini. Secara khusus tema harus memiliki hubungan kunci asing antara tema dan program, dan Anda memerlukan level tambahan untuk tahun ini. Memiliki kunci asing antara tema dan program menghindari kebutuhan untuk bergabung secara silang. Gabungan silang memiliki kebiasaan menggigit Anda dan umumnya harus dihindari.
Jika Anda melihat db biola ini Anda akan melihat bahwa saya telah membuat perubahan ini. Saya telah menyebut strandyear tingkat tahun untuk menghindari penggunaan kata yang dicadangkan, tetapi tujuannya harus jelas. Sekarang gabungan menjadi gabungan dalam (bukan gabungan kiri) untuk mengambil nilai deskripsi dari tingkat yang lebih tinggi di pohon, dan tingkat bawah (learning_events) secara otomatis hanya berisi nilai yang cocok dengan untai, tahun, dan unit, tanpa alasan lain selain bahwa struktur itu sendiri menjaminnya, melalui cara sederhana bahwa setiap level memiliki kunci asing ke level di atasnya.
Perhatikan bahwa kunci asing secara efektif berantai. Anda tidak memerlukan, misalnya, kunci asing khusus antara learning_event dan untai, karena kunci intervensi dalam rantai menjamin hubungan.