Dva nejběžnější přístupy jsou tabulka na třídu (tj. tabulka pro základní třídu a další tabulka pro každou podtřídu, která obsahuje další sloupce potřebné k popisu podtřídy) a tabulka na hierarchii (tj. všechny sloupce v jedné tabulce s jedním nebo více sloupců, aby bylo možné rozlišit podtřídy. Který je lepší přístup skutečně závisí na podrobnostech vaší aplikace a strategie přístupu k datům.
Ve vašem prvním příkladu byste měli tabulku podle třídy obrácením směru FK a odstraněním nadbytečných ID z nadřazeného prvku. Další dvě jsou v podstatě varianty tabulky na třídu.