Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL FOREIGN KEY(외래 키)란? 개념부터 실전 사용법까지

FOREIGN KEY(외래 키)는 두 테이블 간의 데이터를 연결하는 데 사용되는 하나의 열 또는 여러 열의 조합입니다. 즉, FOREIGN KEY 제약 조건은 항상 두 개의 테이블 사이의 관계를 의미합니다. 또한 한 테이블의 PRIMARY KEY(기본 키)가 다른 테이블의 FOREIGN KEY와 연결되기 때문에 데이터 무결성(data integrity)을 강화하는 데에도 중요한 역할을 합니다.

FOREIGN KEY 기본 문법

FOREIGN KEY [column_name] REFERENCES [Primary Key를 가진 테이블명] ([column_name]);

여기서 REFERENCES는 참조를 나타내는 키워드입니다. 첫 번째 column_name은 FOREIGN KEY로 지정할 열 목록, [Primary Key를 가진 테이블명]은 PRIMARY KEY가 정의되어 있는 부모 테이블의 이름, 마지막 column_name은 해당 테이블에서 PRIMARY KEY가 설정된 열 목록을 의미합니다.

FOREIGN KEY 예제

'Customer'(고객)와 'Orders'(주문)라는 두 개의 테이블이 있다고 가정해 보겠습니다. 이 두 테이블 간의 관계는 'Orders' 테이블의 'Cust_Id' 필드를 외래 키로 지정하여 설정할 수 있습니다. 두 테이블을 생성하는 쿼리는 다음과 같습니다.

mysql> Create Table Customer(Cust_ID int Primary Key, First_name Varchar(20), Last_name Varchar(20), City Varchar(10));
Query OK, 0 rows affected (0.13 sec)

mysql> Create Table Orders(Order_Id Int Primary Key, Product_Name Varchar(25), Orderdate DATE, Cust_ID Int, FOREIGN KEY(Cust_ID) REFERENCES Customer(Cust_id));
Query OK, 0 rows affected (0.13 sec)

mysql> Describe Orders;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| Order_Id     | int(11)     | NO   | PRI | NULL    |       |
| Product_Name | varchar(25) | YES  |     | NULL    |       |
| Orderdate    | date        | YES  |     | NULL    |       |
| Cust_ID      | int(11)     | YES  | MUL | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
4 rows in set (0.04 sec)

위 예제에서 'Customer' 테이블은 부모 테이블(Parent table) 또는 참조되는 테이블(referenced table)이라고 부르며, 'Orders' 테이블은 자식 테이블(Child table) 또는 참조하는 테이블(referencing table)이라고 부릅니다.

자식 테이블의 행에는 반드시 부모 테이블에 존재하는 값이 포함되어야 합니다. 예를 들어, 'Orders' 테이블의 모든 행은 'Customer' 테이블에 실제로 존재하는 'Cust_Id' 값을 가져야 합니다. 덕분에 존재하지 않는 고객에 대한 주문 데이터가 저장되는 것을 데이터베이스 수준에서 방지할 수 있으며, 이것이 바로 FOREIGN KEY가 데이터 무결성을 보장하는 핵심 원리입니다.