Jestem bardzo zdezorientowany między tymi dwoma. Czy są takie same lub różne? Niektóre książki lub ludzie mówią, że są takie same, a inni mówią, że są inni. Próbowałem, ale nie znajdowałem żadnej autentycznej odpowiedzi.
Proszę, rozwiążcie to.Czym różni się klucz obcy od klucza referencyjnego?
Odpowiedz
"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?
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)
);
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.
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ść.
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.
Istnieją 2 sposoby zadeklarować klucz obcy (a):
jeśli klucz obcy jest jeden atrybut:
LITERATURA()jeśli klucze obce są listą atrybuty
FOREIGN KEY() REFERENCJE
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.
Klucz obcy musi odnosić się do klucza podstawowego. Po prostu używając ograniczenia REFERENCES, nie jest konieczne, aby klucz wskazany był kluczem podstawowym.
- 1. czym jest ścieżka //, czym różni się od/
- 2. Czym różni się ArrayListMultimap od LinkedListMultimap?
- 3. Czym różni się żądanie wyciągnięcia od oddziału?
- 4. Czym różni się aplikacja Facebook od karty?
- 5. Czym różni się Rakietowy od Planu?
- 6. Czym różni się LinkedBlockingQueue od ConcurrentLinkedQueue?
- 7. Czym różni się insmod od modprobe?
- 8. Czym różni się adapter od interfejsu sieciowego?
- 9. Czym różni się okno od siebie?
- 10. czym różni się InternalResourceViewResolver od UrlBasedViewResolver
- 11. Klucz obcy do klucza złożonego
- 12. Czym różni się <<?
- 13. Rails 4.2 klucz obcy
- 14. Czym różni się HawtDispatch od Executorów Java? (i netty)
- 15. Czym różni się Clojure STM od Haskell STM?
- 16. Raven DB: Czym różni się "przemytnik" od "Import/Export"?
- 17. Czym różni się PESSIMISTIC_READ od PESSIMISTIC_WRITE w WZP?
- 18. Dlaczego generics w Javie? Czym różni się od przeciążania?
- 19. Czym XACML 3.0 różni się od XACML 2.0?
- 20. Czym różni się błąd od wyjątku w JavaScript
- 21. Czym różni się wyjątek od .ToString() i .Message?
- 22. Czym różni się metoda rozszerzenia od metody statycznej?
- 23. Czym różni się @ {push} od @ {u} lub oddziału śledzenia?
- 24. Czym różni się JSON.NET DataContractJsonSerializer od serializatora Newtonsoft JSON
- 25. Co to jest Google Dremel? Czym różni się od Mapreduce?
- 26. Portal Liferay: Czym różni się od Websphere Portal
- 27. Co robi flash.discard? Czym się różni od flash.clear()?
- 28. Co robi jQuery .focus (1)? Czym różni się od .focus()?
- 29. Czym różni się EST strefy czasowej od EST5EDT?
- 30. Czym różni się "origin master" od "origin/master"
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
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. –