Привет!
Есть форма с контактными данными.(имя, фамилия, телефон и т.д)
Авторизированный пользователь может изменять свои данные.
Что нужно:
* в базе хранить историю изменения данных пользователя.
Вопрос как это собственно реализовать...непонятно т.е какая структура в БД должна быть и как лучше обрабатывать это..
доп. в БД будут имена загруженных файлов,с ограничением в 20 файлов на пользователя. Вообщем не знаю как спроектировать БД...
dr.nomore
12.11.2013 - 11:39
Это делается по дате. Юзеру выдается последняя, самая свежая запись, как будто там всего одна. А на самом деле там over9000.
Юзер думает что редактирует, а на самом деле создает новую запись по старым данным с текущей датой.
TranceIT
12.11.2013 - 11:44
Вариант
rooor лучше, т.к. не придется править ранее написанный код.
_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать. Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!
Invis1ble
12.11.2013 - 12:15
Я делал отдельную таблицу-лог вообще с полем, в которое складывал измененные данные в виде JSON.
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
bestxp
12.11.2013 - 16:08
у меня был хороший вариант но это для постгреса, указываешь для ячейки в качестве типа название таблицы и потом спокойно туда складываешь строку триггером и все
но он тоже накладывает свои ограничения
вариант новая запись с новой датой хороший, но так же количество данных увеличивается с каждым изменением.
Думаю тут еще как вариант можно складывать дифы данных, но тогда конечно восстановление через 10 версий постребует накладывания всех патчей
TranceIT
12.11.2013 - 21:26
Цитата (bestxp @ 12.11.2013 - 14:08) |
у меня был хороший вариант но это для постгреса |
Выложи, пож. Часто работаю с ним. К тому же большинство решений и для мускула подойдет.
_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать. Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!
rooor
про вариант с доп.таблицей всё понятно. Только вот для чего тригеры - я не помню и как их использовать в php не знаю. Проходили их в универе на SQL Server, но эт было давно и всё забыл.
Было бы хорошо, если вы объясните для чего здесь применяются тригеры.
----
Invis1ble
я так понял в новой таблице с всего 1-2 полями(id и update [может еще date])
вы складывали новые данные в виде JSON..так ? а 1 поле == 1 изменение ?, или же перезаписывали 1 поле, дополняя предыдущие изменение json объеками с датами ?
-------
bestxp
1)постгрес- отменяется..)
2)вариант с кучей записей - нет точно )
3) дифы данных - что это ?
спасибо всем за ответы.
TranceIT
12.11.2013 - 21:44
Por$hЕсли на пальцах, то триггер указывает что делать базе данных при событии в таблице.
Например: при изменении данных в таблице А, создать запись в таблице Б.
_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать. Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!
TranceIT
эм, я раньше подобное делал просто 2-мя запросами подряд..это не првильно? или просто лучше использовать триггеры т.к это более профессионально ?
или есть какие-то плюсы/минусы.?
триггеры прописываются в БД, сделал раз и забыл, в php ничего не надо будет писать
http://habrahabr.ru/post/37693/
Invis1ble
13.11.2013 - 00:15
Por$h
Цитата |
я так понял в новой таблице с всего 1-2 полями(id и update [может еще date]) вы складывали новые данные в виде JSON..так ? а 1 поле == 1 изменение ?, или же перезаписывали 1 поле, дополняя предыдущие изменение json объеками с датами ? |
у меня полей немного больше, но они не относятся к теме (причина изменения, id юзера, сделавшего правку и т.п.)
в поле складывал предыдущую версию данных в виде JSON, а точнее их дифф с новой версией (т.е. только те поля и значения, которые были изменены).
на каждое изменение новая запись в логе со своим диффом
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.