Вы говорите о внедрении полиморфизма, который, хотя это невозможно в реляционной базе данных, является хорошим способом оценить плюсы и минусы. Вариант 1 аналогичен подклассу, где учетная запись ссуды наследует все из учетной записи и расширяет ее. Поэтому используйте это, если вы хотите, чтобы учетная запись являлась суперклассом ... другими словами, если вы добавите новый вид учетной записи, скажем, кредитную карту, вы добавите для нее другую таблицу и связали бы ее с учетной записью. Это означает, что таблица счетов должна оставаться общей ... номер счета, баланс и т. Д.
Вариант 2 рассматривает два типа счетов, таких как отдельные классы. Используйте это, если они не будут делиться многими CRUD-операциями, потому что теперь простое обновление баланса в ответ на транзакцию должно иметь где-то другой код.
Вариант 3 является универсальным подходом. Большим преимуществом является простота моделирования и запросов. Большой недостаток заключается в том, что вы не сможете реализовать ограничения NOT NULL для столбцов, которые должны быть там для некоторых типов учетных записей, но не для других.
Существует 4-й вариант объединения первых двух вариантов, которые обеспечивают решение, аналогичное абстракции партии для людей и организаций. У вас есть 3 таблицы: 1) таблица учетных записей, которая обрабатывает основные элементы идентификатора учетной записи, баланса, владельца и т. Д .; 2) таблица ссудного счета, которая содержит дополнительные столбцы и ссылку на идентификатор учетной записи; и 3) базовую таблицу учетных записей, которая имеет только ссылку на идентификатор учетной записи. Это может показаться излишним, но оно создает систему, которую вы можете продлить без изменений. Я использовал шаблон много раз.