Как сохранить список пользователей, и дать пользователям знать, что они в этом списке

0

Создание сайта, в котором пользователь может добавлять людей в свой "список". Этот список принадлежит пользователю, но им интересно, как лучше всего хранить/извлекать/прокручивать этот список в функции, показывать людей, которые находятся в списке, что они есть и кто их создал.

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

Мой вопрос в два раза. Во-первых, если предположить, что в списке есть только a-z 0-9 и дефисы и подчеркивания (без пробелов в именах пользователей, но разделенных пробелами), какой будет лучший тип поля для хранения, как в mysql. Во-вторых, какой был бы лучший/быстрый метод поиска имени пользователя во многих списках?

Теги:
theory

3 ответа

1
Лучший ответ

Varchar, индексирование и дополнительное кэширование.

Вы создаете файл с именем пользователя и userid. Затем создайте таблицу user_relation, в которой вы комбинируете userid, чтобы у вас были совпадения. Поместите индексы во все отношения с внешним ключом. Это должно дать довольно приличную производительность:)

отредактируйте дополнительную информацию для ее настройки

Таблица: Пользователь UserID - Int (8) - первичный ключ, автоматическое увеличение Имя - Варкар (30) EmailAddress - Varchar (90) - Уникальный

Таблица: UserRelation ID - Int (8) - первичный ключ, автоматическое увеличение UserID_Source - Int (8), Index (это пользователь) UserID_Friend - Int (8), Index (это друг/отношение пользователя)

Таким образом, вы можете легко хранить отношения с определенным пользователем.

Чтобы получить некоторые результаты, используйте запрос типа:

SELECT `User`.*, `User`.`UserID` AS `UserID_Source`
FROM   `User`
WHERE  `User`.`UserID` = `user_relation`.`user_id_source`

Вы можете расширить запрос с помощью JOIN, чтобы направить выборки соответствия или использовать для этого другой запрос:)

1

Если ваш список содержит ссылки на других участников (у каждого есть свой список), лучше всего создать данные в таблице MySQL какой-либо (так как MySQL оптимизирован для такого рода вещей), например, вы бы нужны две простые таблицы, таблица 1 (таблица пользователя) будет иметь 2 столбца. ID (INT или BIGINT), UserName (VARCHAR).

Тогда ваша вторая таблица (пользовательские ссылки) будет иметь 2 записи в зависимости от того, выполняется ли соединение двунаправленно или однонаправленно, см. ниже.

Двунаправлено. В таблице будет два столбца: User1 (INT или BIGINT), User2 (INT или BIGINT). Чтобы получить список, просто запросите эту таблицу для всех записей, где идентификатор пользователя находится в User1 или User2.

Однонаправленно. В таблице должно быть 2 столбца, Owner (INT или BIGINT), Person (INT или BIGINT). Чтобы получить список для пользователя, просто запросите его для всех записей, принадлежащих такому пользователю.

Разница между двумя: с двунаправленным, если я добавлю вас в свой список, я автоматически включаюсь в ваш список. С односторонним удалением, поэтому вы должны добавить меня в свой список, чтобы я появился в вашем списке, даже если он включен в мой список.

1

Лучше всего будет хранить каждое имя в своей строке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню