Проектирование объектной модели - PullRequest
1 голос
/ 23 ноября 2011

У меня возник вопрос о наилучшем способе обработки данных такого типа.

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

Пользователи

счета

& users_accounts

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

Ответы [ 3 ]

1 голос
/ 23 ноября 2011

Можно ли предположить, что в одной учетной записи не может быть более одного пользователя (отношение 1-ко-многим)?В этом случае достаточно двух таблиц:

  • users
  • accounts

Где accounts содержит ссылку на пользователяЯ бы.Отдельная таблица отношений была бы излишней, если нет отношения «многие ко многим».

Тогда возникает вопрос: может ли пользователь иметь как платные, так и неоплаченные аккаунты?Если это так, флаг принадлежит в accounts.В противном случае он относится к users.


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

  • Будет ли платный пользователь иметь дополнительные функции во всех аккаунтах?Тогда флаг принадлежит users.
  • Будет ли у какого-либо пользователя дополнительная функциональность в платной учетной записи?Тогда флаг принадлежит accounts.
  • Будет ли платный пользователь иметь дополнительные функции только в платных аккаунтах?Тогда флаг относится к users_accounts.

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

0 голосов
/ 23 ноября 2011

Добавить флаг paid к user_account.

Пример атрибутов:

  • user (id, name, street ...)
  • account (id, name ...)
  • user_account (user_id, account_id, paid)

По столбцу paid можно определить, является ли пользователь премиум-членом или нет.

0 голосов
/ 23 ноября 2011

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

Ключ в том, что users_accounts - это таблица отношений между Users и accounts, поэтому в ней будут любые данные связывания от Users до accounts, и ТАМ, что вы должны поставить флаг, потому что он есть, когда выустановить отношения.

...