![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
elbjarn |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
||||
|
||||
elbjarn |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 13.4.2008 Где: Дубна Репутация: нет Всего: 3 |
Idsa, спасибо, отличная статья. Выходит что описанный мной способ - худший из тех, что там рассмотрен. Есть над чем задуматься...
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |