반응형
< 데이터 정규화를 위한 foreign key 설정 방법 >
# 외래 키(Foreign Key)의 역할
- 외래 키는 한 테이블의 열이 다른 테이블의 기본 키(Primary Key)를 참조하게 하는 제약 조건입니다. 외래 키는 다음과 같은 이점을 제공합니다:
- 데이터 무결성 유지:
- 외래 키는 참조 무결성을 보장하여, 참조되는 값이 항상 존재하도록 합니다.
- 예를 들어, comments 테이블의 user_id가 users 테이블의 id를 참조하는 경우, user_id 값은 반드시 users 테이블에 존재하는 id 값이어야 합니다.
- 데이터베이스 관계 명확화:
- 외래 키는 데이터베이스 설계에서 테이블 간의 관계를 명확하게 정의합니다.
- 이를 통해 데이터 모델을 더 잘 이해하고 관리할 수 있습니다.
- 데이터 삭제 및 업데이트 규칙 설정:
- 외래 키를 사용하면 부모 테이블에서 행이 삭제되거나 업데이트될 때 자식 테이블에서의 동작을 정의할 수 있습니다 (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 화면을 보면 키가 생성된걸 확인해 볼수 있다!
다음 게시글로 계속~!
728x90
반응형
'DATABASE > MySQL Workbench' 카테고리의 다른 글
MySQL Workbench : 3개 이상의 테이블을 조인하는 방법 (0) | 2024.05.17 |
---|---|
MySQL Workbench : join과 left join 하는 방법과 예시 (0) | 2024.05.17 |
MySQL Workbench : 실시간 날짜 데이터 적용 TIMESTAMP (now() on update now()) (0) | 2024.05.16 |
MySQL Workbench : 날짜 데이터 관련 함수들 (now())과 부등호를 활용한 시간 차이 구하기 (interval) (0) | 2024.05.16 |
MySQL Workbench : 날짜 데이터를 저장하는 데이터타입 (DATE, TIME, DATETIME) (0) | 2024.05.16 |