Пользователь не должен беспокоиться о том, что входит в какую таблицу, это работа вашего приложения.
Если вам нужна ваша основная таблица для ссылки на любую из трех разных таблиц (и у них такие разные столбцы, что вы не можете объединить их в одну таблицу), настройте основную таблицу следующим образом:
RecordsTable:
Id -> primary key for the table
docType -> identifies what kind of record it is: 1, 2, or 3
docID1 -> Foreign key to table1, if docType = 1; NULL otherwise
docID2 -> Foreign key to table2, if docType = 2; NULL otherwise
docID3 -> you get the idea
filingDate
Но если у вас есть три вида сущностей с очень различным содержанием, вам действительно нужно перечислить их все вместе? Может быть, вы не совсем, и в этом случае вы можете просто сохранить их как отдельные таблицы. Если имеет смысл перечислить их все вместе, концептуально у вас есть одна сущность («по звучанию») с тремя подтипами. Возможно, имеет смысл упростить задачу для себя и сохранить их в одной таблице с множеством пустых столбцов (столбцы VARCHAR не занимают места, когда они пусты). Это немного расточительно, но у современных компьютеров есть свободное место и мощность, и ваше время ценно. Но вы возражаете,
Это просто для того, чтобы показать сводку всех записей, поданных в офисе, так как будет нехорошо показывать все эти записи одновременно.
Это не проблема! Сделайте запрос SELECT только со столбцами, которые вы хотите показать для сводки. Если пользователь выбирает запись, тогда сделайте SELECT * и покажите полный результат.
Если вы хотите разобраться с нечастыми полями, сделайте это, как указано выше.
По сути, вам нужно немного программировать. Не думайте, что дизайн вашей базы данных - это вся ваша программа: задача базы данных - хранить данные, а задача приложения - что-то с ними делать.