Definiowanie ograniczeń w CREATE TABLE w Oracle 12c
możesz użyć instrukcji CREATE TABLE, aby wymusić kilka różnych rodzajów ograniczeń w tabeli: klucze kandydatów, klucze podstawowe, klucze obce i warunki sprawdzania. Klauzula ograniczenia może ograniczać pojedynczą kolumnę lub grupę kolumn w tabeli. Celem tych ograniczeń jest nakłonienie Oracle do wykonania większości pracy w utrzymaniu integralności bazy danych. Im więcej ograniczeń dodasz do definicji tabeli, tym mniej pracy musisz wykonać w aplikacjach, aby utrzymać dane. Z drugiej strony, im więcej ograniczeń znajduje się w tabeli, tym dłużej trwa aktualizacja danych.
możesz określić ograniczenia na jeden z dwóch sposobów: jako część definicji kolumny (znanej jako ograniczenie kolumny) lub na końcu instrukcji CREATE TABLE (znanej jako ograniczenie tabeli). Klauzule ograniczające kilka kolumn muszą być ograniczeniami tabeli.
klucz kandydata
klucz kandydata jest kombinacją jednej lub więcej kolumn, których wartości jednoznacznie identyfikują każdy wiersz tabeli. Poniższa lista pokazuje utworzenie unikalnego ograniczenia dla tabeli problemów:
kluczem do tej tabeli jest kombinacja CITY i SAMPLE_DATE. Zauważ, że obie kolumny są również zadeklarowane jako nie NULL. Ta funkcja wymaga określenia wartości dla niektórych kolumn w celu wstawiania wierszy. Oczywiście informacje o temperaturze i opadach nie są przydatne bez wiedzy, gdzie i kiedy zostały zebrane. Ta technika jest powszechna w przypadku kolumn, które są głównym kluczem tabeli, ale jest również przydatna, jeśli określone kolumny mają kluczowe znaczenie dla znaczenia wiersza danych. Jeśli nie podano wartości NULL, kolumna może mieć wartości NULL.
gdy tworzysz unikalne ograniczenie, Oracle tworzy unikalny indeks, aby wymusić wyjątkowość wartości. W ramach ograniczenia klucza podstawowego przynajmniej jedna z kolumn w kluczu podstawowym dla każdego wiersza nie może być NULL.
klucz podstawowy
klucz podstawowy tabeli jest jednym z kluczy kandydatów, którym nadajesz specjalne cechy. Możesz mieć tylko jeden klucz podstawowy, a Kolumna klucza podstawowego nie może zawierać wartości null.
następująca instrukcja CREATE TABLE ma taki sam efekt jak poprzednia, z wyjątkiem tego, że możesz mieć kilka unikalnych ograniczeń, ale tylko jedno ograniczenie klucza podstawowego:
dla jednokolumnowych kluczy podstawowych lub kandydujących, możesz zdefiniować klucz w kolumnie z ograniczeniem kolumny zamiast ograniczenia tabeli:
w tym przypadku kolumna author_name jest kluczem podstawowym, a Oracle wygeneruje nazwę ograniczenia klucza podstawowego. Nie jest to zalecane, jeśli chcesz wymusić wspólny standard nazewnictwa kluczy, jak omówiono w dalszej części „Naming Constraints.”
wyznaczanie tabel indeksów
unikalne i podstawowe ograniczenia klawiszy tworzą indeksy. O ile nie powiesz Oracle inaczej, indeksy te są umieszczane w domyślnej przestrzeni tabeli. Aby określić inną przestrzeń tabel, użyj klauzuli USING INDEX TABLESPACE polecenia CREATE TABLE, jak pokazano na poniższej liście:
indeks powiązany z ograniczeniem klucza podstawowego AUTHOR_PK zostanie umieszczony w przestrzeni tabel użytkowników.
Uwaga
w większości domyślnych instalacji tworzona jest przestrzeń TABLESPACE użytkownika, która jest domyślną przestrzenią tablespace.
klucz obcy
klucz obcy jest kombinacją kolumn z wartościami bazującymi na podstawowych wartościach klucza z innej tabeli. Ograniczenie klucza obcego, znane również jako ograniczenie integralności odniesienia, określa, że wartości klucza obcego odpowiadają rzeczywistym wartościom klucza podstawowego w drugiej tabeli. Na przykład w tabeli regału kolumna CATEGORY_NAME odnosi się do wartości kolumny CATEGORY_NAME w tabeli CATEGORY:
można odwołać się do klucza podstawowego lub unikalnego, nawet w tej samej tabeli. Jednak w klauzuli referencje nie można odwoływać się do tabeli w zdalnej bazie danych. Możesz użyć formularza tabeli (który jest używany wcześniej do utworzenia klucza podstawowego w tabeli problemów) zamiast formularza kolumny, aby określić klucze obce z wieloma kolumnami.
czasami możesz chcieć usunąć te zależne wiersze, gdy usuniesz wiersz, od którego zależą. W przypadku BOOKSHELF i CATEGORY, jeśli usuniesz CATEGORY_NAME z CATEGORY, możesz sprawić, że pasujące wartości kolumn BOOKSHELF CATEGORY_NAME będą równe NULL. W innym przypadku możesz usunąć cały wiersz. Klauzula DELETE Cascade dodana do klauzuli REFERENCES mówi Oracle, aby usunęła wiersz zależny po usunięciu odpowiedniego wiersza w tabeli nadrzędnej. To działanie automatycznie zachowuje integralność odniesienia.
ograniczenie wyboru
wiele kolumn musi mieć wartości mieszczące się w określonym zakresie lub spełniające określone warunki. Za pomocą ograniczenia CHECK można określić wyrażenie, które musi być zawsze prawdziwe dla każdego wiersza w tabeli. Na przykład, tabela ocen przechowuje poprawne oceny; aby ograniczyć dostępne wartości poza limity narzucone przez definicję kolumny, możesz użyć ograniczenia sprawdzania, jak pokazano na poniższej liście:
ograniczenie sprawdzania na poziomie kolumny nie może odnosić się do wartości w innych wierszach; nie może używać pseudolumen, takich jak SYSDATE, USER, CURRVAL, NEXTVAL, LEVEL I ROWNUM. Można użyć formularza ograniczenia tabeli (w przeciwieństwie do formularza ograniczenia kolumny), aby odnieść się do wielu kolumn w ograniczeniu sprawdzania.
Nazywanie ograniczeń
możesz nazwać swoje ograniczenia. Jeśli użyjesz skutecznego schematu nazewnictwa dla nazw ograniczeń, będziesz w stanie lepiej identyfikować ograniczenia i zarządzać nimi. Nazwa ograniczenia powinna określać tabelę, na której działa i rodzaj ograniczenia, który reprezentuje. Na przykład klucz podstawowy w tabeli problemów może mieć nazwę TROUBLE_PK.
podczas tworzenia ograniczenia można określić nazwę ograniczenia. Jeśli nie podasz nazwy ograniczenia, Oracle wygeneruje nazwę. Większość wygenerowanych przez Oracle nazw ograniczeń ma postać SYS_C##### # (na przykład SYS_C000145). Ponieważ wygenerowana przez system nazwa ograniczenia nie mówi nic o tabeli ani ograniczeniu, powinieneś nazwać swoje ograniczenia.
w poniższym przykładzie, ograniczenie klucza podstawowego jest tworzone i nazywane, jako część polecenia CREATE TABLE dla tabeli problemów (zwróć uwagę na klauzulę CONSTRAINT):
klauzula CONSTRAINT polecenia CREATE TABLE nazywa constraint (w tym przypadku TROUBLE_PK). Nazwę tego ograniczenia można użyć później podczas włączania lub wyłączania ograniczeń.
Leave a Reply