Проектирование базы данных
Добавлено: 2010.11.24, 15:22
На сайте есть две роли - участницы конкурса и жюри.
Соответственно необходимые типы данных у них отличаются, хотя есть некоторые общие для обоих.
Вопрос в том, как лучше это реализовать. В оффлайн программировании это было бы два класса Участница и Жюри наследуемые от Пользователь. Можно конечно и в Вии модели наследовать, но как быть с базой?
1. Наплевать на все и объединить типы данных обоих пользователей в одну таблицу, активно используя NULL. Кривовато получится.
2. EAV, но насколько я понимаю это будет совсем неэкономично. И я пока не нахожу особой необходимости в этом, ведь количество различных полей у пользователей не настолько велико - роли-то две.
3. Сделать три таблицы: Пользователи, Жюри, Участницы. В Пользователи забить информацию общую для двух пользователей, в две остальные - кастомные поля для соответствующей роли с указателем на запись в таблице Пользователи.
Но использование этого будет не очень удобным - я не смогу красиво работать программно с этим, вроде как.
Any ideas?
Соответственно необходимые типы данных у них отличаются, хотя есть некоторые общие для обоих.
Вопрос в том, как лучше это реализовать. В оффлайн программировании это было бы два класса Участница и Жюри наследуемые от Пользователь. Можно конечно и в Вии модели наследовать, но как быть с базой?
1. Наплевать на все и объединить типы данных обоих пользователей в одну таблицу, активно используя NULL. Кривовато получится.
2. EAV, но насколько я понимаю это будет совсем неэкономично. И я пока не нахожу особой необходимости в этом, ведь количество различных полей у пользователей не настолько велико - роли-то две.
3. Сделать три таблицы: Пользователи, Жюри, Участницы. В Пользователи забить информацию общую для двух пользователей, в две остальные - кастомные поля для соответствующей роли с указателем на запись в таблице Пользователи.
Но использование этого будет не очень удобным - я не смогу красиво работать программно с этим, вроде как.
Any ideas?