Мне кажется, что схема вышла правильно. Возможно, вам нужно быть более конкретным в отношении проблемы, которую вы имеете, потому что я понимаю, что PermitId для всех подклассов PermitDetails становится внешними ключами для соответствующих таблиц отношений.
Например. для дисциплины «газ» в соответствующем разрешении должна быть информация о газе для разрешения. Он имеет отношение, если PermitID в tblGas является внешним ключом для идентификатора tblPermit. Как это:
+---------------+ +----------------------+
| | 1 1 | |
| tblPermit |<------->| tblGas |
| | | (for gas discipline) |
| | | |
+---------------+ +----------------------+
| | | |
| {PK} PermitId | | {FK} PermitID | <- ForeignKey to tblPermit.PermitID
| | | |
+---------------+ +----------------------+
Вам не понадобится столбец Discipline, чтобы выбрать правильные данные. Вам нужен только один запрос, который ищет tblElectrical, tblGas по идентификатору разрешения. Таким образом, вы получите свое разрешение вместе с информацией.
(PS. Извините, что я использую диаграмму классов UML для визуализации таблиц базы данных, но нотация «гусиные лапки» плохо переводится в ASCII)