Отдельные общедоступные и редактируемые версии записи базы данных - PullRequest
0 голосов
/ 08 марта 2011

Как лучше всего реализовать режим редактирования для записи в базе данных?

Запись (например, запись в блоге) должна иметь публичную версию, видимую на веб-сайте, в то время как версия в режиме редактирования редактируется, просматривается, редактируется и т. Д.

Пока у меня есть два решения:

  1. Используйте первичный ключ из нескольких столбцов с идентификатором и режимом.
  2. Используйте отдельные таблицы для каждого режима и копируйте их между собой.

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

Как это обычно делается? У него есть имя?

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

Ответы [ 2 ]

0 голосов
/ 08 марта 2011

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

Скопируйте функцию редактирования в controller-> duplicate-> rename, затем сделайте то же самое для представления edit, затем создайте новую таблицу базы данных с именем edits. Также создайте выпадающий список для «сохранить» или «опубликовать»

Затем, когда нажата кнопка отправки, вы можете решить, какую таблицу БД заполнить пост, просмотрев данные в $ this-> data.

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

0 голосов
/ 08 марта 2011

Что касается базы данных, вам не нужен режим редактирования. Особенно через Интернет - http - ненадежный транспортный протокол.

Если ваш пользовательский интерфейс позволяет редактировать, то вы просто редактируете и (я полагаю) нажимаете кнопку, и код «позади»Кнопка в конечном итоге отправляет измененные данные обратно в базу данных как оператор UPDATE.Если инструкция UPDATE сформирована правильно, и если редактор и приложение имеют достаточные разрешения, UPDATE будет успешным, и данные будут изменены.

Любой, кто читает эту конкретную строку перед UPDDATE, увидит старую версию;любой, кто прочитает его после ОБНОВЛЕНИЯ, увидит новую версию.(Игнорирование эффекта возможного кэширования.)

...