Помогите со списком избранного.

Mannaward

Новичок
Всем привет.

Я хочу создать список избранного на своем сайте. Особенность списка заключается в том, что в нем содержится от 1000 до 5000 избранных элементов у каждого пользователя.

Подскажите пожалуйста как лучше всего реализовать такой список (как хранить в базе данных).

П.С. Я только учусь программировать, так что подробности приветствуются.
 

Mannaward

Новичок
избранного чего? =)
MANY_MANY вообще нужно
Избранных слов.
И как массив попроизводительней записать в БД, чтоб потом легко обрабатывать.
А то у меня специфика сайта такова, что обновляют страничку примерно 1 раз в 15 секунд и придется каждый раз доставать этот массив из БД.
 

Redjik

Джедай-мастер
за 15 секунд я не смогу прочитать 1000 слов, или дай задачу полностью или доставай из бд от 1000 до 5000 слов каждые 15 секунд
 

Mannaward

Новичок
В общем после обновления страници на неё выводится случайное слово, и мне надо проверять, есть ли оно в избранном у текущего пользователя. У пользователя может быть примерно до 5000 тысяч слов в избранном.
Вот я и хочу узнать, как эффективнее их хранить в БД и доставать оттуда? Это же при каждом обновлении страници по 5000 идов запрашивать, накладно выходит.
 

Redjik

Джедай-мастер
ну проверь 1 словоб зачем 5к - прочитай про Many_Many уже
1 таблица - id, word
2 таблица - id, user
3 таблица - word_id, user_id
 

Mannaward

Новичок
Ничего хорошего про Many_Many я не нашел, чем он отличается от обычного массива да и вообще про self в массивах не нашел ничего.
Из того, что я знаю у меня есть два варианта;
1- написать так:
1 таблица - id, word
2 таблица - id, user
3 таблица - word_id, user_id
но тогда придется постоянно запрашивать у БД выбор из примерно 1 миллиона строк (это при 1000 пользователей).
2- второй способ: превратить весь набор избранного конкретного пользователя в строку и записать в в одну ячейку. Тогда придется выбирать из БД только из 1000 строк, но длинна строки будет достигать 5000 символов.

Так вот: какой из них меньше нагружает БД MySQL?
 

hell0w0rd

Продвинутый новичок
manytomany - тип связи в базе. Вот пример как выборку по ним делать. Также можно посмотреть там примерную схему.
Хватит пытаться оптимизировать базу, ее не дураки пишут
 

bbldzr

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

Mannaward

Новичок
Понятно, выбирать что нравится. Спс всем за помощь.
hell0w0rd я знаю как делать выборку, я просто думал как эффективнее организовать БД.
 
Сверху