Текущая структура выглядит следующим образом:
Table RowType: RowTypeID
Table RowSubType: RowSubTypeID
FK_RowTypeID
Table ColumnDef: FK_RowTypeID
FK_RowSubTypeID (nullable)
Короче говоря, я сопоставляю определения столбцов со строками. В некоторых случаях эти строки имеют подтип (ы), которые будут иметь определенные для них определения столбцов. В качестве альтернативы, я мог бы повесить определения столбцов, которые относятся к подтипам, из их собственной таблицы, или я мог бы объединить данные в RowType и RowSubType в одну таблицу и работать с одним идентификатором, но я не уверен, что это лучшее решение во всяком случае, я бы склонялся к последнему, так как мы в основном вытаскиваем ColumnDefs для данного RowType / RowSubType).
Является ли текущий дизайн SQL богохульством?
Если я сохраню текущую структуру, как мне сохранить, что если RowSubTypeID указан в ColumnDef, он должен соответствовать RowType, указанному в RowTypeID? Должен ли я попытаться применить это с помощью триггера, или я упустил простой редизайн, который решил бы проблему?