2016-07-05 1 views
0

Как бы вы справились с ситуацией со следующим сценарием?Метод базы данных для редактирования записей и обеспечения записи не обновляется до тех пор, пока запись не будет одобрена

У вас есть таблица с записями клиентов со следующими полями:

id, name, email, phone 
1, John, [email protected], 515-222-3333 
2, Smith, [email protected], 515-333-444 

Джон открывает его запись и меняет свой номер телефона. Однако фактическая запись клиента не должна изменяться до тех пор, пока администратор не одобрит изменение.

Как вы справитесь?

Не могли бы вы?

a. Create an exact replica of customer table called customer-temp 
b. Copy the record of John into customer-temp 
c. let the admin review the updated record in customer-temp 
d. once approved, the record is replaced with the record of john in customer table and remove John's record from customer-temp 

Это лучшее решение или есть лучший способ справиться с этим? Также, что, если таблица клиентов имеет несколько других таблиц в отношениях?

Экспертная рекомендация будет оценена по достоинству. FYI, я использую базу данных Postgresql.

----- обновленный формат ---

ответ

0

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

В вашем примере, записи могут быть:

name будет содержать утвержденное имя, name_tmp имени, отредактированный пользователем.
После утверждения содержимое name_tmp копируется в name.

Таким образом, у вас нет проблем с отношениями внешних ключей.

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