Как мне создать внешний ключ? - PullRequest
0 голосов
/ 28 февраля 2010

Я работаю над своим заданием. Имеет 8 таблиц. Каждая таблица имеет первичный ключ. Что я делаю, чтобы сгенерировать внешний ключ к таблице?

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

Что мне сделать, чтобы сделать что-то внешним ключом?

Ответы [ 3 ]

1 голос
/ 28 февраля 2010

Вот MySQL документы для предмета - вы можете взглянуть на это. В основном, вот пример того, что вы делаете:

CREATE TABLE `table_1` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(32) NOT NULL,
    PRIMARY KEY (`id`)
)
CREATE TABLE `table_2` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(32) NOT NULL,
    `table1_id` INT(11) NOT NULL REFERENCES table_1(`id`)
)

Это должно в основном сделать table_2.table1_id ссылку table_1.id как внешний ключ.

0 голосов
/ 28 февраля 2010

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

Например, CustomerID в таблице Customers будет иметь первичный ключ, но CustomerID в таблице Orders будет внешним ключом , ссылающимся (указывающим на) первичный ключ в таблице Customers.

В таблице «Клиенты» первичный ключ служит для уникальной идентификации каждого клиента. В таблице «Заказы» внешний ключ для CustomerID служит гарантией того, что каждый заказ принадлежит существующей записи из таблицы клиентов.

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

0 голосов
/ 28 февраля 2010

SQL для добавления внешнего ключа между таблицей 1 (ссылочной таблицей) и таблицей 2 (первичной таблицей):

ALTER TABLE table1
ADD CONSTRAINT FOREIGN KEY table1_table2_FK 
    REFERENCES table2 (intId) ON (intTable2Id)
...