現在の構造は次のとおりです。
Table RowType: RowTypeID
Table RowSubType: RowSubTypeID
FK_RowTypeID
Table ColumnDef: FK_RowTypeID
FK_RowSubTypeID (nullable)
つまり、列定義を行にマッピングしています。場合によっては、これらの行にサブタイプがあり、それらに固有の列定義があります。または、サブタイプに固有の列定義を独自のテーブルから吊るすか、RowType と RowSubType のデータを 1 つのテーブルに結合して 1 つの ID で作業することもできますが、どちらがより良い解決策であるかはわかりません (ほとんどの場合、特定の RowType/RowSubType の ColumnDefs をプルすることになるため、どちらかといえば後者に傾倒します)。
現在の設計は SQL 冒涜ですか?
現在の構造を保持する場合、RowSubTypeID が ColumnDef で指定されている場合、それが RowTypeID で指定された RowType に対応している必要があることをどのように維持しますか? トリガーでこれを強制しようとする必要がありますか、それとも問題を解決する単純な再設計が欠けていますか?