본문 바로가기

Database

SQL_데이터 모델링의 이해

모델링이란?

  • 데이터 베이스에서의 모델링이란 '현실 세계를 단순화하여 표기하는 기법'이다.
  • 특징
    • 추상화(Abstraction) : 현실 세계를 일정한 형식으로 표현한것. 즉, 아이디어나 개념을 간략하게 표현하는 것이다.
    • 단순화(Simplification) : 복잡한 현실 세계를 정해진 표기법으로 단순하고 쉽게 표현한다는 의미이다.
    • 명확화(Clarity) : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술한다는 의미이다.
  • 모델링의 세가지 관점
    • 데이터 관점(What, Data) : 데이터 위주의 모델링으로 어떤 데이터들이 업무와 얽혀있는지, 그리고 그 데이터간에 어떤 관계가 있는지에 대해 모델링하는 방법
    • 프로세스 관점(How, Process) : 프로세스 위주의 모델링으로 이 업무가 실제로 처리하고 있는 일은 무엇인지 또는 앞으로 처리해야 하는 일은 무엇인지를 모델링하는 방법
    • 데이터와 프로세스의 상관 관점(Data vs Process, Interaction) : 데이터와 프로세스의 관계를 위주로 한 모델링으로 프로세스의 흐름에 따라 데이터가 어떤 영향을 받는지를 모델링하는 방법
  • 모델링의 세가지 단계
    • 개념적 데이터 모델링 : 전사적 데이터 모델링 수행시 행해지며 추상화 레벨이 가장 높은 모델링이다. 이 단계에서는 업무 중심적이고 포괄적인 수준의 모델링이 진행된다.
    • 논리적 데이터 모델링 : 재사용성이 가장 높은 모델링으로 데이터베이스 모델에 대한 Key, 속성, 관계 등을 모두 표현하는 단계이다.
    • 물리적 데이터 모델링 : 실제 데이터베이스를 구현할 수 있도록 성능이나 가용성 등의 물리적인 성격을 고려하여 모델을 표현하는 단계이다.
  • 3단계 스키마 구조
    • 외부 스키마 : 사용자의 관점 - Multiple User's View 단계로 각 사용자가 보는 데이터베이스의 스키마를 정의한다.
    • 개념 스키마 : 통합된 관점 - Community View of DB 단계로 모든 사용자가 보는 데이터베이스의 스키마를 통합하여 전체 데이터베이스를 나타내는 것이다. 데이터베이스에 저장되는 데이터들을 표현하고 데이터들 간의 관계를 나타낸다.
    • 내부 스키마 : 물리적인 관점 - Physical Representation 단계로 물리적인 저장 구조를 나타낸다. 실질적인 데이터의 저장 구조나 컬럼 정의, 인덱스 등이 포함된다.
  • 3단계 스키마 구조가 보장하는 독립성
    • 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향받지 않는다.
    • 물리적 독립성 : 내부 스키마가 변경되어도 외부/개념 스키마는 영향받지 않는다.
  • IE/Crow's Foot 표기법

  • ERD 작성 순서
    • 엔티티를 도출하고 그린다 
    • 엔티티를 적절하게 배치한다.
    • 엔티티간의 관계를 설정한다.
    • 관계명을 기입한다.
    • 관계의 참여도를 기입한다.
    • 관계의 필수/선택 여부를 기입한다.

엔티티(Entity)

엔티티의 사전적인 의미는 독립체이다. 데이터베이스에서 엔티티는 식별이 가능한 객체라는 의미를 가지고 있다.

예를들어 회원이라는 엔티티는 '아이디', '비밀번호', '이름', '핸드폰 번호', '주소' 와 같은 속성을 가질 수 있고, 홍길동이라는 회원이 있다면 회원 엔티티의 인스턴스가 된다. ( Entity : Table, Instance : Row, Attribute : Column)

  • 엔티티의 특징
    • 업무에서 쓰이는 정보여야 한다.
    • 유니크함을 보장할 수 있는 식별자가 있어야 한다.
    • 2개 이상의 인스턴스를 가지고 있어야 한다.
    • 반드시 속성값을 가지고 있어야 한다.
    • 다른 엔티티와 1개 이상의 관계를 가지고 있어야 한다.
  • 엔티티의 분류
    • 유형 엔티티 : 물리적인 형태, 안정적, 지속적 - ex) 상품, 회원
    • 무형 엔티티 : 물리적인 형태 없음, 개념적 - ex) 부서, 학과
    • 사건 엔티티 : 행위를 함으로써 발생, 빈번함, 통계자료로 이용 가능 - ex) 주문, 이벤트 응모
    • 발생 시점의 분류
      • 기본 엔티티 : 독립적으로 생성됨, 자식 엔티티를 가질 수 있음 - ex) 상품 회원
      • 중심 엔티티 : 기본 엔티티로부터 파생, 엔티티 생성 - ex) 주문
      • 행위 엔티티 : 2개 이상의 엔티티로부터 파생 - ex) 주문 내역, 이벤트 응모 이력

속성(Attribute)

속성은 의미상 더이상 쪼개지지 않는 레벨이어야 하고, 프로세스에 필요한 항목이어야 한다.

  • 속성 값 : 각각의 속성은 속성값을 가질 수 있으며, 속성값은 엔티티에 속한 하나의 인스턴스를 구체화하여 보여주는 데이터이다. 하나의 속성은 한개의 속성값만 가질 수 있다.

  • 엔티티, 인스턴스, 속성의 관계
    • 한개의 엔티티는 두개 이상의 인스턴스를 갖는다.
    • 한개의 인스턴스는 두개 이상의 속성을 갖는다.
    • 한개의 속성은 하나의 속성값을 갖는다.
  • 분류
    • 특성에 따른 분류
      • 기본 속성 : 업무 프로세스 분석을 통해 바로 정의가 가능한 속성
      • 설계 속성 : 업무에 존재하지 않지만 설계하다 보니 필요하다고 판단되어 도출해낸 속성
      • 파생 속성 : 다른 속성의 속성값을 계산하거나 특정한 규칙으로 변형하여 생성한 속성
    • 구성 방식에 따른 분류
      • PK 속성 : 엔티티의 인스턴스를 식별할 수 있는 속성
      • FK 속성 : 다른 엔티티의 속성에서 가져온 속성
      • 일반 속성 : PK, FK를 제외한 속성
  •  도메인 : 속성이 가질 수 있는 속성값의 범위를 도메인 이라고 한다. 예를들어 학생이라는 엔티티가 있을때 학점이라는 속성값은 0.1~4.5 사이의 도메인을 가질 수 있다.

관계(Relationship)

엔티티와 엔티티간의 관계를 의미하며, 어떠한 연관성이 있는지 타입을 분류하여 존재 관계와 행위 관계로 나눌 수 있다.

  • 존재 관계
    • 엄마와 아기처럼 존재 자체로 연관성이 있는 관계를 의미한다. 예를 들어 직원과 부서, 학생과 학과 엔티티가 있다.
  • 행위 관계
    • 특정한 행위를 함으로써 연관성이 생기는 관계이다. 예를들어 회원과 주문, 학생과 출석부 엔티티가 있다.
  • 표기법 
    • 관계명 : 관계의 이름
    • 관계 차수 : 관계에 참여하는 수 ( 1:1, 1:N, N:M)
    • 관계 선택 사항 : 필수인지 선택인지 여부

식별자(Identifiers)

모든 엔티티는 인스턴스를 가지고 있고 인스턴스는 속성으로 자신의 특성을 나타낸다고 했다. 식별자는 이런 속성중에 각각의 인스턴스를 구분 가능하게 만들어주는 대표 격인 속성을 의미한다.

  • 주 식별자 : PK에 해당하는 속성으로 하나의 속성이 주식별자가 될 수있고, 여러개의 속성이 주식별자가 될 수도 있다.
    • 유일성 : 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 한다.
    • 최소성 : 유일성을 보장하는 최소 개수의 속성이어야 한다.
    • 불변성 : 속성값이 되도록 변하지 않아야 한다.
    • 존재성 : 속성값이 NULL일 수 없다.
  • 분류
    • 대표성 여부
      • 주식별자
        • 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자. 
        • 다른 엔티티와 참조 관계로 연결
      • 보조 식별자
        • 인스턴스를 식별할 수는 있지만 대표 식별자가 아니다.
        • 다른 엔티티와 참조 관계로 연결되지 않음
    • 스스로 생성되었는지 여부
      • 내부 식별자 : 엔티티 내부에서 스스로 생성된 식별자
      • 외부 식별자 : 다른 엔티티에서 온 식별자. 다른 엔티티와의 연결고리 역할
    • 단일 속성의 여부
      • 단일 식별자 : 하나의 속성으로 구성된 식별자
      • 복합 식별자 : 두개 이상의 속성으로 구성된 식별자
    • 대체 여부
      • 원조 식별자 : 업무 프로세스에 존재하는 식별자. 가공되지 않은 원래의 식별자(본질 식별자)
      • 대리 식별자 : 주 식별자의 속성이 두개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자(인조 식별자)