Database/MySQL

[MySQL] 여러 테이블 생성시, 연결하는 Foreign Key 설정하는 방법

Mei99 2024. 5. 16. 11:34

Foreign Key : 테이블을 연결하는 컬럼

 

MySQL 테이블 연결하는 Foreign Key 설정

 아래와 같은 테이블에서, 주문데이터가 추가될 때마다 유저의 정보가 중복 저장되어 비효율적이다.

 그래서 테이블을 2개로 분리해 데이터 중복을 최소화 하는 것이 '정규화' 이다.

 

 

고객정보와 주문내역을 분리해서 두 개의 테이블을 만들었다.

 

A테이블 = CUSTOMERS(참조테이블) , B테이블 = ORDERS

 

B테이블 customer_id 값이 A테이블의 id를 가르키도록(참조) 해서 두 테이블을 연결한다.

이때, customer_id 가 바로 foreign key 가 된다.



 

 

설정 방법

1. 'orders' 테이블 툴 하단의 Foreign Keys 로 들어가기

- 왼쪽은 Table 설정, 오른쪽은 Column 설정
- Foreign Key Name : 원하는 이름으로 

- Referenced Table : 연결할 참조테이블 선택

- Column : 해당테이블의 coustomer_id 컬럼에 참조테이블 id 컬럼을 연결해준다.

 

 

 

2. 선택 안되는 경우

: 데이터 타입이 다르기 때문이다.

(두 테이블의 컬럼은 같은 데이터타입을 가지고 있어야 한다)

 

- 이럴경우에는 customer_id 의 데이터타입을 'customers' 테이블(참조테이블)의 id와 동일하게 변경해줘야 한다.

참조테이블의 Primary Key가 UN이기때문에, Foreign Key 컬럼도 UN이어야 데이터 타입의 범위가 일치하여 데이터 무결성을 보장할 수 있다.
만약 Foreign Key 컬럼에 UN을 체크하지 않으면, 음수 값이 들어올 수 있어 데이터 무결성이 깨져 오류가 발생할 수 있다.

 

 

 

3. 다시 선택 후 Apply까지 해주면 설정 완료!