Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с TEXT-строкой. 
V
    Опции темы
avlzll
Дата 15.6.2010, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 30.11.2007

Репутация: нет
Всего: нет



Всем привет.

В образовательных целях пишу простенькую читалку РСС. Принял решение в базе хранить две таблицы: юзеры и, собственно, рсс фиды.

Код

CREATE TABLE rss_feeds (
        rss_feed_id INT NOT NULL AUTO_INCREMENT,
        url TEXT NOT NULL,
        name TEXT NOT NULL,
        last_update TIMESTAMP,
        users TEXT NULL,
        PRIMARY KEY (rss_feed_id)
);


То есть, таблица должна хранить URL фида (url), его название (name) и список юзеров (users), которые на этот фид подписались. Собственно, вопрос вот в чем. Как правильно с этим списком юзеров работать? (Список может выглядеть как: [user1 user2 user3 user4 user5] etc.)
Например, как правильно этот список формировать? Если юзер добавляет уже существующий фид в базе, мы не создаем новый фид, а просто приписываем его ник/id в строку users этого фида (те кто уже читает + этот новый user). Сделать select всех юзеров в переменную + добавить одного нового и сделать update? Как-то кривовато кажется. 
Далее, если затем выбирать все фиды, который читает конкретный юзер, запрос нужно делать с применением LIKE % % ?

Буду рад пинку в правильную сторону. smile Спасибо. 
PM MAIL   Вверх
bars80080
Дата 15.6.2010, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Цитата(avlzll @  15.6.2010,  20:37 Найти цитируемый пост)
Сделать select всех юзеров в переменную + добавить одного нового и сделать update? Как-то кривовато кажется. 
Далее, если затем выбирать все фиды, который читает конкретный юзер, запрос нужно делать с применением LIKE % % ?

вы собственно обнаружили две базовых кривизны такого подхода.
решается она просто - создаётся ещё одна таблица:
id int, id_iser int, id_rss_fid int
одна подписка - один пользователь. и редактирование удобно, и выборка, и поиск очень быстрый
PM MAIL WWW   Вверх
avlzll
Дата 15.6.2010, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 30.11.2007

Репутация: нет
Всего: нет



Действительно. Так куда более логичнее и правильнее. Выборка значительно удобнее в таком случае.
Единственное, в случае, если добавляемого фида в базе нет, надо делать два insert-запроса (один в таблицу с фидами, другой в таблицу с подписками). Хотя в первом варианте не лучше с этим.
Спасибо!
PM MAIL   Вверх
GZep
Дата 15.6.2010, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: -1
Всего: 32



avlzll, простите, немного офф...

но все же, зачем в таблице, которая называется rss_feeds называть поле rss_feed_id? почему не просто id, по аналогии с другими полями?


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
avlzll
Дата 16.6.2010, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 30.11.2007

Репутация: нет
Всего: нет



Цитата(GZep @ 15.6.2010,  23:55)
avlzll, простите, немного офф...

но все же, зачем в таблице, которая называется rss_feeds называть поле rss_feed_id? почему не просто id, по аналогии с другими полями?

Да это чисто тестовый вариант. Переделаем все по-человечески smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.