Связывание друзей с профилем владельца учетной записи

Я разрабатываю приложение, в котором у владельца учетной записи есть «друзья». Как мне связать этих друзей с первоначальным владельцем учетной записи? Будет ли эффективная таблица SQL выглядеть примерно так:

AccountHolderID (varChar 20)
FriendsID (nText)

person user279521    schedule 09.07.2010    source источник
comment
Друг является еще одним пользователем / владельцем учетной записи в вашей системе?   -  person Scott Saunders    schedule 09.07.2010
comment
да вы правы. Я думаю, что FriendID должен быть foreignKey (так что это не может быть nText), возможно?   -  person user279521    schedule 09.07.2010
comment
Если предполагается, что у каждого владельца учетной записи может быть один или несколько друзей, и каждый друг может быть связан с одним или несколькими владельцами учетных записей, тогда вам потребуется отношение «многие ко многим». См. Мой ответ на этот вопрос для примера отношения" многие ко многим "в MySQL. Замените элементы на владельцев учетных записей, а теги на друзей, и у вас будет основа для вашей схемы. В Интернете полно руководств по отношениям с базами данных.   -  person Mike    schedule 09.07.2010
comment
Было ли у вас намерение сделать FriendsID полем NTEXT для хранения строки в строках personid1, personid2, personid3? Если это так, вы должны понимать, что это сделает запросы, связанные с этим полем, очень сложными для написания и крайне неэффективными - вам следует избегать хранения нескольких значений в одном поле - это не метод базы данных!   -  person Will A    schedule 10.07.2010
comment
да, мы хотели сказать, что у UserID1001 есть друг UserID2001, UserID3021, UserID3310 и т. д.   -  person user279521    schedule 10.07.2010


Ответы (1)


Мы реализуем нечто подобное - используем стол, чтобы держать друзей ... Наш стол очень прост, как стол друзей ...

AccountHolderId( type)
FriendAccountHolderId ( type)
Created(datetime)  // useful for tracking when the friend was added

Оба поля Id ссылаются на таблицу Accounts / Users.

person reallyJim    schedule 09.07.2010
comment
какой тип данных у вашего AccountHolderID и FriendAccountHolderID? Вы используете SQL Server? - person user279521; 09.07.2010
comment
Мы использовали GUID в SQL Server. (Ух ты, пять лет спустя!) - person reallyJim; 19.10.2015