Что такое точно внешний ключ?

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

Ссылка: npm устарело исправление

13
задан Yuval Adam 17 March 2009 в 18:21
поделиться

8 ответов

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

Пример:

Table Name - Users

UserID    UserName    UserRoleID
1         JohnD       1
2         CourtneyC   1
3         Benjamin    2

Table Name - UserRoles

UserRoleID    Desc
1             Admin
2             Moderator

Вы видите это Пользователи. 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
23
ответ дан 1 December 2019 в 18:55
поделиться

Скажем, у Вас есть другое поле, которое является родным городом:

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

Надежда это делает вещи более ясными для Вас.:-)

Обновление: о Вашем заключительном вопросе: Да.:-)

13
ответ дан 1 December 2019 в 18:55
поделиться
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

Внешний ключ указывает от таблицы человека (сначала) к строке во (второй) таблице страны

1
ответ дан 1 December 2019 в 18:55
поделиться

Внешний ключ является полем что ссылки другая таблица в базе данных. Например, предположите, что у Вас было 2 таблицы, PERSON и ADDRESS. Существует поле в PERSON названный ID и поле в ADDRESS названный PERSON_ID. Вы сделали бы PERSON_ID обратитесь к PERSON.ID как внешний ключ. То, что это означает, - то, что у Вас не может быть адреса, который не подключен к человеку, начиная со значения в ADDRESS.PERSON_ID поле должно существовать в таблице PERSON.

0
ответ дан 1 December 2019 в 18:55
поделиться

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

0
ответ дан 1 December 2019 в 18:55
поделиться

с помощью примера таблицы предположите, что у Вас есть другая таблица:

cartid  |  id  | itemid
-----------------------
100        1       abc
101        1       cde

в этой таблице первичный ключ является везшим, внешний ключ является идентификатором, который был бы связан с Вашей первой таблицей. у пользователя 1 есть две корзины, каждая корзина, имеющая один объект каждый.

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

0
ответ дан 1 December 2019 в 18:55
поделиться

Внешний ключ является первичным ключом из другой таблицы, хранимой на Вашей таблице. Скажите, что у Вас есть таблица клиентов и таблица заказов. CustomerId вероятен первичный ключ на клиентской таблице, и OrderId вероятен первичный ключ на таблице порядка. Но на таблице порядка необходимо ли знать клиента для этого порядка, нет? Поэтому необходимо сохранить CustomerId на таблице порядка. В этом случае CustomerId на таблице порядка является внешним ключом.

Я указал бы, что нет никакого требования что первичный ключ (и поэтому внешний ключ) быть отдельным столбцом. Это более просто, уверено. Но я работал над корпоративными системами, где первичный ключ был 11 столбцов длиной, и я уверен, что существуют примеры дольше, чем это. Таким образом, необходимо было знать значение для 11 различных столбцов, прежде чем можно будет однозначно определить строку.

0
ответ дан 1 December 2019 в 18:55
поделиться

Внешний ключ является столбцом в одной таблице, которая должна однозначно определить что-то в другой таблице. Таким образом значения должны соответствовать первичным ключам в той другой таблице.

Например, если бы у Вас есть таблица студентов, берущих курсы, каждая запись включала бы студенческий идентификатор и идентификатор курса. Это внешние ключи в студенческую таблицу (где существует одна запись для каждого студенческого идентификатора), и таблица курсов (где существует одна запись для каждого идентификатора курса).

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

3
ответ дан 1 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: