2011-12-21 16 views

Odpowiedz

9

"Klucz referencyjny" nie jest normalnym terminem technicznym w modelowaniu relacyjnym lub implementacji SQL w języku angielskim w USA.

Klucz obcy "wskazuje" klucz w innej tabeli; czy to może być źródło zamieszania?

5

Nie nazwać czymś kluczowym odniesienia ... Są to samo ... można zobaczyć słowo referencje używany na przykład w SQLite: można użyć składni tak, aby rozpocząć db z autorów i książek. Dzięki temu możesz pokazać, że jeden autor może mieć wiele książek. Mówi db że books.author_id (zdefiniowane kilka wierszy w górę) odwołuje author.id

CREATE TABLE 'author' (
    id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
    firstname varchar(255) 
    lastname varchar(255) 
); 

CREATE TABLE 'books' (
    id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
    author_id INTEGER, 
    title varchar(255), 
    published date, 
    FOREIGN KEY(author_id) REFERENCES author(id) 
); 
2

Być może używasz terminu „klucz odniesienia” nieco luźno?

Mówi się, że wartość klucza obcego w jednym wierszu odnosi się do wiersza zawierającego odpowiednią wartość klucza. Zauważ, że słowo "reference" w poprzednim zdaniu jest czasownikiem, więc możemy powiedzieć, że mamy referencyjną wartość klucza obcego i referencyjną wartość klucza.

Chociaż jest to wartość kluczowa, a nie ograniczenie do klucza tabeli, do którego się odwołujemy, przypuszczam, że luźno mówiąc możemy powiedzieć "klucz odniesiony", aby określić wiersze, które zawierają wartości, które potencjalnie mogą się odnosić. Następnie widzę, jak "klucz referencyjny" może stać się "kluczem referencyjnym", ale nie jest to jego źródło.

36

Przypuszczam, że mówimy o używaniu REFERENCES, gdzie słowo kluczowe FOREIGN KEY nie jest używane, np.

author_id INTEGER REFERENCES author(id) 

... zamiast ...

author_id INTEGER, 
FOREIGN KEY(author_id) REFERENCES author(id) 

Odpowiedź jest, że to jest po prostu skrótem składnia tej samej rzeczy. Głównym problemem przy zmianie między tymi dwoma elementami powinna być czytelność.

+0

Chociaż pierwsza będzie działać bez włączania kluczy obcych, a druga nie będzie działać. Czy drugi sposób nie jest już używany? – schwiz

+0

Ma również znaczenie, jeśli spróbujesz użyć inżynierii odwrotnej do tworzenia diagramów z bazy danych w MySQL Workbench. Jeśli użyjesz opcji jodły podczas tworzenia bazy danych, narzędzie nie będzie mogło tworzyć połączeń między elementami diagramu. –

2

Klucz obcy "wskazuje" klucz w innej tabeli. Ten klucz w innej tabeli nazywa się kluczem Odwołany. Prawdopodobnie usłyszysz o tym wiele, jeśli używasz funkcji graficznej na phpmyadmin.

1

Istnieją 2 sposoby zadeklarować klucz obcy (a):

  1. jeśli klucz obcy jest jeden atrybut:
    LITERATURA()

  2. jeśli klucze obce są listą atrybuty

FOREIGN KEY() REFERENCJE

1

Jedyną i najważniejszą różnicą między słowami kluczowymi "KURS ZAGRANICZNY" i "REFERENCJE" jest to, że oba z nich tworzą dane potomne tabeli nadrzędnej, a klucz FOREIGN KEY służy do tworzenia poziomu tabeli ograniczenie, podczas gdy słowo kluczowe REFERENCES może być użyte tylko w celu utworzenia ograniczenia na poziomie kolumny. Ograniczenia na poziomie kolumny można tworzyć tylko podczas tworzenia tylko tabeli. Ale ograniczenia poziomu tabeli można dodać za pomocą polecenia ALTER TABLE.

1

Klucz obcy musi odnosić się do klucza podstawowego. Po prostu używając ograniczenia REFERENCES, nie jest konieczne, aby klucz wskazany był kluczem podstawowym.

Powiązane problemy