За последние 24 часа нас посетили 19498 программистов и 1646 роботов. Сейчас ищут 1692 программиста ...

Как реализуется сохранение изменений в БД?

Тема в разделе "PHP и базы данных", создана пользователем iusephp1, 11 авг 2011.

  1. iusephp1

    iusephp1 Активный пользователь

    С нами с:
    20 янв 2011
    Сообщения:
    20
    Симпатии:
    0
    Вот есть база данных пользователей. У каждого пользователя есть характеристики: Имя, Фамилия, Дата рождения, Телефон, Домашний адрес, адрес электронной почты. В общем база выглядит так:

    Имя | Фамилия |Дата рождения |Телефон |Домашний адрес |имеил
    ------|------------|---------------------|--------------|--------------------|-----------
    Вася | Пупкин |2000.01.01 |123-12-12 |Пушкина, 5 |vasia@aol.com

    И вот этот Вася Пупкин в своем профиле делает изменения в колонке "Домашний адрес". Можно поступить просто: просто изменить старые данные на новые именно в этой колонке. И получается, что нового ряда создаваться не будет. Просто обновление данных и никакой фиксации, что Вася Пупкин делал изменения. А вот как реализовать, чтобы фиксировались эти обновления? Дублировать целую строку (ряд), где все данные остануться неизменными, а изменяется только "Домашний адрес"? Типа так:

    Имя | Фамилия |Дата рождения |Телефон |Домашний адрес |имеил
    -------|---------------|---------------------|--------------|------------------------|---------------
    Вася | Пупкин |2000.01.01 |123-12-12 |Пушкина, 5 |vasia@aol.com
    Вася | Пупкин |2000.01.01 |123-12-12 |Лермотова, 10 |vasia@aol.com

    Но это похоже не лучшее решение. И как тогда зафиксировать дату и время этих изменений?
    В общем вопрос, как сохранять такие изменения в БД? Чтобы можно было просмотреть историю изменений, которые пользователь сделал, с указанием даты этих изменений? Новую вспомогательную БД создавать, где будут только изменения по каждой колонке фиксироваться?
     
  2. Reposlav

    Reposlav Активный пользователь

    С нами с:
    5 авг 2011
    Сообщения:
    34
    Симпатии:
    0
    Сделать еще одну таблицу с логами. При изменении профиля добавить в лог новую запись, содержащую id юзера, характер изменений и дату.