[MySQL] 데이터 모델링

2025. 12. 26. 18:17·Programming/SQL(DB)
728x90

데이터 모델링

  • 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정
  • 데이터베이스 설계의 핵심 과정

 

2단계 데이터 모델링

  • 개념적 데이터 모델링(conceptual modeling)
    • 현실 세계의 중요 데이터를 추출하여 개념 세계로 옮기는 작업
  • 논리적 데이터 모델링(logical modeling)
    • 개념 세계의 데이터를 데이터베이스에 저장하는 구조로 표현하는 작업

 

데이터 모델

  • 데이터 모델링의 결과물을 표현하는 도구(개념적, 논리적 모델이 존재함)
  • 개념적 데이터 모델
    • 현실 세계를 개념적으로 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구
    • ex) 개체-관계 모델(E-R ahepf)
  • 논리적 데이터 모델
    • 개념적 구조를 논리적으로 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구
    • ex) 관계 데이터 모델

 

데이터 모델은 일반적으로 3가지로 구성됨

  • 데이터 구조(data structure)
    • 어떤 요소로 이루어져 있는지(개념적), 데이터를 어떤 모습으로 저장할 것인지(논리적) 표현
    • 표현 대상 정의(개체, 관계)
    • 정적(static) → 자주 변하지 않기 때문
  • 연산(operation)
    • 데이터 구조에 따라 표현된 값들을 처리하는 작업
    • 연산을 통해 한 상태에서 다른 상태로 전이
    • 동적(dynamic) → 값이 연산에 의해 계속 변경될 수 있기 때문
  • 제약조건(constraint)
    • 데이터 무결성 유지를 위한 구조적 측면(허용될 수 있는 개체 인스턴스), 의미적 측면(허용되는 연산의 한계)의 제약사항

 

개체

  • 개체(entity)
    • 단독으로 존재할 수 있으며 다른 것과 구별되는 객체(object), 저장할 만한 가치가 있는 중요 데이터를 가지고 있는 사람이나, 사물
  • 개체 타입(entity type)
    • 이름과 속성(attribute)들로 정의됨
    • 속성: 각 개체만의 고유한 특성이나 상태
  • 개체 인스턴스(entity instance)
    • 개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체
  • 개체 집합(entity set)
    • 한 개체 타입에 대한 개체 인스턴스들의 집합

속성(Attribute)

  • 개체나 관계가 가지고 있는 고유한 특성
  • 의미 있는 데이터의 가장 작은 논리적 단위
  • 단일 값(single-valued) 속성
    • 특정 개체를 구성하는 속성 값이 하나인 경우
    • 예: 학생 개체의 이름 속성
  • 다중 값(multi-valued)속성
    • 한 개체에 대해 여러 개의 값을 가질 수 있는 속성
    • 예: 학생 개체의 취미 속성, 도서 개체의 저자 속성

 

  • 단순(simple) 속성
    • 더 이상 작은 구성원소로 분해할 수 없는 속성
  • 복합(composite) 속성
    • 몇 개의 기본적인 단순 속성들로 분해할 수 있는 속성(ex. 집 주소)
  • 유도(derived) 속성
    • 속성의 값이 다른 속성이나 개체가 가지고 있는 값으로부터 유도되어 결정되는 속성(ex. 책(가격, 할인율, 판매가격)) 에서의 판매가격
  • 저장(stored) 속성
    • 유도 속성 생성에 사용된 속성(가격, 할인율)

 

널 속성

  • 널(null) 값이 허용되는 속성
  • 개체 인스턴스가 특정 속성 값을 가지고 있지 않다는 것을 명시적으로 표시하기 위함
  • 널 값의 의미
    • 해당되지 않은 경우(not applicable)
      • 학생 개체 타입의 주민번호 속성: 외국 유학생
    • 알 수 없는 경우(unknown)
      • 값이 존재하지만 누락된 경우: 학생 개체 타입의 이름, 키
      • 존재 여부를 모르는 경우: 학생 개체 타입의 취미, 휴대폰 번호

 

키 속성

  • 개체 집합에 존재하는 각 개체 인스턴스들을 식별하는 데 사용되는 속성
    • 개체 인스턴스들의 키 속성 값은 모두 다르다.
  • 키 속성으로 적합한 속성이 여러 개면 이 중 하나를 키로 사용한다.

관계

  • 관계(relationship)
    • 개체와 개체가 맺고 있는 의미 있는 연관성
  • 관계 인스턴스
    • 실제 속성 값으로 구성된 특정 개체 인스턴스들 간에 맺어진 실제 관계
  • 관계 타입
    • 개체 집합들 사이의 대응 관계(매핑)

관계도 개체처럼 속성을 가질 수 있다.

 

관계 유형

  • 관계에 참여하는 개체 타입의 수 기준
    • 이항 관계: 개체 타입 2개가 맺는 관계
    • 삼항 관계: 개체 타입 3개가 맺는 관계
    • 순환 관계: 개체 타입 1개가 자기 자신과 맺는 관계
  • 매핑 카디널리티(mapping cardinality)
    • 관계를 맺는 두 개체 집합에서, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수
  • 매핑 카디널리티 기준
    • 일대일(1:1) 관계
    • 일대다(1:N) 관계
    • 다대다(N:M) 관계

 

일대일 관계

  • 개체 집합 X의 각 원소는 집합 Y의 원소 하나와 관련될 수 있고,
  • 개체 집합 Y의 각 원소도 집합 X의 원소 하나랑 관련될 수 있다.
  • ex) 혼인관계 (남편 한명이 아내 한명과 혼인을 맺어야함)

일대다 관계

  • 개체 집합 X의 각 원소는 임의의 수의 Y의 원소와 관련될 수 있지만,
  • 개체 집합 Y의 각 원소는 많아야 하나의 X 원소와 관련될 수 있음
  • ex) 부서 개체와 사원 개체(한 부서에는 여러명의 사원이 소속될 수 있지만 사원은 한 부서에만 속한다)

다대다 관계

  • 개체 집합 X의 각 원소는 임의의 수의 개체 집합 Y 원소와 관련될 수 있고
  • 개체 집합 Y의 각 원소도 임의의 수의 X 원소와 관련될 수 있음
  • ex. 구매관계(한 고객은 여러권의 책을 구매할 수 있으며 책은 여러 고객한테 판매될 수 있음)

관계의 참여 특성

  • 필수적 참여(전체 참여)
    • X-Y 관계에서 개체 집합 X의 모든 개체 인스턴스가 X-Y 관계에 참여해야 하는 경우
    • ex) 교수 - 소속 - 학과
  • 선택적 참여(부분적 참여)
    • X-Y 관계에서 개체 집합 X의 일부 개체 인스턴스만 X-Y 관계에 참여해도 되는 경우
    • ex) 학생 - 등록 - 과목

관계의 종속성

  • 존재 종속(existence dependence)
    • 어떤 개체 y의 존재가 개체 x의 존재에 종속되는 경우
      • x: 주 개체(dominant entity) 강한 개체
      • y: 종속 개체(subordinate entity) 약한 개체
    • 강한 개체 x를 삭제하면 약한 개체 y도 삭제해야 함
  • 강한 개체와 약한 개체는 일반적으로 일대다의 관계이다.
  • 약한 개체는 강한 개체와의 관계에 필수적으로 참여한다.
  • 약한 개체는 강한 개체의 키를 포함하여 키를 구성한다.

 

논리적 데이터 모델

  • E-R 다이어그램으로 표현된 개념적 구조를 데이터베이스에 어떤 형태로 저장할지 논리적으로 표현하는데, 이러한 논리적인 구조를 논리적 데이터 모델이라함
  • 논리적 데이터 모델은 논리적 데이터 모델링의 결과이다.
  • 또한 논리적 데이터 모델로 표현된 데이터베이스의 논리적 구조가 데이터베이스 스키마이다.
728x90
저작자표시 (새창열림)

'Programming > SQL(DB)' 카테고리의 다른 글

[MySQL] 데이터베이스 정규화  (0) 2025.12.27
[MySQL] 데이터베이스 설계(개념적 설계, 논리적 설계)  (0) 2025.12.26
[MySQL] 프로그래머스 서울에 위치한 식당 목록 출력하기  (0) 2025.02.13
[MySQL] 프로그래머스 평균 일일 대여 요금 구하기  (0) 2025.02.11
[MySQL] SQL 테이블 변경, 조작, 함수  (1) 2024.10.19
'Programming/SQL(DB)' 카테고리의 다른 글
  • [MySQL] 데이터베이스 정규화
  • [MySQL] 데이터베이스 설계(개념적 설계, 논리적 설계)
  • [MySQL] 프로그래머스 서울에 위치한 식당 목록 출력하기
  • [MySQL] 프로그래머스 평균 일일 대여 요금 구하기
쿨쿨.
쿨쿨.
  • 쿨쿨.
    All of the life
    쿨쿨.
  • 전체
    오늘
    어제
    • 분류 전체보기 (278)
      • Programming (47)
        • C, C++ (18)
        • Python (6)
        • Java (1)
        • HTML,CSS,JS (3)
        • SQL(DB) (13)
        • SpringBoot (3)
        • Android (2)
        • CI,CD (1)
      • Algorithm (173)
        • Review (4)
      • Security (14)
        • WebHacking (3)
        • Websecurity (11)
      • OS (19)
        • Linux (12)
        • Mac os (2)
      • 머신러닝 (1)
      • CS(Computer Science) (12)
        • 컴퓨터 네트워크 (3)
        • 컴퓨터 구조 (1)
        • 인공지능 (8)
      • Docker (1)
      • Dev Book Review (3)
        • Clean Code (1)
        • Effective Java (0)
        • Real MySQL (2)
      • SWM (1)
      • Review (5)
      • AWS (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    우선순위큐
    우선순위 큐
    비트마스킹
    재귀
    c언어
    WebSecurity
    백준
    시뮬레이션
    BFS
    이분탐색
    그래프 이론
    코딩
    그리디
    DFS
    다익스트라
    DP
    다이나믹 프로그래밍
    브루트포스
    에라토스테네스의 체
    Bandit
    백트래킹
    구현
    트리
    wargame
    Leviathan
    누적합
    정렬
    깊이우선탐색
    linux
    투포인터
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.6
쿨쿨.
[MySQL] 데이터 모델링
상단으로

티스토리툴바