Я очень растерялся между этими двумя. Они такие же или разные? Некоторые книги или люди говорят, что они такие же, а другие говорят, что они разные. Я пробовал, но не нашел ответа.
Пожалуйста, ребята, решите его.В чем разница между внешним ключом и ссылочным ключом?
ответ
«Справочный ключ» не является нормальным техническим термином в реляционном моделировании или в реализации SQL на английском языке.
Внешний ключ «ссылается» на ключ в другой таблице; может ли это быть причиной путаницы?
Вы на самом деле не называть что-то ссылка ключ ... Они одно и то же ... вы можете увидеть слово референции используется, например, в SQLite: вы можете использовать синтаксис, как это, чтобы начать db авторов и книг. Это позволяет показать, что у одного автора может быть много книг. Это говорит о том, что БД books.author_id
(определяется несколько строк вверх) ссылается 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)
);
Возможно, вы используете термин «ссылочный ключ» несколько свободно?
Значение внешнего ключа в одной строке называется ссылкой на строку, содержащую соответствующее значение ключа. Обратите внимание, что слово «ссылка» в предыдущем предложении является глаголом, поэтому мы можем сказать, что у нас есть ссылочное значение внешнего ключа и ссылочное значение ключа.
Хотя это ключевые значения, а не ограничение ключевого слова, на которые ссылаются, я предполагаю, что мы говорим, что «ссылочный ключ» означает строки, которые содержат значения, на которые потенциально можно ссылаться. Затем я вижу, как «ссылочный ключ» может стать «ссылочным ключом», но не противоречить его происхождению.
Я предполагаю, что вы говорите об использовании REFERENCES
, где не используется ключевое слово FOREIGN KEY
, например.
author_id INTEGER REFERENCES author(id)
... вместо ...
author_id INTEGER,
FOREIGN KEY(author_id) REFERENCES author(id)
Ответ, что это просто сокращенная синтаксис то же самое. Основная проблема при изменении между ними должна быть удобочитаемой.
Внешний ключ «ссылается» на ключ в другой таблице. Этот ключ в другой таблице называется ссылочным ключом. Вероятно, вы узнаете об этом, если используете функцию Graphic на phpmyadmin.
Есть 2 способа объявить внешний ключ (ы):
если внешний ключ является единственным атрибутом:
ЛИТЕРАТУРЫ(), если внешние ключи представляют собой список атрибуты
FOREIGN KEY() Лит
Единственное и самое важное различие между ключевыми словами «FOREIGN KEY» и «REFERENCES» двух ключевых слов заключается в том, что оба они делают данные дочерними данными родительской таблицы, «FOREIGN KEY» используется для создания уровня таблицы , тогда как ключевое слово REFERENCES может использоваться для создания ограничения уровня столбца. Ограничения уровня столбца могут быть созданы только при создании таблицы. Но ограничения уровня таблицы могут быть добавлены с помощью команды ALTER TABLE.
Внешний ключ должен ссылается на первичный ключ. При простом использовании ограничения ССЫЛКИ, тогда нет необходимости, чтобы ссылочная клавиша была первичным ключом.
Хотя первый будет работать без включения внешних ключей, а второй - не будет. Второй способ просто не используется? – schwiz
Это также имеет значение, если вы пытаетесь использовать обратную инженерию для создания диаграмм из своей базы данных в MySQL Workbench. Если вы использовали параметр firs при создании своей базы данных, инструмент не сможет создавать соединения между элементами диаграммы. –