Klucze zagraniczne są tak cenne i słynne, że są klasyfikowane jako poziom 3 na etapach normalizacji bazy danych. W 3NF wszystkie atrybuty (kolumny) w tabeli są bezpośrednio zależne od klucza podstawowego tej tabeli i nie ma zależności przechodnie.
Wprowadzenie kluczy obcych może pomóc w utrzymaniu wymagań 3NF, zapewniając, że wartości w kolumnie klucza obcego istnieją tylko w odwołanym kluczu podstawowym.
Celem tego samouczka jest pokazanie, jak tworzyć i używać klucza obcego w bazie danych Oracle. Ten samouczek jest zorientowany na początkujących i nie omawiamy tego, jak wdrożyć klawisze zagraniczne w normalizacji bazy danych.
Utwórz oświadczenie zagranicznych kluczowych
Możemy utworzyć klucz obcy podczas tworzenia tabeli za pomocą instrukcji Utwórz tabelę i klauzulę klucza obcego.
Możemy wyrazić składnię, jak pokazano następująco:
Utwórz Tabela Table_name (
Kolumna 1 BATATYPE,
Kolumna 2 BataType,
…
Klucz obcy (kolumna 1, kolumna2,…)
REFERENCJE INTE_TABLE_NAME (ONTLE_COLUMN1, ONNE_COLUMN2,…)
);
Nazwa_bolika odnosi się do tabeli, którą chcesz utworzyć w bazie danych. Definiujemy również kolumny tabeli, odpowiedni typ danych i różne ograniczenia.
Na koniec nazywamy klauzulą klucza obcego, aby określić kolumnę lub kolumny, które chcemy wymyślić referencje dotyczące klucza obcego.
Aby najlepiej zilustrować użycie klawiszy obcych, weźmy dwa tabele, jak pokazano następujące stwierdzenia: Utwórz:
Utwórz bazy danych tabeli
(
numer identyfikacyjny wygenerowany domyślnie na null jako tożsamość,
Nazwa varchar2 (50) nie null,
numer default_port,
najnowszy_wersja varchar2 (20) nie null,
Typ varchar2 (20) nie null,
język varchar2 (20) nie null,
Klucz zagraniczny (id)
Odniesienia rozmiar_stats (baza danych)
);
Tabela 2:
Utwórz tabelę size_stats (
Klucz podstawowy numer podstawowy bazy danych,
size_on_disk liczba nie null,
Numer SOISE_ Compressed
);
W pierwszej klauzuli tworzymy tabelę, aby przechowywać informacje o bazie danych, takie jak nazwa bazy danych, port domyślny, najnowsza wersja bazy danych, typ bazy danych i język.
Ponadto uwzględniamy klauzulę klucza obcego, która definiuje nowy klucz obcy w kolumnie identyfikacyjnej tabeli bazy danych. Ten klucz obcy odwołuje się do bazy danych w tabeli size_stats. Dlatego dobrze jest upewnić się, że tabela size_stats istnieje przed utworzeniem tabeli baz danych.
Po skonfigurowaniu tabel próbek, wstawmy przykładowe dane w tabeli do demonstracji.
Wstaw do size_stats (baza danych, size_on_disk, size_compressed) wartości (1, 100.45, 94.55);
Wstaw do size_stats (baza danych, size_on_disk, size_compressed) wartości (2, 567.67, 344.43);
Wstaw do size_stats (baza danych, size_on_disk, size_compressed) wartości (3, 649.30, 500.13);
wstaw do size_stats (baza danych, size_on_disk, size_compressed) wartości (4, 45.62, 39.96);
Wstaw do size_stats (Batabase_id, size_on_disk, size_compressed) wartości (5, 1000.12, 986.43);
Następnie dodaj dane do tabeli baz danych, jak pokazano następująco:
Wstaw do baz danych (nazwa, default_port, najnowszy_wersja, typ, język)
Wartości („Oracle”, 1521, „19c”, „relacyjne”, „sql”);
Wstaw do baz danych (nazwa, default_port, najnowszy_wersja, typ, język)
Wartości („mysql”, 3306, 8.0 ', „relacyjne”, „sql”);
Wstaw do baz danych (nazwa, default_port, najnowszy_wersja, typ, język)
Wartości („postgresql”, 5432, „13”, „relacyjny”, „sql”);
Wstaw do baz danych (nazwa, default_port, najnowszy_wersja, typ, język)
Wartości („MongoDB”, 27017, '4.4 ', „nie odnoszący się”, „javascript”);
Wstaw do baz danych (nazwa, default_port, najnowszy_wersja, typ, język)
Wartości („Microsoft SQL Server”, 1433, „2017”, „Relacyjne”, „T-SQL”);
Pierwsze instrukcje wstawiania powinny podać nam tabelę, która zawiera statystyki wielkości bazy danych, jak pokazano następująco:
Druga tabela zawiera informacje o bazie danych, jak pokazano następująco:
Po zastosowaniu klucza obcego zapewnia, że dostarczone dane są nienaruszone i nie dodano nieprawidłowych danych.
Na przykład, jeśli próbujemy dodać nową bazę danych z identyfikatorem, który nie istnieje w tabeli statystyk, powinien ona zwrócić błąd w następujący sposób:
Wstaw do baz danych (nazwa, default_port, najnowszy_wersja, typ, język)
Wartości („sqlite”, null, „3.34 ', „relacyjne”, „c”);
Wynikowy błąd:
[23000] [2291] ORA-02291: Ograniczenie integralności (HR.Sys_c007781) naruszywszy - nie znaleziono klucza dla rodziców
Upuść obce ograniczenie
Możesz usunąć istniejącą obcokrajową nazwę ograniczenia za pomocą polecenia Alter Table, jak pokazano następująco:
Alter Tale Table_name
Upuść ograniczenie zagraniczne_key_name;
Włącz/wyłącz klucz obcy
Możemy również wyłączyć lub włączyć klawisz obcy bez usuwania go z tabeli, jak pokazano w następujących poleceniach:
Zmień tabelę TABLE_NAME
Wyłącz ograniczenie wartości_key_name;
Aby włączyć klucz obcy, użyj następującego polecenia:
Zmień tabelę TABLE_NAME
Włącz ograniczenie zagraniczne_key_name;
Wniosek
W tym samouczku nauczyłeś się korzystać z klawiszy obcych w tabelach Oracle, aby ulepszyć i zapewnić integralność danych.