Дизайн базы данных для пользователя и разработчика - PullRequest
0 голосов
/ 19 октября 2011

Я хочу создать веб-сервис, в котором есть сущности - пользователь и разработчик.

Разработчик может или не может быть пользователем (я ожидаю, что он будет пользователем в большинстве случаев).Он может использовать веб-API для создания своих приложений поверх моего веб-сервиса.Пример - Facebook позволяет нам создавать приложения на developer.facebook.com, где мы выполняем вход с использованием нашей учетной записи FB.

Мой вопрос - мне следует создавать отдельные таблицы для пользователей и разработчиков?У пользователя есть некоторые атрибуты, которые типичному разработчику не нужны.Кроме того, разработчик видит определенные функции, которые не видны обычному пользователю.

Компромисс: - Для 2 отдельных таблиц будут избыточные данные, но я ожидаю, что очень мало разработчиков по сравнению с пользователями.та же таблица - там будут избыточные атрибуты.

Каков будет лучший дизайн для этого сценария?

Ответы [ 2 ]

0 голосов
/ 19 октября 2011

Если ни один из них не наследуется полностью от другого, то имеет смысл использовать 2 отдельные таблицы. Конечно, они могут иметь некоторые похожие атрибуты, но я понимаю, что вы никогда не будете использовать пользователя / разработчика взаимозаменяемо.

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

Короче говоря, если сущности действительно разделены на 100%, и для разработчика имеет смысл зарегистрироваться один раз как разработчик, а другой раз как пользователь (без связи между учетными записями), тогда они, вероятно, принадлежат отдельные таблицы. Но если разработчика можно рассматривать как своего рода «суперпользователя» с расширенными атрибутами, то я бы сохранил все базовые записи в таблице «Пользователи» с добавлением атрибутов разработчика в своей собственной таблице (второй сценарий звучит более вероятно мне).

0 голосов
/ 19 октября 2011

Я думаю, это зависит от того, насколько ваши обычные пользователи будут отличаться от ваших разработчиков. Какие дополнительные поля вам понадобятся для разработчика? Если нет, то ответ прост: одна таблица для обоих. Вы можете даже подумать о том, чтобы иметь какую-то связь наследования с таблицей разработчика, имеющей только дополнительные поля плюс идентификатор пользователя.

Как вы думаете, какие дополнительные поля вы можете иметь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...