Więzy integralności

Więzy integralności

Integralność referencyjna jest omawiana w tym samouczku w kontekście relacyjnej bazy danych. Integralność referencyjna jest właściwością danych, stwierdzającą, że wszystkie jej odniesienia są prawidłowe. Tutaj dotyczy dwóch tabel. Jeden nazywa się tabelą odwołaną lub nadrzędną. Ta odwołana tabela ma klucz podstawowy, który może składać się z jednej lub więcej kolumn. Druga tabela ma klucz obcy, którego wartości są takie same jak wartości kluczowego klucza odwołanej tabeli. Druga tabela jest określana jako tabela dziecięca do tabeli nadrzędnej.

Liczba kolumn, które składają się na obce klucz w tabeli dziecięcej, jest taka sama jak te, które tworzą klucz podstawowy w tabeli odwołanej (nadrzędnej). Wszystkie wartości klucza obce są znalezione w kolumnie klucza podstawowego. Jednak wartości w kolumnie klucza obce mogą powtórzyć się w tabeli dziecięcej.

Tabela dziecięca ma swój własny klucz podstawowy, który różni się od kolumny klucza obcego, który ma. Tabela dziecka jest również nazywana tabelą odniesienia.

„Wszystkie jego odniesienia są ważne” oznacza, że ​​klucz obcy w tabeli dziecięcej wskazuje na jeden rząd w tabeli odniesionej. Ten obcy klucz w tabeli dziecięcej i klucz podstawowy w tabeli odwołanej (nadrzędnej) są tą samą wartością. Więcej niż jeden obcy klucz w tabeli dziecięcej może wskazywać tylko na jeden rząd w tabeli odniesionej.

W tym artykule wyjaśniono ograniczenia, które są naturalnie powiązane z obcym kluczem tabeli dziecięcej i tym samym kluczem podstawowym tabeli odwołanej. Jeśli ograniczenia są przestrzegane, dane (odpowiednie wiersze) w obu tabelach tworzą integralność, bez błędów, wszystko jest równe; stąd termin integralność referencyjna."

Ilustracja z dwoma tabelami

Notacja tabeli o dwóch tabelach może być:

Sprzedaż (SaleId, datesold, CustomerId, pracownik)


I

Klienci (CustomerId, CustomerName, telefon, adres, miasto, region, kod pocztowy, kraj)


CustomerId w tabeli sprzedaży to klucz obcy z podkreśleniami. CustomerId w tabeli klientów to klucz podstawowy o jednym podkreśleniu. Podstawowym kluczem do tabeli sprzedaży jest SaleID, z jednym podkreśleniem. SaleID w tabeli sprzedaży zależy od CustomerID, a także zależy od atrybutu datesold i atrybutu pracownika (kolumna).

Tabele z danymi są następujące:

Tabela sprzedaży

saleid datę Identyfikator klienta pracownik
1 07/06/23 1 John Jones
2 07/07/23 2 Barbara Baker
3 07/07/23 2 Peter Lewis
4 07/08/23 1 John Jones
5 07/09/23 3 Barbara Baker
6 07/10/23 1 Barbara Baker
7 07/11/23 1 Barbara Baker
8 07/12/23 1 John Jones
9 07/13/23 2 Peter Lewis

Tabela klientów



W przypadku obu tabel klienci (osoby) chodzą do sklepu i kupują różne produkty w różne dni. Kupione produkty nie są pokazane. Tabela klientów ma adresy klientów w tym samym mieście. Tabela sprzedaży zawiera nazwiska pracowników, którzy obsłużyli indywidualnym klientom i mają inne dane.

W tabeli sprzedaży CustomerID jest kluczem zagranicznym. W tabeli klientów CustomerId jest kluczowym kluczem. Każdy zagraniczny klucz w tabeli sprzedaży występuje raz w tabeli klientów. To znaczy każdy klucz obcy w tabeli sprzedaży odwołuje się do klucza podstawowego, a zatem odwołuje się do odrębnego wiersza w tabeli klientów. Integralność danych (referencyjna) nie powiada się, jeśli tak nie jest.

Wartość zerowa i zagraniczne klucze

Klucz obcy w tabeli dziecięcej musi odwoływać się do wiersza, przez klucz podstawowy, tabeli nadrzędnej. Wszystkie główne klucze tabeli macierzystej są wyjątkowe. Klucze obce w kolumnie klucza obcego w tabeli dziecięcej, z których wszystkie znajdują się w tabeli nadrzędnej, nie muszą być unikalne. Należy tam spodziewać się powtórzeń klawiszów zagranicznych. Powyżej tabela sprzedaży to tabela dziecięcy, a tabela klientów jest tabelą nadrzędną. Rozważ te dwa tabele jako należące do bazy danych sklepu wygody. Klienci to osoby, które kupują w sklepie.

Wyobraź sobie, że klient z CustomerID 2 cię obraził, właściciel sklepu; Na przykład próbował ukraść, a ty zabroniłeś go od ponownego zakupu w swoim sklepie. Oznacza to, że jego imię musi zostać usunięte z listy klientów. Jego zakup w tabeli sprzedaży jest w przeszłości, miało miejsce bez żadnego problemu, a więc musi pozostać.

W takim przypadku wszystkich klientów 2 w tabeli sprzedaży muszą zostać zastąpione przez NULL (nic), co oznacza brak odniesienia do tabeli klientów z rzędu, który został usunięty. W przypadku powyższej tabeli klientów pozostaną dwa wiersze po jego wierszu (CustomerId i reszta jego poświadczeń) zostały usunięte.

Istnieją dwa sposoby unieważnienia wiersza w tabeli klientów przez komputer (system zarządzania bazą danych) w następujący sposób:

    1. faktycznie usuwanie wiersza, a pozostałe klientów wynoszą 1 i 3, brakuje automatycznej wartości 2 i jej wiersza;
    2. faktycznie usuwając wiersz i zniszczając resztę rzędów poniżej z 2, automatycznie zbliżanie się, i nie brakuje 2 w tabeli klientów. W takim przypadku wszystkie zagraniczne klucze z 3 w tabeli sprzedaży są zniszczone, automatycznie zwiększają.


Niezależnie od wybranej drogi wartość zerowa pozostaje w tabeli sprzedaży jako klucz obcy dla usuniętych odpowiednich wierszy. Null Wartość odniesienia (wskazuje) brak wiersza w tabeli klientów.

Tak więc z takich powodów klucz obcy może mieć wartość zerową. To dotyczy integralności referencyjnej!

Aktualizacja tabel dziecka i rodziców

Aktualizacja oznacza modyfikowanie. Modyfikowanie dowolnej komórki w tabeli dziecka (sprzedaż) (nawet SaleID), z wyjątkiem obcego klucza, tak naprawdę nie powoduje żadnej szkody dla tabeli dziecięcej lub rodziców (klientów). Na przykład, jeśli data została błędnie wpisana przez pomyłkę, należy wpisać odpowiednią datę.

Modyfikacja dowolnej komórki w tabeli rodziców (klientów), z wyjątkiem klucza podstawowego, tak naprawdę nie wyrządza żadnej szkody dla tabeli rodziców (klientów) lub korespondencji Tabeli (sprzedaż). Na przykład, jeśli klient zmienił swoją ulicę, ale nadal jest w okolicy, zmiana adresu w tabeli klientów nie wyrządza żadnej szkody dla dzieci i tabeli rodziców.

Jednak zmiana wartości klucza obcego w tabeli dziecięcej oznacza, że ​​wszystkie te same wartości klucza obcego w tabeli dziecięcej muszą zostać zmienione na tę konkretną wartość, a jedna odpowiednia wartość klucza podstawowego w tabeli macierzystej również musi zostać zmieniona , do tej samej wartości. To jest kaskadowe.

Czy można zmienić klucz wartości obcego? - Cóż, tak: jeśli powyższy klient powróci po sześciu miesiącach i przeprasza, a ty, właściciel, wybacz mu, a jeśli tylko jego rzędy w tabeli sprzedaży miały wartości zerowych, jego imię i dane uwierzytelniające zostaną wprowadzone w Klienci stoją na dole z nowym klientem; a wszystkie wartości zerowe jako zagraniczne klucze w tabeli dziecka (sprzedaż) zostaną zastąpione przez ten nowy klient. Jeśli jednak w tabeli dziecięcej były inne rzędy z wartościami zerowymi nie należnymi do niego, to wszystkie wartości zerowe, w tym jego, pozostaną; a cała jego nowa sprzedaż zostanie wprowadzona w tabeli sprzedaży na nowo, na dole tabeli sprzedaży.

Usuwanie w tabelach dziecka i rodziców

Nie ma sensu usunąć żadnej wartości komórki kolumnowej w tabeli dziecka lub nadrzędnej, chyba że dotyczy kolumny, której wartość komórki może być pusta. Pusty nie oznacza null. Puste środki nieważne.

Jednak można usunąć cały rząd w tabeli dziecięcej lub tabeli nadrzędnej. Załóżmy, że w tabeli dziecka (sprzedaż) jest kilka fałszywych wierszy; Jeśli te wiersze zostaną usunięte (w tym całkowicie ich saleids i klawisze zagraniczne), nie będzie problemu. Klienci albo mają inne prawdziwe rzędy w stole dla dzieci, albo po prostu nie pokazali swojej gotowości do zakupu w sklepie i nigdy niczego nie kupili. - Kupią kiedyś w najbliższej przyszłości.

Z drugiej strony, jeśli istnieje fałszywy klient z fałszywą sprzedażą, gdy jego wiersz w tabeli klientów zostanie usunięty, wszystkie jego fałszywe rzędy sprzedaży w tabeli sprzedaży muszą zostać usunięte. To jest kaskadowe. Może się to zdarzyć, gdy pracownik dokonuje prawdziwej sprzedaży, rejestruje fałszywe informacje i podpisy jako inny pracownik w tej samej tabeli. Ponieważ odpowiednie klawisze obce w tabeli dziecięcej są takie same jak klucz podstawowy w tabeli nadrzędnej, wówczas ta sama wartość łączy dwie tabele.

Aby rozwiązać ten problem, każdy pracownik powinien mieć własną książkę do ćwiczeń sprzedaży, jeśli komputer nie jest używany. Jeśli komputer jest używany, każdy pracownik powinien mieć nazwę użytkownika logowania i hasło do aplikacji systemu zarządzania bazą danych, która automatycznie rejestruje nazwisko pracownika w stosunku do wszystkich jego działań.

Cytaty

Poniższe trzy akapity to cytaty z Wikipedii:

„Integralność referencyjna jest właściwością danych, stwierdzając, że wszystkie jej odniesienia są prawidłowe.

W kontekście relacyjnych baz danych wymaga, aby jeśli wartość jednego atrybutu (kolumny) relacji (tabela) odniesie się do wartości innego atrybutu (w tej samej lub innej relacji), musi istnieć wartość odwołana.

Integralność referencyjna to koncepcja bazy danych, która zapewnia, że ​​relacje między tabelami pozostają spójne. Gdy jedna tabela ma kluczowy klucz do innej tabeli, koncepcja integralności referencyjnej stwierdza, że ​​nie możesz dodać rekordu do tabeli zawierającej klucz obce, chyba że istnieje odpowiedni rekord w połączonej tabeli."

Działania referencyjne

Bez komputera trudno jest egzekwować integralność referencyjną. To prowadzi do błędów rachunkowości. Dzięki komputerze integralność referencyjna może być egzekwowana poprzez egzekwowanie kaskadowania i innych działań poprzez programowanie systemu zarządzania bazą danych.

KASKADA

Oznacza to: aktualizacja lub usunięcie kaskadowania.

OGRANICZAĆ

Oznacza to: Nie aktualizuj ani nie usuwaj połączonych wierszy w tabeli dziecka i nadrzędnej.

BEZ AKCJI

Ogranicz sprawdzanie połączeń wierszy w obu tabelach przed próbą aktualizacji lub usunięcia. Żadne działanie nie jest podobne do ograniczenia, ale próbuje zaktualizować lub usunąć przed sprawdzeniem połączeń w obu tabelach.

Ograniczenie wyda komunikat o błędzie, że dokonano próby aktualizacji lub usunięcia wiersza, pomimo faktu, że w drugiej tabeli znajduje się odpowiedni wiersz, który nie zostałby zaktualizowany ani usunięty. Żadne działanie nie zaktualizował ani nie usunął wiersza, a następnie wydał komunikat o błędzie, że wiersz został zaktualizowany lub usunięty, pomimo faktu, że odpowiedni wiersz istnieje w drugiej tabeli. Oczywiście doprowadziłoby to do niewłaściwej rachunkowości, chyba że użytkownik był w trakcie ręcznego obsługi obu zmian w tabeli.

Jeśli w drugiej tabeli nie ma odpowiedniego wiersza, zaktualizuj lub usuń wiersz, niezależnie od tego, czy egzekwowanie było ograniczone, czy bez działania.

Ustaw NULL

Z tym działaniem wymuszone, jeśli wiersz w tabeli nadrzędnej zostanie usunięty.

Ustaw domyślnie

Z tym działaniem wymuszone, jeśli wiersz w tabeli nadrzędnej zostanie usunięty, wszystkie klucze obce odpowiednich wierszy w tabeli dziecięcej zostaną ustawione na wartość domyślną wybraną przez użytkownika bazy danych.

Wniosek

Integralność referencyjna to koncepcja bazy danych, która zapewnia, że ​​relacje między tabelami pozostają spójne. Gdy jedna tabela ma kluczowy klucz do innej tabeli, koncepcja integralności referencyjnej stwierdza, że ​​nie możesz dodać rekordu do tabeli zawierającej klucz obce, chyba że istnieje odpowiedni rekord w połączonej tabeli.

Gdy tabele są przechowywane w księgach, trudno jest egzekwować integralność referencyjną. Jednak gdy DBMS przechowuje tabele w komputerze, te działania referencyjne są egzekwowane przez programistę.