Я пытаюсь разработать базу данных для веб-сайта. Этот сайт зарегистрирован, и эти пользователи могут дружить с другими пользователями. Как и любой традиционный сайт социальной сети. Теперь моя проблема заключается в том, что я должен хранить список друзей каждого пользователя, а также информацию о его профиле. Каждый пользователь имеет свой собственный идентификатор профиля. Кроме того, каждому пользователю разрешено создавать группы для своих друзей, а также поле статуса, в котором говорится о состоянии дружбы между двумя пользователями.Число таблиц базы данных по сравнению с размером таблицы
Теперь, чтобы сделать это, я думал, что из двух решений:
поддерживать таблицу с именем профиля, в которой каждый пользователь имеет идентификатор профиля и его другую информацию о профиле и иметь глобальную таблицу друзей, что имеет его id профиля и идентификатор профиля его друзей. И другие поля будут описывать, группу, пользователь выбрал для конкретного друга и статус для их дружбы и так далее.
Ведение таблицы с именем профилей, в которой каждый пользователь имеет идентификатор профиля и другие его данные профиля, как указано выше, и имеют отдельную таблицу друзей для каждого пользователя, которая говорит что-то вроде friends_profileid, и каждый пользователь имеет свой собственный список друзей, который имеет всю другую информацию.
Какой из этих двух методов более подходит? Я использую MySQL Server 5.0, и я также рассматривал использование абстрактных типов данных и типов массивов, но это делает реализацию интерфейса более сложной, сложной и громоздкой. В то время как первый метод увеличивает количество строк в одной таблице с очень высокой скоростью, второй метод увеличивает количество таблиц, пропорциональное количеству пользователей? Что более рекомендуется? Больше количества таблиц или большего количества строк?
В то время как вторая методика уменьшает над головой поиска в одной таблице, каковы накладные расходы на сохранение схемы снова и снова? Каков наилучший метод для такого типа ситуации?
Я согласен с вами, но считаю следующее: Скажем, у меня есть пользователи 1 и 2, теперь пользователь1 может классифицировать пользователя 2, чтобы быть в группе A, в то время как user2 классифицирует 1, чтобы быть в B. Таким образом, очевидно, что я должен сохраните значения 1 и 2 и 2 и 1 в таблице user_friends. Теперь скажите, что у меня 1000 пользователей, и у каждого из них 50 друзей, теперь размер таблицы будет равен 50 000, и каждый раз, когда мне приходится запрашивать список друзей, будет огромная накладная, и мне нужно будет найти список друзей часто. Время выполнения запроса увеличивается экспоненциально даже для небольшой базы данных .. это целесообразно ..? – sasidhar
У меня также есть еще одна мысль об этом, я не знаю, имеет ли это смысл вообще, но желательно ли запросить ту же таблицу для получения списка друзей любого данного пользователя.? – sasidhar
@sasidhar: когда вы говорите _ «традиционный сайт социальной сети» _, я думаю, что Facebook. На Facebook дружба взаимная. Если A дружит с B, B также должен быть друзьями с A; наоборот, A не может дружить с B, если B не дружит с A. Это ограничивает размер вашей таблицы, потому что вам нужно только перечислить каждую дружбу один раз. –