외래키(FK;Foreign Key)
- 설명
- 한 테이블의 필드(열)가 다른 테이블의 기본 키(PK;Primary Key)를 참조하여 테이블 간의 관계를 정의하는 키
- 데이터베이스에서 참조 무결성을 유지하는 데 사용
- 데이터 일관성 보장
- 역할
- 관계 설정 : 두 테이블 간의 관계(1:1, 1:다, 다:다) 정의
- 참조 무결성 유지 : 외래키로 참조된 값이 반드시 부모 테이블에 존재하도록 강제
- 외래키 정의하는 SQL코드
- 테이블을 생성할 때 또는 이미 생성된 테이블에 추가할 때 정의
- 주로 테이블 간의 관계를 표현하는 데 사용
- 부모 테이블의 기본 키를 자식 테이블에서 참조하는 방식으로 구현
CREATE TABLE departments (
department_id INT PRIMARY KEY,
department_name VARCHAR(100) NOT NULL
);
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
department_id INT,
FOREIGN KEY (department_id) REFERENCES departments(department_id)
);
ALTER TABLE employees
ADD CONSTRAINT fk_department
FOREIGN KEY (department_id) REFERENCES departments(department_id);
ERD(Entity-Relationship Diagram)
- 데이터베이스의 구조를 시각적으로 표현
- 데이터베이스의 테이블(엔티티), 테이블 간의 관계(관계), 각 테이블의 속성(필드) 보여줌
- 데이터베이스 설계를 계획하고 분석하는 데 중요한 도구
- 구성 요소
- 엔티티(Entity)
- 데이터베이스에서 관리해야 할 대상
- 테이블로 표현
- 예 : employees, departments 테이블
- 속성(Attribute)
- 각 엔티티의 특성
- 테이블의 열에 해당
- first_name, department_id는 employees 테이블의 속성
- 관계(Relationship)
- 두 엔티티 간의 관계
- 외래키로 연결
- employees와 departments는 부서와 직원의 관계(부서 하나에 여러 직원이 속함)를 가짐
- 설명
- departments 엔티티
- 속성 : departmnet_id, department_name
- pk : department_id
- employees 엔티티
- 속성 : employee_id, first_name, last_name, department_id
- pk : employee_id
- fk : department_id(부서 참조)
- 시각적 예시
+
| departments |<
+
| department_id (PK) | | employee_id (PK) |
| department_name | | first_name |
+
| department_id (FK)|
+
FK와 ERD의 중요성
- 데이터 무결성
- fk는 데이터베이스에서 참조 무결성 보장
- 불일치나 오류 방지
- 테이블 간의 관계 확실히 설정
- 효율적인 데이터 관리
- fk를 통해 테이블 간의 관계설정 -> 여러 테이블에서 데이터를 쉽게 연결하고 조회 가능
- ERD를 통한 시각화
- ERD는 데이터베이스 설계를 시각적으로 표현 -> 관계 쉽게 이해하고 유지관리할 수 있도록 도움