Как проще организовать несколько вариантов одной записи для офф-редактирования ?

pilot911

Новичок
Как проще организовать несколько вариантов одной записи для офф-редактирования ?

Добрый день!

Имеется страница с расположенными на ней блоками - сейчас она активна.

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


Подскажите, пож-та, каков механизм хранения подобных записей (две таблицы или одна) ?

-~{}~ 25.08.08 15:34:

неужели никто не реализовывал такую фичу ?
 

Армян

Новичок
с трудом понял что надо - конец раб. дня )) сделай одну таблицу и в ней просто храни флажок выводить ее на сайте или нет.
 

pilot911

Новичок
Кажется, не все так просто - допустим, есть Online дерево страниц, которое показывается сейчас на сайте и есть Оффлайн дерево страниц, которое сейчас редактируем


Интересно, что делать, если в Оффлайн версию дерева страниц вставили новую страницу ? Как переключать деревья и тп ?
 

Армян

Новичок
зачем переключать все дерево?

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

pilot911

Новичок
Автор оригинала: Армян
зачем переключать все дерево?

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

а как лучше реализовать на твой взгляд - одна таблица с двумя ключами (id + версия) или две таблицы (активная версия) (оффлайн версия с двумя ключами id + версия)
 

Армян

Новичок
можно так: одна таблица, в которой хранятся ВСЕ страницы, т.е. и копии и онлайн. и вторая в которой просто указывается какая из копий выводится.

Либо одной таблицей чтото типо
PHP:
pages
id | name | is_online
1    news     0
2    news     1
3    news     0
 

asterisk

Новичок
Либо одной таблицей чтото типо
и до кучи паррент ид для связки он-лайн версии и офф-версии страниц.
примерно так:
PHP:
-------------------------------------
| id | name    | is_online | parent |
-------------------------------------
|  1 | page1   |   0       | 0      |
-------------------------------------
|  2 | page2   |   0       | 0      |
-------------------------------------
|  3 | page2.2 |   1       | 2      |
-------------------------------------
-~{}~ 26.08.08 16:18:

страница "page2.2" копия страницы "page 2" которую в данный момент например редактируют.
ps. дальше идут варианты с разделением таблиц - серверов ;-)
 

pilot911

Новичок
Решил сделать так:

- одна таблица с текущими активными страницами ( id, title, metatags etc )
- вторая таблица со всеми вариантами всех страниц с одним ключом ( id, workspace_id ) - и такими же полями как и в онлайн таблице

при редактировании активной страницы изменения сохраняются сразу в двух таблицах (онлайн и оффлайн)
при переключении страницы просто копируются все поля из указанной оффлайн страницы в онлайн страницу с такой же id
 

Армян

Новичок
у тебя получается дублирование - активная страница есть в обеих таблицах.

Зачем в певой таблице хранить данные если можно по айди вытащить их из второй?

Почитай, как нибудь
http://ru.wikipedia.org/wiki/Нормализация_БД#.D0.9F.D0.B5.D1.80.D0.B2.D0.B0.D1.8F_.D0.BD.D0.BE.D1.80.D0.BC.D0.B0.D0.BB.D1.8C.D0.BD.D0.B0.D1.8F_.D1.84.D0.BE.D1.80.D0.BC.D0.B0_.281NF.29
 

pilot911

Новичок
Автор оригинала: Армян
у тебя получается дублирование - активная страница есть в обеих таблицах.

Зачем в певой таблице хранить данные если можно по айди вытащить их из второй?

Почитай, как нибудь
http://ru.wikipedia.org/wiki/Нормализация_БД#.D0.9F.D0.B5.D1.80.D0.B2.D0.B0.D1.8F_.D0.BD.D0.BE.D1.80.D0.BC.D0.B0.D0.BB.D1.8C.D0.BD.D0.B0.D1.8F_.D1.84.D0.BE.D1.80.D0.BC.D0.B0_.281NF.29
по одной причине - в офф таблице двойной ключ (id, owrkspace_id), а в онлайн-таблице - один (id) - для мускуля меньше итераций
 

Армян

Новичок
мда... недумаю что иннер жоин по индексированным полям будет очень долгим. Но тебе виднее
 

asterisk

Новичок
Армян
в ответ могу тоже дать хорошую сцылочку.

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

Армян

Новичок
asterisk
ну да, его вариант быстрее. Просто стремно както, особенно если хтмл в базе хранится - кучу хтмла копировать туда сюда. Если с нагрузками проблем нет то я бы не делал так! тут разрабу виднее :)
 

pilot911

Новичок
Автор оригинала: Армян
asterisk
ну да, его вариант быстрее. Просто стремно както, особенно если хтмл в базе хранится - кучу хтмла копировать туда сюда. Если с нагрузками проблем нет то я бы не делал так! тут разрабу виднее :)
да нет, в полях страницы хранится только титл, метатеги и структура, имхо, по затратам мускуля мизер на вставку-апдейт, тем более страница редко редактируется
 
Сверху