24.10.04(외래키(FK), ERD)

jiiiiiiiArchive.·2024년 10월 4일

🤯지식주머니🤯

목록 보기
34/98
post-thumbnail

외래키(FK;Foreign Key)

  • 설명
    • 한 테이블의 필드(열)가 다른 테이블의 기본 키(PK;Primary Key)를 참조하여 테이블 간의 관계를 정의하는 키
    • 데이터베이스에서 참조 무결성을 유지하는 데 사용
    • 데이터 일관성 보장
    • 역할
      • 관계 설정 : 두 테이블 간의 관계(1:1, 1:다, 다:다) 정의
      • 참조 무결성 유지 : 외래키로 참조된 값이 반드시 부모 테이블에 존재하도록 강제
  • 외래키 정의하는 SQL코드
    • 테이블을 생성할 때 또는 이미 생성된 테이블에 추가할 때 정의
    • 주로 테이블 간의 관계를 표현하는 데 사용
    • 부모 테이블의 기본 키를 자식 테이블에서 참조하는 방식으로 구현
-- 부모 테이블 (departments)
-- pk : department_id
CREATE TABLE departments (
    department_id INT PRIMARY KEY,
    department_name VARCHAR(100) NOT NULL
);

-- 자식 테이블 (employees)
-- department_id가 fk로 설정되어 departments 테이블의 department_id 필드 참조
-- employees 테이블의 각 직원은 departments 테이블의 부서에 속하게 됨
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(부서 참조)
  • 시각적 예시
+-------------------+       1:N       +-------------------+
|   departments      |<-------------> |    employees      |
+-------------------+                 +-------------------+
| department_id (PK) |                | employee_id (PK)  |
| department_name    |                | first_name        |
+-------------------+                 | last_name         |
                                      | department_id (FK)|
                                      +-------------------+

-- departments와 employees 테이블은 department_id를 기준으로 1:다 관계를 가진다.
-- 즉, 하나의 부서에 여러 명의 직원이 속할 수 있다.
-- employees 테이블의 department_id는 fk로, departments 테이블의 department_id를 참조하고 있다.

FK와 ERD의 중요성

  • 데이터 무결성
    • fk는 데이터베이스에서 참조 무결성 보장
    • 불일치나 오류 방지
    • 테이블 간의 관계 확실히 설정
  • 효율적인 데이터 관리
    • fk를 통해 테이블 간의 관계설정 -> 여러 테이블에서 데이터를 쉽게 연결하고 조회 가능
  • ERD를 통한 시각화
    • ERD는 데이터베이스 설계를 시각적으로 표현 -> 관계 쉽게 이해하고 유지관리할 수 있도록 도움
profile
이것저것 다 적는 기록장📚

0개의 댓글