DATABASE/MySQL Workbench

MySQL Workbench : 데이터 정규화를 위한 foreign key 설정 방법

신강희 2024. 5. 17. 12:53
728x90

< 데이터 정규화를 위한 foreign key 설정 방법 >

# 외래 키(Foreign Key)의 역할

- 외래 키는 한 테이블의 열이 다른 테이블의 기본 키(Primary Key)를 참조하게 하는 제약 조건입니다. 외래 키는 다음과 같은 이점을 제공합니다:

  1. 데이터 무결성 유지:
    • 외래 키는 참조 무결성을 보장하여, 참조되는 값이 항상 존재하도록 합니다.
    • 예를 들어, comments 테이블의 user_id가 users 테이블의 id를 참조하는 경우, user_id 값은 반드시 users 테이블에 존재하는 id 값이어야 합니다.
  2. 데이터베이스 관계 명확화:
    • 외래 키는 데이터베이스 설계에서 테이블 간의 관계를 명확하게 정의합니다.
    • 이를 통해 데이터 모델을 더 잘 이해하고 관리할 수 있습니다.
  3. 데이터 삭제 및 업데이트 규칙 설정:
    • 외래 키를 사용하면 부모 테이블에서 행이 삭제되거나 업데이트될 때 자식 테이블에서의 동작을 정의할 수 있습니다 (ON DELETE CASCADE, ON UPDATE CASCADE 등).

# 즉, 데이터 정규화  RDBMS(관계형 데이터베이스 관리 시스템, Relational Database Management System)를 구성 하기 위해 foregin key를 사용 한다.

- 데이터 정규화!! 테이블을 나누어서 작업한다.
- 테이블을 연동해서 코딩할때 각 테이블마다 고유한 값은 privacy key (pk : 보통 id를 pk로 생성) 다른 테이블에서 그 고유값을 참조할때는 foregin key(fk) 를 설정해 주어야 한다.

- Foreign Key는 한 테이블의 컬럼이 다른 테이블의 기본 키(Primary Key)를 참조하는 관계를 정의
- 이때 fk 값은 참조하는 pk에 존재하는 값만 넣어줄수 있다 (정합성이 맞아야함) 없는 값은 넣어줄수 없음
- fk를 연동할때는 데이터 타입이 동일해야 한다. 특히 음수넣으면 안됨! UN 설정 확인 중요

 

# 고객정보가 들어있는 customers 테이블을 생성하고, 주문 정보가 들어있는 orders 라는 테이블을 생성해서 customers 라는 테이블에 id를 참조해보자.

ㄴ 우선 customers 테이블 생성

Apply 까지 완료하여 생성 확인

 

# 이제 orders 테이블 생성

ㄴ customer_id를 foregin key 설정할 예정!

ㄴ 그러므로 동일하게 데이터 타입이 같아야 하고, 중요한건 UN 설정이 꼭 동일해야 한다!

 

# orders 테이블의 Foreignkeys 설정

ㄴ Key Name은 유니크한 형식으로 설정하고, 연결하려는 테이블을 선택해 준다.

 

# 테이블 선택후 fk로 설정할 컬럼을 선택하고 참조할 pk 컬럼까지 선택해주면 설정 완료

ㄴ Apply까지 하여 키생성까지 확인!

 

# indexes 화면을 보면 키가 생성된걸 확인해 볼수 있다!

 

다음 게시글로 계속~!

반응형