본문 바로가기

데이터베이스

데이터베이스 정리 13 - Foreign Key

먼저 몇 가지의 CSV 파일을 더 임포트 해서 테이블을 생성할 것이다.

 

1. item 테이블 - 의류 상품 정보

item-data (1).csv
0.01MB

2. item_new 테이블 

item-new-data.csv
0.01MB

3. stock 테이블 - 재고 수량 정보

stock-data.csv
0.00MB

4. review 테이블 - 별점, 댓글

review-data.csv
0.00MB

id 칼럼들을 Primary Key로 설정하고, Auto Increment 설정을 해준다.

그리고 날짜를 나타내는 칼럼이 있으면, 그 칼럼의 데이터 타입을 DATE로 변경해준다.

 

 

stock 테이블

inventory_count는 재고 수를 의미한다.

id가 10인 재고수를 보면 522개인 것을 확인할 수 있다. 그런데 어떤 상품을 나타내는 줄은 알 수 가없다.

item_id 칼럼의 값이 19 인 것을 보고 item 테이블을 확인해보면

 

item 테이블

id 컬럼의 값이 19인 row를 찾게 된다. 재고의 이름은 '플라워 벨티드 더블 자켓' 이었다.

 

두 테이블의 관계는 'stock 테이블의 item_id 칼럼이 item 테이블의 id 칼럼을 참조하는 관계'이다.

- 이처럼 지금 item_id 칼럼처럼, '다른 테이블의 특정 row를 식별할 수 있게 해주는 칼럼'을 Foreign Key라고 한다.

Foreign Key는 우리말로 ,한 테이블의 컬럼 중에서 다른 테이블의 특정 row 하나를 식별할 수 있도록 해주는 컬럼이다.

 

1. 참조를 하는 테이블인 stock테이블을 '자식 테이블'

2. 참조를 당하는 테이블인 item 테이블을 '부모 테이블'

 

Foreign Key 설정하기

Foreign Keys를 클릭하면 밑에 화면이 뜬다.

Foreign key 설정 자체의 이름을 지정해준다. 아무렇게나 적어도 되지만 알아보기 쉽게 fk_다음 stock 테이블에서 item 테이블을 참조하는 foreign key니까 이렇게 작성해준다.  fk_stock_item

 

 

 

Referenced는 '참조당하는'라는 의미이다. 그래서 참조당하는 테이블인 item을 적었다.

그리고 오른쪽의 Referenced Column은 참조당하는 칼럼을 의미한다.

다 작성한 다음에 APPLY 적용 버튼을 클릭하면 된다.

 

FOREIGN 키를 설정하면 좋은 이유

STOCK 테이블의 item_id 칼럼을 item 테이블의 id 컬럼을 참조하는 foreign key로 설정하면 나중에 item_id 칼럼에 id 컬럼에 없는 이상한 값이 삽입되려고 할 때 MYSQL에서 에러를 발생시켜준다.