Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Реализация списка изменений в БД


Автор: stmamont 14.4.2008, 12:24
У меня есть несколько таблиц
Код

band:
  id:
  name:

album:
  id:
  band_id:
  name:

track:
  id:
  album_id:
  name:

user:
  id:
  nick:

user_blog_post:
  id:
  user_id:
  text:


хочу формировать список новостей для пользователей:
Цитата

Пользователь <nick> добавил пост <text>
В группу <band name> добавлен новый альбом <album name>
В Альбом <album name> добавлены треки:
<список треков>

в общем это похоже на реализацию новостей вконтакте.

вопрос следующий:

как реализовать это в базе данных, какими методами пользуетесь вы для подобного функционала.

все мои идеи какие то как мне кажется несуразные :(

Автор: Deniz 14.4.2008, 13:19
Ну так 3 обычных select'а с выборкой за период (надеюсь поле ДатаВремя есть в таблицах) и ограничением по кол-ву записей.
Не знаю какая СУБД, например для БЛОГа:
Код

select top 10 user.nick, user_blog_post.text 
from user 
  inner join user_blog_post on user.id=user_blog_post=user_id
where user_blog_post.DateTimeField >= (ТекущаяДата - 1 день)
order by user_blog_post.id desc

предпологаю что user_blog_post.id автоикремент.
Пример с периодом времени, если поля user_blog_post.DateTimeField нет, то секцию where нужно удалить, выведет 10 последних сообщений.

Автор: stmamont 14.4.2008, 13:23
почему именно три запроса?
1. для изменений групп, альбомов, треков
2. второй для изменений пользователей и блоговских постов
3. ?

Автор: Deniz 14.4.2008, 13:43
Цитата(stmamont @  14.4.2008,  16:23 Найти цитируемый пост)
почему именно три запроса?
1. для изменений групп, альбомов, треков
2. второй для изменений пользователей и блоговских постов
3. ? 

1. для изменений пользователей и блоговских постов
2. для изменений групп, альбомов
3. для изменений альбомов, треков
такое видение появилось после примера сообщения 
Цитата
Пользователь <nick> добавил пост <text>
В группу <band name> добавлен новый альбом <album name>
В Альбом <album name> добавлены треки:
<список треков>

Если идти от треков, то можно обойтись и двумя select'ами, c соответствующей обработкой.
Например, поправив новость для пользователя:

Пользователь <nick> добавил пост <text>
Новые треки:
  • Группа <band name>
    • Альбом <Albom_Name>
      • <Track_Name>
      • <Track_Name>
    • Альбом <Albom_Name>
      • <Track_Name>
      • <Track_Name>
  • <band name>
    • Альбом <Albom_Name>
      • <Track_Name>
      • <Track_Name>
может не очень красиво получилось  smile
Можно просто списком без группировки, но тогда: Трек - Альбом - Группа

Автор: stmamont 14.4.2008, 13:49
Цитата

    * Группа <band name>
          o Альбом <Albom_Name>
                + <Track_Name>
                + <Track_Name>
          o Альбом <Albom_Name>
                + <Track_Name>
                + <Track_Name>
    * <band name>
          o Альбом <Albom_Name>
                + <Track_Name>
                + <Track_Name>

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


я просто думал еще насчет вспомогательной таблицы куда постить изменения...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)