Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Версионность данных и модерация, поделитесь опытом 
V
    Опции темы
elbjarn
Дата 2.7.2009, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток.
Задача:
Есть некоторый набор взаимосвязанных сущностей. К примеру, таблица GAME (GAME_ID, GAME_TITLE, GAME_TOURNAMENTID) и TOURNAMENT (TOURNAMENT_ID, TOURNAMENT_TITLE). Данные могут меняться как администратором, так и пользователями. Например, пользователь может зайти и создать игру в турнире.
Требуется: 
1) обеспечить информацию о том, как менялись сущности (т.е. поддерживать версионность). К примеру:
создано: 1 мая 2000 года - ID: 1 TITLE: Игра1 пользователем N
изменено: 1 июня 2000 года - ID: 1 TITLE: Игра1111 пользователем N
удалено: 1 июня 2000 года - ID: 1 пользователем N
2) обеспечить модерацию данных. Администратор заходит в систему и видит: сущность такая-то была изменена, утвердить/отклонить?

Вопрос к опытным разработчикам. Поделитесь, как вы реализовывали эту схему, какие приемы использовали. 
Я использовал решение такое: в каждую сущность, требующую модерации/версионности, добавил поля, отвечающие за статус записи, ссылку на предыдущую версию, ссылку на первую версию, имя пользователя, вызвавшего изменение последнего статуса, а также системное время.
Возникли проблемы (не принципиальные, но геморройные): нарушается общая схема работы с данными по ID (не может быть строк с одинаковым ID, но при этом необходимо знать что несколько строк с разным айдишником относятся к одной и той же сущности, и тд). Приходится выбирать данные то по ID, то по полю, храняющему ссылку на первую версию и с определенным статусом, и пр.
В такой схеме непонятно еще и принципиальный вопрос: допустим есть строка со статусом = 1 (актуальна). Пришел пользователь, отредактировал, создалась новая строка с отредактированным значением и статусом, к примеру, = 7 (ждет модерации). Пришел администратор, ему высветились все данные со статусом 7, он их утвердил. Что должно произойти: замена строки со статусом 1 или замена статуса этой строки на 3 (удален), а строки с 7-м статусом - на статус 1? Вопрос принципиальный, потому что в этом случае меняется айдишник у объекта...

Такой вот запутанный пост получился.
Жду ваших комментариев.. )

если кто-то кинет ссылки на литературу по теме, буду крайне признателен!

Это сообщение отредактировал(а) elbjarn - 2.7.2009, 19:56
PM MAIL ICQ   Вверх
Idsa
Дата 2.7.2009, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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





--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
elbjarn
Дата 2.7.2009, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Idsa, спасибо, отличная статья. Выходит что описанный мной способ - худший из тех, что там рассмотрен. Есть над чем задуматься...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




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


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

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