Суть задачи:
Есть 3 типа пользователей, у все 3х типов есть, как общий, так и уникальных для каждого, набор свойств, так же у 2-го и 3-го есть свойства которых нет у первого.
На данный момент есть идея сформировать базу следующим образом (схему приложу позже, пишу с телефона):
- таблица user, для всех общий свойств, pk каждого пользователя хранить в ней
- таблица user_common_type_2_3, для хранения общих свойств для типа 2 и типа 3
- таблицы user_type_1, user_type_2, user_type_3
связи между таблицами - 1:1
Но такая идея настораживает - завтра может появиться пользователь с типом 4, 5, 6..., у которого есть общие свойства с 1м, 3м и т.д.
Второй вопрос:
Как это лучше всего реализовать в приложении.
Понятное дело, нужно создать базовый класс, потом его унаследовать. В каждом классе иметь определенный для конкретного пользователя набор свойств и с этим интерфейсом работать далее.
Реализация с собственным написанием запросов проблем не вызывает, но как это реализовать с помощью ORM не совсем понятно. Интересна была бы реализация с помощью Active Record и Doctrine (на Symfony решал подобную задачу ранее, но было только два типа пользователей и реализация без использования Doctrine).
Заранее большое спасибо.