Что такое внешний ключ?
Ok. Поэтому я знаю, что такое первичный ключ в БД. Если у вас есть таблица в базе данных, первичный ключ - это единственное значение, уникальное для каждой строки в вашей таблице. Например:
id | name | whatever
-------------------------
1 Alice ....
2 Bob ....
45 Eve ....
988 .... ....
Итак, мне нужен хороший, простой пример, чтобы объяснить, что такое внешний ключ. Потому что я просто не понимаю:)
Изменить: Хорошо, это довольно легко, я думаю, что я слишком усложнил проблему.
Итак, последний вопрос, единственное ограничение на внешние ключи заключается в том, что он является допустимым значением первичного ключа в таблице, на которую я ссылаюсь?
Ответы
Ответ 1
Внешний ключ - это поле, указывающее на первичный ключ другой таблицы.
Пример:
Table Name - Users
UserID UserName UserRoleID
1 JohnD 1
2 CourtneyC 1
3 Benjamin 2
Table Name - UserRoles
UserRoleID Desc
1 Admin
2 Moderator
Вы можете видеть, что User.UserRoleID является внешним ключом, который указывает на первичный ключ UserRoles.UserRoleID
Использование внешних ключей упрощает настройку отношений на других таблицах, что позволяет вам соединять данные нескольких таблиц с хорошим способом:
Пример:
SELECT
a.UserID,
a.UserName,
b.Desc as [UserRole]
FROM
Users a INNER JOIN
UserRoles b ON a.UserRoleID = b.UserRoleID
Результат будет следующим:
UserID UserName User Role
1 JohnD Admin
2 CourneyC Admin
3 Benjamin Moderator
Ответ 2
Скажем, у вас есть другое поле, которое является родным городом:
id | name | city
-------------------------
1 Alice San Francisco
2 Bob New York
45 Eve New York
988 Bill San Francisco
Теперь нет смысла повторять одни и те же города во многих строках. Это может привести к опечаткам, чрезмерному использованию пространства, затруднениям принести результаты среди других проблем. Таким образом, вы используете внешний ключ:
id | name | fk_city
-------------------------
1 Alice 1
2 Bob 2
45 Eve 2
988 Bill 1
таблица домашнего города:
id | name
-------------------------
1 | San Francisco
2 | New York
Надеюсь, что это сделает вас понятнее.: -)
Обновить: о вашем последнем вопросе: Да.: -)
Ответ 3
Внешний ключ - это столбец в одной таблице, который должен однозначно идентифицировать что-то в другой таблице. Таким образом, значения должны соответствовать первичным ключам в этой другой таблице.
Например, если у вас есть таблица студентов, принимающих курсы, каждая запись будет включать идентификатор студента и идентификатор курса. Это внешние ключи в таблицу учеников (где есть одна запись для каждого идентификатора студента) и таблица курсов (где есть одна запись для каждого идентификатора курса).
Ссылочная целостность означает, что все ваши внешние ключи фактически соответствуют первичным ключам в этих целевых таблицах. Например, все идентификаторы учащихся и идентификаторы курса в вашей регистрационной таблице соответствуют реальным идентификаторам учащихся и идентификаторам курса.
Ответ 4
id | name | whatever | countryid
-------------------------------------
1 Alice .... 13
2 Bob .... 42
45 Eve .... 1
988 .... .... 2
id | countryid
----------------
1 Japan
2 Spain
13 Norway
42 Italy
Внешний ключ указывает из таблицы лиц (сначала) в строку в таблице страны (второй)
Ответ 5
В реляционной базе данных отношение "один ко многим" реализуется путем привязки дочерней таблицы к идентификатору родительской таблицы. Идентификатор родителя в таблице Child называется внешним ключом, поскольку он ссылается на первичный ключ другой таблицы.
Ответ 6
Внешний ключ - это поле, которое ссылается на другую таблицу в базе данных. Например, предположим, что у вас есть 2 таблицы, PERSON
и ADDRESS
. В PERSON
есть поле под названием ID
и поле в ADDRESS
, называемое PERSON_ID
. Вы должны сделать PERSON_ID
ссылкой PERSON.ID
как внешний ключ. Это означает, что вы не можете иметь адрес, который не связан с человеком, поскольку значение в поле ADDRESS.PERSON_ID
должно существовать в таблице PERSON
.
Ответ 7
используя ваш пример таблицы, предположим, что у вас есть другая таблица:
cartid | id | itemid
-----------------------
100 1 abc
101 1 cde
в этой таблице первичный ключ - это карточный, внешний ключ - это идентификатор, который будет связан с вашей первой таблицей. пользователь 1 имеет две тележки, каждая из которых имеет по одному элементу.
внешний ключ - это то, что вы используете для связи двух или более таблиц, которые имеют связанную информацию друг с другом.
Ответ 8
Внешний ключ - это первичный ключ из другой таблицы, хранящейся в вашей таблице. Скажем, у вас есть таблица клиентов и таблица заказов. CustomerId скорее всего является основным ключом в таблице клиентов, а OrderId, скорее всего, является первичным ключом в таблице заказов. Но в таблице заказов вам нужно знать клиента для этого заказа, нет? Поэтому вам необходимо сохранить CustomerId в таблице заказов. В этом случае CustomerId в таблице заказов является внешним ключом.
Я хотел бы указать, что нет требования, чтобы первичный ключ (и, следовательно, внешний ключ) был единственным столбцом. Это проще, конечно. Но я работал над корпоративными системами, где первичный ключ составлял 11 столбцов, и я уверен, что примеров больше, чем это. То есть вам нужно знать значение для 11 разных столбцов, прежде чем вы сможете однозначно идентифицировать строку.