2016-07-05 1 views
0

Comment gérez-vous une situation avec le scénario suivant?Technique de base de données pour éditer les enregistrements et s'assurer que l'enregistrement n'est pas mis à jour jusqu'à ce que l'enregistrement soit approuvé

Vous avez une table avec les dossiers des clients avec les champs suivants:

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

John ouvre son dossier et change son numéro de téléphone. Toutefois, l'enregistrement réel du client ne doit pas être modifié tant que l'administrateur n'a pas approuvé la modification.

Comment gérez-vous une situation comme celle-ci?

Souhaitez-vous?

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 

Est-ce la meilleure solution ou existe-t-il une meilleure façon de gérer cela? Aussi, que faire si la table client a quelques autres tables dans les relations?

Un conseil expert serait apprécié. Pour info, j'utilise la base de données Postgresql.

----- --- Format mis à jour

Répondre

0

j'aurais un attribut supplémentaire pour chaque attribut qui doit être revue.

Dans votre exemple, les entrées pourraient être:

name contiendrait le nom approuvé, name_tmp le nom qui a été modifié par l'utilisateur.
Après approbation, le contenu de name_tmp est copié sous name.

De cette façon, vous n'avez aucun problème avec les relations de clés étrangères.

Si vous ne voulez vraiment pas les attributs dans la table principale, créez une table customer_temp comme vous l'avez suggéré avec id comme référence de clé primaire et de clé étrangère customer. L'inconvénient est que vous avez besoin de plus de jointures dans vos requêtes de cette façon.