DB

DB - 관계형 데이터 모델링 (3)

개발자 포비 2024. 11. 28. 22:29

논리적 데이터 모델링

관계형 DB 패러다임에 어울리는 모습으로 정리

Mapping Rule

  • ERD에서 표현한 내용을 관계형 DB에 맞는 내용으로 전환할 때 필요한 방법론
  • 이 방법론을 활용하면 덜 고민하고, 더 많은 것을 활용할 수 있음
    • Entity -> Table
    • Attribute -> Column
    • Relation -> PK, FK로 각각 바꾸면 됨

1:1 관계 처리

  • 가장 중요한 것은 Cardinality를 따져보는 것
  • 1:1 관계에선 누가 누구한테 FK를 줄 건지 헷갈리는데, 누가 누구한테 의존하는가를 따져보면 된다.
    • 예시: 휴면저자저자 테이블에 의존한다.
      • 휴면자 ID 값은 굳이 auto_increment 할 필요 없다.
      • 저자의 ID 값을 가져오면 된다.
      • 저자는 부모 테이블, 휴면저자는 자식 테이블
      • 저자에 PK, 휴면저자에 FK를 배치하면 무리 없이 작동
  • 기능 중, Relation by existing columns를 활용해서 기존에 있는 값을 활용해 FK 지정
  • 그 다음 1:1 관계를 맺어줌

1:N 관계의 처리

  • 1:N에서는 1에서 PK를 가진다.
  • N 쪽에서는 조인을 위해 1에 해당하는 테이블에 대한 FK를 가져야 한다.
  • 관계 중에서 가장 간단한 관계이다.

N:M 관계의 처리

  • N:M은 서로가 다수의 상대방 엔티티 객체와 연관된다.
  • 그러므로 이 관계를 풀어내기 위해서 둘 사이의 조인 테이블을 만들어야 한다.

조인 테이블 예시

CREATE TABLE Student (
    student_id INT PRIMARY KEY,
    name VARCHAR(255) NOT NULL
);

CREATE TABLE Course (
    course_id INT PRIMARY KEY,
    title VARCHAR(255) NOT NULL
);

CREATE TABLE Enrollment (
    student_id INT,
    course_id INT,
    PRIMARY KEY (student_id, course_id),
    FOREIGN KEY (student_id) REFERENCES Student(student_id),
    FOREIGN KEY (course_id) REFERENCES Course(course_id)
);