Подтвердить что ты не робот

В чем разница между внешним ключом и ссылочным ключом?

Я очень смущен между этими двумя. Они такие же или разные? Некоторые книги или люди говорят, что они такие же, а другие говорят, что они разные. Я попытался, но не нашел ответа.
Пожалуйста, ребята решили.

4b9b3361

Ответ 1

Я предполагаю, что вы говорите об использовании REFERENCES, где не используется ключевое слово FOREIGN KEY, например.

author_id INTEGER REFERENCES author(id)

... вместо...

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

Ответ заключается в том, что это просто сокращенный синтаксис для одного и того же. Основная проблема при изменении между ними должна быть удобочитаемой.

Ответ 2

"Справочный ключ" не является обычным техническим термином в реляционном моделировании или в реализации SQL на английском языке.

Внешний ключ "ссылается" на ключ в другой таблице; может ли это быть причиной путаницы?

Ответ 3

Вы действительно не называете что-то ссылкой. Это одно и то же... вы можете увидеть слово ссылки, используемое, например, в sqlite: вы можете использовать синтаксис, подобный этому, чтобы запустить db авторов и книг. Это позволяет показать, что у одного автора может быть много книг. Это сообщает 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)
);

Ответ 4

Возможно, вы слегка используете термин "ссылочный ключ" ?

Значение внешнего ключа в одной строке называется "ссылаться" на строку, содержащую соответствующее значение ключа. Обратите внимание, что слово "ссылка" в предыдущем предложении является глаголом, поэтому мы можем сказать, что у нас есть ссылочное значение внешнего ключа и ссылочное значение ключа.

Хотя это ключевые значения, а не ограничение ключевого слова, на которые ссылаются, я предполагаю, что мы свободно говорим, что "ссылочный ключ" означает строки, которые содержат значения, на которые потенциально можно ссылаться. Затем я вижу, как "ссылочный ключ" может стать "ссылочным ключом", но не противоречить его происхождению.

Ответ 5

Внешний ключ "ссылается" на ключ в другой таблице. Этот ключ в другой таблице называется ссылочным ключом. Вероятно, вы узнаете об этом, если используете графическую функцию на phpmyadmin.

Ответ 6

Есть два способа объявить внешний ключ (ы):

  • если внешний ключ является атрибутом SINGLE:
     ССЫЛКИ()

  • если внешние ключи являются списком атрибутов

ИНОСТРАННЫЙ КЛЮЧ() ССЫЛКИ

Ответ 7

Единственное и самое важное отличие между ключевыми словами "FOREIGN KEY" и "REFERENCES" заключается в том, что оба они делают данные дочерними данными родительской таблицы, "FOREIGN KEY" используется для создания таблицы level, тогда как ключевое слово REFERENCES может использоваться для создания ограничений на уровне столбца. Ограничения уровня столбца могут быть созданы только при создании таблицы. Но ограничения уровня таблицы могут быть добавлены с помощью команды ALTER TABLE.

Ответ 8

Внешний ключ должен ссылаться на первичный ключ. При простом использовании ограничения ССЫЛКИ, тогда нет необходимости, чтобы ссылочным ключом был первичный ключ.