Główny klucz - Primary key

W modelu relacyjnego w bazach danych , o klucz podstawowy jest wybór specyficznego z minimalnym zestawem atrybutów ( kolumn ), które jednoznacznie określić krotki ( wiersz ) w relacji ( tabeli ). Nieformalnie klucz podstawowy to „które atrybuty identyfikują rekord”, aw prostych przypadkach stanowią pojedynczy atrybut: unikalny identyfikator. Bardziej formalnie, klucz podstawowy to wybór klucza kandydującego (minimalny superklucz ); każdy inny klucz kandydujący jest kluczem alternatywnym .

Klucz podstawowy może składać się z rzeczywistych obserwowalnych, w takim przypadku nazywany jest kluczem naturalnym , podczas gdy atrybut stworzony do działania jako klucz i nieużywany do identyfikacji poza bazą danych nazywany jest kluczem zastępczym . Na przykład dla bazy danych osób (o danej narodowości) naturalnym kluczem może być czas i miejsce urodzenia. Krajowy numer identyfikacyjny to kolejny przykład atrybutu, który może być użyty jako klucz naturalny.

Historia

Chociaż obecnie używany jest głównie w kontekście relacyjnych baz danych, termin „klucz podstawowy” poprzedza model relacyjny i jest również używany w innych modelach baz danych. Charles Bachman, w swojej definicji bazy danych nawigacyjnych, jest pierwszą osobą, która definiuje klucze podstawowe.

Projekt

W kategoriach relacyjnych baz danych klucz podstawowy nie różni się formą ani funkcją od klucza, który nie jest kluczem podstawowym. W praktyce różne motywacje mogą decydować o wyborze jednego klucza jako podstawowego nad drugim. Oznaczenie klucza podstawowego może wskazywać na „preferowany” identyfikator danych w tabeli lub to, że klucz podstawowy ma być używany do odwołań do kluczy obcych z innych tabel lub może wskazywać na jakąś inną techniczną niż semantyczną cechę tabeli. Niektóre języki i oprogramowanie mają specjalne cechy składni, których można użyć do identyfikacji klucza podstawowego jako takiego (np. ograniczenie PRIMARY KEY w SQL).

Model relacyjny, wyrażony za pomocą rachunku relacyjnego i algebry relacyjnej, nie rozróżnia kluczy podstawowych i innych rodzajów kluczy. Klucze podstawowe zostały dodane do standardu SQL głównie dla wygody programisty aplikacji.

Definiowanie kluczy podstawowych w SQL

Klucze podstawowe są zdefiniowane w standardzie ISO SQL za pomocą ograniczenia PRIMARY KEY. Składnia dodawania takiego ograniczenia do istniejącej tabeli jest zdefiniowana w SQL:2003 w następujący sposób:

ALTER TABLE <table identifier> 
    ADD [ CONSTRAINT <constraint identifier> ] 
    PRIMARY KEY ( <column name> [ {, <column name> }... ] )

Klucz podstawowy można również określić bezpośrednio podczas tworzenia tabeli. W standardzie SQL klucze podstawowe mogą składać się z jednej lub wielu kolumn. Każda kolumna uczestnicząca w kluczu podstawowym jest niejawnie zdefiniowana jako NOT NULL. Zauważ, że niektóre RDBMS wymagają jawnego oznaczenia kolumn klucza podstawowego jako NOT NULL.

CREATE TABLE table_name (
   
   ...
)

Jeśli klucz podstawowy składa się tylko z jednej kolumny, kolumnę można oznaczyć jako taką przy użyciu następującej składni:

CREATE TABLE table_name (
   id_col  INT  PRIMARY KEY,
   col2    CHARACTER VARYING(20),
   ...
)

Klucze zastępcze

W niektórych okolicznościach klucz naturalny, który jednoznacznie identyfikuje krotkę w relacji, może być niewygodny w użyciu do tworzenia oprogramowania. Na przykład może obejmować wiele kolumn lub duże pola tekstowe. W takich przypadkach zamiast klucza podstawowego można użyć klucza zastępczego . W innych sytuacjach może istnieć więcej niż jeden klucz kandydujący dla relacji i oczywiście żaden klucz kandydujący nie jest preferowany. Klucz zastępczy może być używany jako klucz podstawowy, aby uniknąć sztucznego prymatu jednego klucza kandydującego nad innymi.

Ponieważ klucze podstawowe istnieją przede wszystkim dla wygody programisty, zastępcze klucze podstawowe są często używane, w wielu przypadkach wyłącznie, w projektowaniu aplikacji bazodanowych.

Ze względu na popularność zastępczych kluczy podstawowych wielu programistów, a w niektórych przypadkach nawet teoretyków, zaczęło uważać zastępcze klucze podstawowe za niezbywalną część relacyjnego modelu danych. Wynika to w dużej mierze z migracji zasad z modelu programowania obiektowego do modelu relacyjnego, tworząc hybrydowy model obiektowo-relacyjny. W ORM podobnym do wzorca aktywnego rekordu te dodatkowe ograniczenia są nakładane na klucze podstawowe:

  • Klucze podstawowe powinny być niezmienne, to znaczy nigdy nie mogą być zmieniane ani ponownie używane; należy je usunąć wraz z powiązanym rekordem.
  • Klucze podstawowe powinny być anonimowymi identyfikatorami całkowitymi lub numerycznymi.

Jednak żadne z tych ograniczeń nie jest częścią modelu relacyjnego ani żadnego standardu SQL. Należy zachować należytą staranność przy podejmowaniu decyzji o niezmienności wartości klucza podstawowego podczas projektowania bazy danych i aplikacji. Niektóre systemy baz danych sugerują nawet, że wartości w kolumnach kluczy podstawowych nie mogą być zmieniane za pomocą instrukcji UPDATESQL.

Klawisz alternatywny

Zazwyczaj jeden klucz kandydujący jest wybierany jako klucz podstawowy. Inne klucze kandydujące stają się kluczami alternatywnymi, z których każdy może mieć UNIQUEprzypisane ograniczenie w celu uniknięcia duplikatów (duplikat wpisu nie jest prawidłowy w unikatowej kolumnie).

Klawisze alternatywne mogą być używane jak klucz podstawowy, gdy robi jedno-lub wybrać stół podczas filtrowania w miarę klauzuli, ale nie są zwykle używane do łączenia wielu tabel.

Zobacz też

Uwagi

Bibliografia