Таблицы базы данных для нескольких ролей - PullRequest
1 голос
/ 19 января 2012

У меня проблема с архитектурой того, как хранить данные, относящиеся к определенной роли, в реляционной базе данных.

У меня три роли: Subscriber Contact, Teacher и Student.Все они хранятся в таблице Users, но имеют специфические свойства, связанные с каждым из них.У ученика есть SchoolId, Grade, у абонента есть DistrictId, у учителя - ProgramId, SchoolId, Grade.

Должен ли я иметь три отдельные таблицы для подписчикаконтакт, учитель и ученик, или я должен сделать какой-то поиск ключа / значения?Если поиск ключа / значения, как я могу сделать это и как я могу сделать это для внешнего ключа, как DistrictId и SchoolId?

1 Ответ

1 голос
/ 19 января 2012

Вы можете моделировать что-то вроде наследования. Таблица суперклассов, состоящая из всех общих атрибутов для ролей subscriber, teacher и student. Затем три таблицы подклассов для каждой из ролей, состоящих из статей, уникальных для каждой. Между сущностью суперкласса и каждой из сущностей подкласса будет взаимно-однозначное отношение.

...