Дизайн базы данных: пользователь с доступом к определенным страницам - PullRequest
1 голос
/ 15 января 2011

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

Если в таблице users есть столбец с именем «ведомые_аккаунты», куда данные вставляются как «518,28 ", а затем разделить его в приложении?Какие у вас есть предложения?

Ответы [ 5 ]

2 голосов
/ 15 января 2011

, если только один пользователь может быть владельцем учетной записи хостинга, используйте внешний ключ на hostingaccounts , как ownerid .

если ваша учетная запись хостинга может принадлежать нескольким пользователям, добавьте дополнительную таблицу, например hostingaccountsownerships с Идентификационный номер , ИД пользователя , hostingaccountid и получить оттуда.

0 голосов
/ 16 января 2011

Используя ваше описание, я вижу следующие сущности и отношения:

users(
   user_id (PK)
)

accounts(
   account_id (PK)
)

user_accounts(
   user_id    references users(user_id)
  ,account_id references accounts(account_id)
)

В зависимости от ваших требований вы можете определить ключ в user_accounts различными способами для обеспечения соблюдения ограничений:

1. primary key(user_id)

Пользователь может иметь только одну учетную запись. Аккаунт может принадлежать многопользовательскому пользователю.

2. primary key(account_id)

Пользователь может иметь несколько учетных записей. Аккаунт может принадлежать только одному пользователю.

3. primary key(user_id, account_id)

Пользователь может иметь несколько учетных записей, а учетная запись может принадлежать нескольким пользователям.

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

0 голосов
/ 15 января 2011

Ваше решение будет работать нормально, если отношение пользователя к записи hostingaccounts было 1 к 1, но если есть вероятность, что у пользователя может быть более 1 хостинга, тогда в таблице учетной записи хостинга должен быть столбец «user_id». 1001 *

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

Лучший ответ действительно зависит от целей и ограничений вашей системы.

0 голосов
/ 15 января 2011

если у пользователя может быть несколько учетных записей хостинга, вам нужна таблица ссылок UserId + HostingAccountID в качестве ключа.

0 голосов
/ 15 января 2011

Создайте третью таблицу с двумя столбцами: user_id, account_id. Таким образом, один пользователь может быть подключен к нескольким учетным записям и наоборот. Таким образом, вы можете легко объединить эти три таблицы, чтобы узнать, какие учетные записи доступны пользователю и т. Д.

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