🥑

초보 개발자의 일상

개발/데이터베이스 개론

4. 데이터 모델링과 모델

dev.jelee 2024. 12. 9. 23:36

이미 정리된 내용을 직접 작성하여 옮기면서 공부하기 위해 글 작성함.


4. 데이터 모델링과 모델

4.1 데이터 모델링의 개념과 필요성

데이터 모델링(Data Modeling)의 개념

  • 데이터 모델링은 데이터베이스를 설계하기 위한 과정으로, 현실 세계의 데이터를 체계적으로 표현하는 방법이다.
  • 데이터와 데이터 간의 관계를 정의하고, 이를 논리적으로 물리적으로 구조화한다.

필요성

  • 데이터 구조 명확화: 데이터를 체계적으로 관리하고 이해할 수 있도록 구조화.
  • 요구사항 분석: 사용자 요구를 충족시키기 위한 데이터 요구 사항을 분석.
  • 일관성 유지: 데이터베이스 설계 전후의 일관성을 확보.
  • 변화에 유연성 제공: 데이터 변경이나 확장에 유연하게 대응.
  • 효율적 데이터 관리: 데이터 중복과 무결성 문제를 최소화.

단계

  • 개념적 데이터 모델링: 현실 세계의 데이터를 고수준 개념으로 모델링(E-R 모델).
  • 논리적 데이터 모델링: 개념 모델을 DBMS에 맞는 논리적 구조로 변환(관계형, 계층형, 네트워크형).
  • 물리적 데이터 모델링: 논리적 모델을 실제 DBMS에서 구현 가능한 물리적 구조로 변환.

4.2 개체-관계(E-R) 모델과 E-R 다이어그램

개체-관계(E-R) 모델

  • 개념: 현실 세계를 개체(Entity), 속성(Attribute), 관계(Relationship)으로 표현하는 데이터 모델.
  • 구성 요소:
    • 개체(Entity): 데이터로 관리해야 할 독립적인 객체(예: 학생, 도서).
    • 속성(Attribute): 개체가 가지는 특성(예: 학생의 이름, 학번).
    • 관계(Relationship): 개체 간의 연관성(예: 학생-도서 간의 대출 관계).
  • E-R 다이어그램(E-R Diagram)
    • 정의: E-R 모델을 시각적으로 표현한 다이어그램으로, 개체, 속성, 관계를 도식화.
    • 표기법:
      • 개체: 사각형
      • 속성: 타원
      • 관계: 마름모
      • 기본키: 속성 밑줄 표시
    • 예제
      • 시나리오: 대학에서 학생, 강의, 교수 정보를 관리하려고 한다.
      • E-R 다이어그램 요소:
        • 엔티티(Entity): 학생, 강의, 교수
        • 속성(Attribute): 학생(학번, 이름, 학년), 강의(강의번호, 제목, 학점), 교수(교수ID, 이름, 전공)
        • 관계(Relationship): 학생은 강의를 수강한다(Enrolls), 교수는 강의를 개설한다(Teaches).
      • E-R 다이어그램:
        • 원으로 속성을 표현하고, 엔티티와 속성을 연결선으로 연결.
        • 엔티티는 사각형, 관계는 마름모로 표시.
        • [Student] --(Enrolls)-- [Course] --(Teaches)-- [Professor]

4.3 논리적 데이터 모델: 계층, 네트워크 모델

논리적 데이터 모델(Logical Data Model)

  • 개념적 데이터 모델을 기반으로 데이터를 데이터베이스에 저장할 수 있는 구조로 변환.
  • 종류: 계층형, 네트워크형, 관계형 모델.

계층형 모델(Hierarchical Model)

  • 특징:
    • 데이터를 계층 구조(Tree)로 표현.
    • 부모-자식 관계로 구성.
    • 한 부모 개체에 여러 자식 개체가 연결되지만, 자식은 하나의 부모만 가짐.
  • 장점:
    • 간단한 데이터 구조와 빠른 검색.
  • 단점:
    • 데이터 간 복잡한 관계를 표현하기 어려움.
    • 부모-자식 관계로 인해 유연성이 낮음.
  • 예제:
    • 회사
       ├── 부서
       │    ├── 직원1
       │    └── 직원2
       └── 부서
            └── 직원3

네트워크 모델(Network Model)

  • 특징:
    • 데이터를 그래프 형태로 표현(노드와 링크).
    • 개체 간의 복잡한 다대다 관계를 표현 가능.
  • 장점:
    • 계층형 모델보다 더 유연하게 데이터 관계를 표현.
  • 단점:
    • 구조가 복잡하여 설계 및 유지 관리가 어려움.
  • 예제
    • 학생 ─── 대출 ─── 도서
        │                            │
        └── 수강 ─── 강좌

예시

  • 위의 대학 데이터를 관계형 데이터 모델로 변환:
  • 테이블 설계:

Student(학생) 테이블:

 

Course(강의) 테이블:

 

Professor(교수) 테이블:

 

Enrollment(학생-강의 관계) 테이블:

 

Teaching(교수-강의 관계) 테이블:

 

4.4 물리적 데이터 모델링 (Physical Data Modeling) 예시

위의 논리적 모델을 MySQL에 적용하는 스키마 설계.

SQL 코드:

-- 학생 테이블 생성
CREATE TABLE Student (
    StudentID INT PRIMARY KEY,
    Name VARCHAR(100),
    Year INT
);

-- 강의 테이블 생성
CREATE TABLE Course (
    CourseID CHAR(5) PRIMARY KEY,
    Title VARCHAR(100),
    Credits INT
);

-- 교수 테이블 생성
CREATE TABLE Professor (
    ProfessorID CHAR(5) PRIMARY KEY,
    Name VARCHAR(100),
    Department VARCHAR(50)
);

-- 학생-강의 관계 테이블 생성
CREATE TABLE Enrollment (
    StudentID INT,
    CourseID CHAR(5),
    PRIMARY KEY (StudentID, CourseID),
    FOREIGN KEY (StudentID) REFERENCES Student(StudentID),
    FOREIGN KEY (CourseID) REFERENCES Course(CourseID)
);

-- 교수-강의 관계 테이블 생성
CREATE TABLE Teaching (
    ProfessorID CHAR(5),
    CourseID CHAR(5),
    PRIMARY KEY (ProfessorID, CourseID),
    FOREIGN KEY (ProfessorID) REFERENCES Professor(ProfessorID),
    FOREIGN KEY (CourseID) REFERENCES Course(CourseID)
);

 

물리적 설계 요소:

  • 인덱스: StudentID, CourseID에 인덱스 추가.
  • 파티셔닝: 학생 데이터를 학년에 따라 분할 저장.
  • 저장소 엔친: InnoDB 사용.

요약

  • 데이터 모델링: 현실 세계를 데이터베이스로 설계하기 위한 과정.
  • E-R 모델: 개체, 속성, 관계를 통해 현실 세계를 표현.
  • 논리적 데이터 모델: 데이터를 논리적으로 구조화하며, 계층형과 네트워크형 모델은 초기 데이터베이스 설계에 사용됨.

내 생각 정리

데이터 모델링의 개념

데이터 베이스를 설계하기 위한 과정. 현실 세계의 데이터를 체계적으로 표현하는 방법.

데이터와 데이터 간의 관계를 정의하고 논리적이고 물리적으로 구조화한다.

 

데이터 모델링의 필요성

데이터 구조화 명확화, 요구사항 분석, 일관성 유지, 변화에 유연성 제공, 효율적 데이터 관리

 

데이터 모델리의 단계

개념적 데이터 모델링(E-R 모델), 논리적 데이터 모델링(관계형, 계층형, 네트워크형), 물리적 데이터 모델링(논리적 모델을 실제 DBMS에서 구현)

 

개채-관계(E-R) 모델

현실 세계를 개체(Entity), 속성(Attribute), 관계(Relationship)으로 표현하는 데이터 모델.

 

E-R 다이어그램(E-R Diagram)

E-R 모델을 시각적으로 표현한 다이어그램으로, 개체, 속성, 관계를 도식화.

표기법: 개체(사각형), 속성(타원), 관계(마름모), 기본키(속성 밑줄 표시)

 

논리적 데이터 모델(Logical Data Model)

개념적 데이터 모델을 기반으로 데이터를 데이터베이스에 저장할 수 있는 구조로 변환.

종류: 계층형, 네트워크형, 관계형 모델

 

계층형 모델(Hierarchical Model)

특징: 데이터를 계층 구조(Tree)로 표현. 부모-자식 관계로 구성. 한 부모 개체에 여러 자식 개체가 연결되지만, 자식은 하나의 부모만 가짐.

장단점: 간단한 데이터 구조와 빠른 검색이 가능하지만, 데이터 간 복잡한 관계를 표현하기 어렵고 부모-자식 관계로 인해 유연성이 낮다.

 

네트워크 모델(Network Model)

특징: 데이터를 그래프 형태로 표현(노드와 링크), 개체 간의 복잡한 다대다 관계를 표현 가능.

장단점: 계층형 모델보다 더 유연하게 데이터 관계를 표현할 수 있지만, 구조가 복잡하여 설계 및 유지 관리가 어렵다.