Внешние ключи - что это такое и зачем они нужны в базе данных

Forums:

Внешние ключи - что это такое и зачем они нужны в базе данных.

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

fgh's picture

Бен Форта, "SQL, 10 минут на урок", страница 222:

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

Пример:

CREATE TABLE CUSTOMERS(
  ID   INT              NOT NULL,
  NAME VARCHAR (20)     NOT NULL,
  AGE  INT              NOT NULL,
  ADDRESS  CHAR (25) ,
  SALARY   DECIMAL (18, 2),        
  PRIMARY KEY (ID)
);
CREATE TABLE ORDERS (
   ID          INT        NOT NULL,
   DATE        DATETIME, 
   CUSTOMER_ID INT references CUSTOMERS(ID),
   AMOUNT     double,
   PRIMARY KEY (ID)
);
insert into CUSTOMERS(ID, NAME, AGE, ADDRESS,SALARY) values(
1, "Mike",25,"Yellow street",20000);
insert into CUSTOMERS(ID, NAME, AGE, ADDRESS,SALARY) values(
2, "Jhon",26,"Green street",15000);
insert into ORDERS (ID, DATE,CUSTOMER_ID, AMOUNT ) values(
1,20081023103722,1,2);
insert into ORDERS (ID, DATE,CUSTOMER_ID, AMOUNT ) values(
2,20081023103722,2,2);

select * from CUSTOMERS WHERE ID =2;
select * from ORDERS WHERE ID =2;

Запустить код: https://paiza.io/en/languages/mysql

Источники:

1) http://fkn.ktu10.com/?q=node/9983
2) http://fkn.ktu10.com/?q=node/9187
3) http://fkn.ktu10.com/?q=node/9187
4) https://webformyself.com/sql-sozdanie-pe... (link is external)
5) https://andreyex.ru/bazy-dannyx/uchebnoe...
6) https://metanit.com/sql/mysql/2.5.php
7) https://pro-prof.com/forums/topic/foreig...