Clé préservée signifie que 1 valeur de clé va à 1 table. Donner des contre-exemples peut vous aider à mieux comprendre ce concept.
Exemple 1:
Votre vue contient une agrégation. Supposons que vous ayez la structure de vue suivante.
GroupID, AverageSalary
1 , 10000
2, 12000
3, 14000
Dans cet exemple: vos valeurs proviennent de plusieurs lignes. Si vous essayez de mettre à jour AverageSalary dans cette vue, la base de données n'a aucun moyen de trouver QUELLES lignes à mettre à jour.
Exemple2:
votre vue affiche les valeurs de plusieurs tables. Votre vue affiche les valeurs des tables PERSON et PERSON_CONTACT_DETAILS (ID, PersonID, ContactType, ContactValue).
Exemples de lignes:
1,1,email,ddd@example.com
1,1,phone,898-98-99
Vous rejoignez ce tableau 2 et affichez des informations plus conviviales pour les entreprises.
PersonId, Name, LastName, Phone1, Email1
Ici, vous souhaitez mettre à jour Phone1 et Email1. Mais votre personID est mappé sur deux lignes différentes, peut-être plus de lignes, dans cet exemple. Dans cette vue, encore une fois, la base de données n'a aucun moyen de trouver QUELLES lignes mettre à jour.
Remarque: Si vous limitez votre vue sql et qu'il est clair de trouver les lignes à mettre à jour, cela peut fonctionner.
Ces deux exemples sont des premiers exemples qui me viennent à l'esprit. Ils peuvent être augmentés. Mais le concept est clair. La base de données doit mapper 1 valeur de clé à 1 table. Par exemple, vous avez une à une table PERSON, PERSON_DETAILS. Ici, l'affichage et la mise à jour fonctionneront car ils sont un à un.