Zachowany klucz oznacza, że 1 wartość klucza trafia do 1 tabeli. Podanie przykładów może pomóc lepiej zrozumieć tę koncepcję.
Przykład 1:
Twój widok zawiera agregację. Załóżmy, że masz następującą strukturę widoku.
GroupID, AverageSalary
1 , 10000
2, 12000
3, 14000
W tym przykładzie: twoje wartości pochodzą z więcej niż jednego wiersza. Jeśli spróbujesz zaktualizować AverageSalary w tym widoku, baza danych nie będzie mogła znaleźć TYCH wierszy do zaktualizowania.
Przykład 2:
Twój widok pokazuje wartości z więcej niż jednej tabeli. Twój widok pokazuje wartości z tabeli PERSON i PERSON_CONTACT_DETAILS (ID, PersonID, ContactType, ContactValue).
Przykładowe wiersze:
1,1,email,ddd@example.com
1,1,phone,898-98-99
Dołączasz do tabeli 2 i wyświetlasz bardziej przyjazne dla biznesu informacje.
PersonId, Name, LastName, Phone1, Email1
Tutaj chcesz zaktualizować Phone1 i Email1. Ale twój personID odwzorowuje na dwa różne wiersze, w tym przykładzie może być więcej wierszy. W tym widoku ponownie baza danych nie ma możliwości znalezienia KTÓRYCH wierszy do zaktualizowania.
Uwaga: jeśli ograniczysz widok sql i jasno określisz, które wiersze do aktualizacji mogą działać.
Ten dwa przykłady to pierwsze przykłady, które przychodzą mi na myśl. Można je zwiększyć. Ale koncepcja jest jasna. Baza danych musi odwzorować 1 wartość klucza na 1 tabelę. Na przykład masz tabele PERSON jeden do jednego, PERSON_DETAILS. Tutaj widok i aktualizacja będą działać, ponieważ są one jeden do jednego.