개발학습일지

[MySQL] Foreign Keys 지정해서 테이블끼리 연결하는 방법 본문

MySQL

[MySQL] Foreign Keys 지정해서 테이블끼리 연결하는 방법

처카푸 2024. 5. 16. 14:42

Foreign Keys 지정해서 테이블끼리 연결하는 방법

 

FOREIGN KEY

FOREIGN KEY 제약 조건을 설정한 필드는 외래 키라고 부르며,
한 테이블을 다른 테이블과 연결해 주는 역할을 한다.
외래 키가 설정된 테이블에 레코드를 입력하면,
기준이 되는 테이블의 내용을 참조해서 레코드가 입력된다.
즉, FOREIGN KEY 제약 조건은 하나의 테이블을 다른 테이블에 의존하게 만드는데
외래 키의 이 부분이 데이터의 정확성을 높여준다고 볼 수 있다.

FOREIGN KEY 제약 조건을 설정할 때 참조되는 테이블의 필드는
반드시!! UNIQUE나 PRIMARY KEY 제약 조건이 설정되어 있어야 한다.

참조. https://www.tcpschool.com/mysql/mysql_constraint_foreignKey
정규화(NOMALIZATION)

FOREIGN KEY는 정규화 중 하나이다.
정규화(Normalization)의 기본 목표는 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다.
중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. 

참조. https://mangkyu.tistory.com/110

 

 

내가 설정할 공간

 

 

연결하고 싶은 테이블의 
Alter Table 에서 입력해 준다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. 이어주는 키의 컬럼 데이터타입을 동일하게 맞춰줘야 한다.

- 주의할 점!

  Datetype에 UN이 체크되어 있다면 동일하게 체크해야 한다. 

  UN 은 음수 값이 있는지 없는지를 설정해 주기 때문에 UN 이 다르면 범위 값도 달라진다.

Datetype 맞추기

 

2. Foreign Keys 만들기

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

- Column : 연결할 컬럼 선택

- Referenced Column : 연결 할 테이블의 연결 할 컬럼 선택

Foreign Keys

 

3. 두 개의 테이블 합치기

- Foreign Keys 를 지정했으면 데이터를 넣을 때,

  Foreign Keys 데이터가 실제로 있는 데이터부터 저장하고 나머지 데이터를 저장해야 SQL이 제대로 동작한다.

- 주의!! 합치는 코드를 입력했는데,

  Error Code: 1052. Column 'id' in field list is ambiguous  발생하면 1번 항목의 데이터 타입을 다시 한번 확인하자.

-- 두개 테이블을 하나로 합쳐서 가져오시오.
select *
from orders
join customers
	on orders.customer_id = customers.id;

- 오류가 없다면 두 테이블이 잘 합쳐진다!!

- 테이블 합치는 키워드 join의 자세한 설명은 다음 포스팅에 작성했다.

  https://msdev-st.tistory.com/120

 

[MySQL] 테이블 합치기 _ join, left join, right join

테이블을 하나로 합치기 테이블 합치기 전에 Foreign Key를 지정해야 한다.참고. https://msdev-st.tistory.com/119 [MySQL] Foreign Keys 지정해서 테이블끼리 연결하는 방법Foreign Keys 지정해서 테이블끼리 연결

msdev-st.tistory.com