Я пишу програмулину на Spring MVC с использованием JDBCTemplate, которая в будущем будет навешана большим количеством функционала. В ней есть два вида активных пользователей(Админ не в счет сейчас): Студент и Преподаватель. У каждого свой набор полей, есть лишь немного одинаковых (такие ка ФИО например). И встал вопрос, как действовать дальше: либо пилить отдельные модели, для каждой реализовывать эндпоинты на авторизацию и т.д., либо запилить одну большую, с возможностью оставлять поля пустыми (на фронте давать возможность преподавателю заполнять только свои поля, а студенту свои) и раскидать функционал по Ролям. Но второй вариант влечет за собой невероятное кол-во костылей. Подскажите, как правильно поступить?
EAV модель
Еntity - сущности/роли: Админ, Студент и Преподаватель
Attributes - специальные атрибуты/свойства: Занятия, Зачеты (общие поля (ФИО, Пароль) добавляются в таблицу пользователей)
ЕntityAttributes - связь M:M атрибутов и сущностей
Values - уникальные значения атрибутов
AttributeValues - связь M:M значений и атрибутов