Я пытаюсь создать эффективную и масштабируемую модель данных для приложения, которое я пишу. Я прихожу к общей проблеме, поскольку дизайн идет, пример, приведенный ниже, иллюстрирует мою проблему хорошо:Решения по проектированию базы данных
Я хочу создать таблицу пользователей с полем идентификатора первичного ключа и, как и Facebook, они имеют друзей, которые также являются пользователями. было бы лучше иметь поле в таблице пользователей, называемое «список друзей», в котором перечислены все идентификаторы друзей пользователей или есть таблица для каждого пользователя, в которой перечислены все их друзья, или, возможно, какой-то другой вариант, который у меня не был все же?
Мне нужно иметь эффективный способ вытащить всю информацию друзей друзей, такую как адреса имен и т. Д. Но я боюсь, что у меня есть строка идентификаторов, которые я должен перебирать, а затем присоединяюсь к таблице пользователей, не будет ужасно эффективным, особенно если у меня есть многораздельная база данных. Это конкретная ситуация, однако я вижу обобщение этой проблемы в другом месте моего приложения.
Любая помощь очень ценится. Спасибо!
Вы хотите отдельную таблицу, которая связывает один идентификатор пользователя к другому. НЕ выполняйте ни одну из предложенных вами вещей (все друзья в одном столбце или отдельные таблицы для каждого пользователя) – Joe
Я думал о том, что, однако, эта таблица была бы довольно большой? например, у меня 1500 друзей на Facebook, сопоставление всех отношений означает, что соединение на этой таблице будет неэффективным? –
Это то, что реляционные базы данных * делают *. Если вы собираетесь использовать СУРБД, используйте ее сильные стороны. – Joe