본문 바로가기
개발/Database

데이터 모델링

by BellOne4222 2024. 3. 2.

모델링

  • 현실 세계를 단순화 하여 표현하는 기법
  • 현실 세계를 추상화, 단순화, 명확화 하기 위해 일정한 표기법에 의해 표현하는 기
  • 모델 : 다양한 현상에 대해서 일정한 표기법에 의해 표현해 놓은 모형
    • 관리하고자 하는 데이터를 모델로 설계
  • 특징
    • 추상화
      • 현실 세계를 일정한 형식으로 표현
      • 아이디어나 개념을 간략하게 표현하는 과정
    • 단순화
      • 복잡한 현실 세계를 정해진 표기법으로 단순하고 쉽게 표현
    • 명확화
      • 불분명함을 제거하고 명확하게 해석할 수 있도록 기술한다.
  • 모델링의 세 가지 관점
    • 데이터 관점
      • 데이터 위주의 모델링
      • 어떤 데이터들이 업무와 얽혀있는지, 그 데이터 간에 어떤 관계가 있는지에 대해서 모델링 하는 방법
    • 프로세스 관점
      • 프로세스 위주의 모델링
      • 업무가 실제로 처리하고 있는 일은 무엇인지 또는 앞으로 처리해야 하는 일은 무엇인지를 모델링 하는 방법
    • 데이터와 프로세스의 상관 관점
      • 데이터와 프로세스의 관계를 위주로 한 모델링
      • 프로세스의 흐름에 따라 데이터가 어떤 영향을 받는지를 모델링 하는 방법
  • 데이터 품질을 보장하기 위해 데이터 모델링시 유의해야하는 사항
    • 중복
      • 같은 데이터가 여러 엔티티에 중복으로 저장되는 현상을 지양해야한다.
    • 비유연성
      • 데이터 모델과 프로세스를 분리하여 유연성을 높여야 유지 보수에 유리하다.
    • 비일관성
      • 데이터 간의 연관 관계에 대해 명확하게 정의해야 다른 데이어터와의 연관성을 고려하지 ㅇ낳고 일부 데이터만 변경 할 수 있는 위험에 대비 할 수 있다.
  • 모델링의 세 가지 단계
    • 개념적 데이터 모델링
      • 추상화 레벨이 가장 높은 모델링
      • 프로세스를 포괄적으로 모델링하는 단
    • 논리적 데이터 모델링
      • 모델에 대한 KEY, 속성, 관계 등을 모두 표현하는 단계
    • 물리적 데이터 모델링
      • 성능이나 가용성 등의 물리적인 성격 고려하여 모델을 표현하는 단계

 

  • 3단계 스키마 구조
    • 외부 스키마 : View 단계로 여러 개의 사용자 관점으로 구성되는 것
    • 개념 스키마 : 모든 사용자 관점을 통합한 조직 전체 관점의 통합적인 표현
    • 내부 스키마 : 물리적인 저장 구조를 나타내는 것
  • 3단계 스키마 구조가 보장하는 독립성
    • 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향받지 않는다.
    • 물리적 독립성 : 내부 스키마가 변경되어도 외부/개념 스키마는 영향받지 않는다.

 

  • 엔티티 : 식별이 가능한 객체
    • 명확한 조건이 기준이 되어야 한다.
  • 엔터티 : table
  • 인스턴스 : row
  • 속성 : column
  • 특징
    • 업무에서 쓰이는 정보여야 한다.
    • 유니크함을 보장할 수 있는 식별자가 있어야 한다.
    • 2개 이상의 인스턴스를 가지고 있어야 한다.
    • 반드시 속성을 가지고 있어야 한다.
    • 다른 엔터티와 1개 이상의 관계를 가지고 있어야 한다.
  • 분류
    • 유형, 무형
      • 유형 엔터티 
        • 물리적인 형태 존재, 안정적, 지속적
      • 개념 엔터티
        • 물리적인 형태 없음, 개념적
      • 사건 엔터티
        • 행위를 함으로써 발생, 빈번함, 통계자료로 이용 가능
    • 발생 시점
      • 기본 엔터티
        • 업무에 원래 존재하는 정보
        • 독립적으로 생성하며, 자식 엔터티를 가질 수 있음
        • 자신만의 주 식별자를 가지며 다른 엔터티의 부모 역할을 한다.
      • 중심 엔터티
        • 기본 엔터티로부터 파생되고 행위 엔터티 생성
        • 업무에 있어서 중심적인 역할을 하며 데이터의 양이 많이 발생
      • 행위 엔터티
        • 2개 이상의 엔터티로부터 파생
        • 데이터가 자주 변경되거나 증가 할 수 있다.
        • 보통 설계 초기 단계보다는 상세 설계단계에서 많이 도출된다.

 

  • 속성
    • 사물이나 개념의 특징을 설명해 줄 수 있는 항목
    • 속성은 의미상 더이상 쪼개지지 않는 레벨이어야 하고 프로세스에 필요한 항목이어야 한다.
    • 하나의 속성은 한 개의 속성값만 가질 수 있다.

 

  • 엔터티, 인스턴스, 속성, 속성값의 관계
    • 한 개의 엔터티는 두 개 이상의 인스턴스를 갖는다.
    • 한 개의 인스턴스는 2 개 이상의 속성을 갖는다.
    • 한 개의 속성은 하나의 속성값을 갖는다

  • 특성에 따른 속성 분류
    • 기본속성 : 업무 프로세스 분석을 통해 바로 정의가 가능한 속성
    • 설계속성 : 업무에 존재하지는 않지만 설계하다 보니 필요하다고 판단되어 도출해낸 속성
    • 파생속성 : 다른 속성의 속성값을 계산하거나 특정한 규칙으로 변형하여 생성한 속성
  • 구성 방식에 따른 분류
    • PK 속성 : 엔터티의 인스턴스들을 식별할 수 있는 속성
    • FK 속성 : 다른 엔터티의 속성에서 가져온 속성
    • 일반 속성 : PK, FK를 제외한 나머지 속성

 

  • 도메인
    • 속성이 가질 수 있는 속성값의 범위
  • 용어 사전 : 엔터티의 속성명을 정의할 때 명확한 의미의 이름을 부여하고 다른 엔터티와의 혼란을 예방하기 위해 이용하는 것
  • 시스템 카탈로그 : 사용자 테이블과는 별개로 시스템 자체에 관련이 있는 데이터를 담고 있는 데이터 베이스
    • SELECT만 가능

 

  • 관계
    • 엔터티와 엔터티의 관계
  • 종류
    • 존재 관계 : 존재 자체로 연관성이 있는 관계
      • 직원과 부서, 학생과 학과
    • 행위 관계 : 특정한 행위를 함으로써 연관성이 생기는 관계
      • 회원과 주문, 학생과 출석
  • 표기법
    • 관계명 : 관계의 이름, 엔터티와 엔터티가 어떠한 관계를 맺고 있는지를 나타내는 문장
    • 관계차수 : 관계에 참여하는 수, 1:1, 1:M, M:N
    • 관계 선택사양 : 필수인지 선택인지의 여부
      • 필수적 관계 : 참여자가 반드시 존재해야 하는 관계 (주문, 주문상품)
      • 선택적 관계 : 참여자가 없을 수도 있는 관계 (학생, 출석)

 

  • 식별자 : 각각의 인스턴스를 구분 가능하게 만들어주는 대표격인 속성
    • 주식별자 : 기본키, PK, 하나의 속성이나 여러개의 속성이 주식별자가 될 수 있다.
    • 주식별자는 반드시 속성값이 존재해야 한다. 
      • 유일성 : 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 한다.
      • 최소성 : 유일성을 보장하는 최소개수의 속성이어야 한다.
      • 불변성 : 속성값이 되도록 변하지 않아야 한다.
      • 존재성 : 속성값이 NULL일 수 없다.
    • 식별자 분류
      • 대표성 여부
        • 주식별자 : 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자, 다른 엔터티와 참조 관계로 연결
        • 보조 식별자 : 인스턴스를 식별 할 수 는 있지만 대표 식별자가 아니다, 다른 엔터티와 참조 관계로 연결되지 않는다.
      • 스스로 생성되었는지 여부
        • 내부 식별자 : 엔터티 내부에서 스스로 생성된 식별자
        • 외부 식별자 : 다른 엔터티에서 온 식별자, 다른 엔터티와의 연결고리 역할
      • 단일 속성의 여부 
        • 단일 식별자 : 하나의 속성으로 구성된 식별자
        • 복합 식별자 : 두 개 이상의 속성으로 구성된 식별자
      • 대체 여부
        • 원조 식별자 : 업무 프로세스에 존재하는 식별자, 가공되지 않는 원래의 식별자
        • 대리 식별자 : 주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자
    • 식별자 관계
      • 식별자 관계 : 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계
        • 주식별자는 반드시 존재해야 하므로 부모 엔터티가 있어야 생성 가능하며 단일 식별자인지 복합 식별자인지에 따라 1:1이거나 1:M이 결정 된다.
      • 비식별자 관계 : 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계
        • 일반 속성의 속성값은 NULL이 될 수 있으므로 부모 엔터티가 없는 자식 엔터티 생성이 가능하고 마찬가지의 이유로 자식 엔티가 존재하는 상태에서 부모 엔터티가 삭제 될 수도 있다.
데이터 모델링을 할 때 지양해야 할 점
1. 중복
2. 비 유연성 : 애플리케이션과 데이터 간의 연계성이 높으면 애플리케이션이 변경될 때마다 데이터 모델도 변경되야 하는 상황이 생겨서 비유연성을 가지게 된다.
3. 비 일관성

발생시점에 따른 엔터티 분류
1. 기본 엔터티
2. 중심 엔터티
3. 행위 엔터티

유, 무형에 따른 엔터티 분류
1. 유형 엔터티
2. 개념 엔터티
3. 사건 엔터티

ERD에서는 존재에 의한 관계와 행위에 의한 관계를 구분하지 않고 표현하며 클래스 다이어그램에서는 이것을 구분하여 연관 관계와 의존 관계로 표현한다.
존재에 의한 관계와 행위에 의한 관계를 구분해서 표현하는 것은 비일관성

중복 : 같은 데이터가 여러 엔터티에 중복으로 저장되는 현상을 지양해야한다.
비 유연성 : 애플리케이션과 데이터 간의 연계성이 높으면 애플리케이션이 변경될 때마다 데이터 모델도 변경되야 하는 상황이 생겨서 비유연성을 가지게 된다.
비 일관성 : 데이터의 중복이 없는 경우에도 발생 할 수 있다. 개발자가 다른 데이터와의 연관성을 고려하지 않고 일부 데이터만 변경할 수 있기 때문이다. 이런 위험을 예발하기 위해 데이터 모델링을 할 때 데이터 간의 연관 관계에 대해 명확하게 정의해야 한다.

식별자 관계 VS 비 식별자 관계
1. 강한 관계 : 약한 관계
2. 부모 엔터티의 식별자가 자식 엔터티의 주식별자 : 부모 엔터티의 식별자가 자식 엔터티의 일반 속성
3. 부모 엔터티가 있어야 생성 가능 : 부모 엔터티 없는 자식 엔터티 생성 가능
4. 실선으로 표현 : 점선으로 표현

ERD 작성 순서
1. 엔터티를 그린다.
2. 엔터티를 적절하게 배치한다.
3. 엔터티 간의 관계를 나타낸다.
4. 관계명을 정의한다.
5. 관계의 참여도를 나타낸다.
6. 관계의 필수 여부를 나타낸다.

까마귀발 표기법
1. 까마귀발 기호는 2개 이상
2. 엔터티는 사각형
3. 해시마크(|)는 1개
4. 점선은 비식별자 관계

기본 엔터티 : 업무에 원래 존재하는 정보, 독립적으로 생성되며, 자식 엔터티를 가질 수 있다.
중심 엔터티 : 기본 엔터티로부터 파생되고, 행위 엔터티 생성, 업무에 있어서 중심적인 역할을 하며 데이터의 양이 많이 발생
행위 엔터티 : 2개 이상의 엔터티로부터 파생, 데이터가 자주 변경되거나 증가할 수 있다.

속성 : 의미상 분리되지 않는 최소의 데이터 레벨로 프로세스에 필요한 항목되어야 한다.

관계명 : 관계의 이름을 나타낸다.
관계 차수 : 1:1, 1:M, M:N과 같은 관계의 기수성을 나타낸다.
관계선택사양 : 관계가 필수 관계인지, 선택 관계인지를 나타낸다.

엔터티 간의 관계를 정의 할 때 고려해야 할 사항
1. 두 엔터티 사이를 이어주는 동사가 존재해야 한다.
2. 두 엔터티는 부모 자식 이외에 다른 관계도 존재 할 수 있다.
3. 두 엔터티 사이에 조합되는 정보가 존재해야 한다.
4. 두 엔터티 사이에 영향력 있는 관계가 존재해야 한다.

보조식별자 : 인스턴스를 식별할 수 있지만 대표 식별자가 아닌 식별자로 다른 엔터티와 참조 관계로 연결되지 않는다.

주식별자 : 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자

대리 식별자(인조 식별자) : 주 식별자의 속성이 두 개 이상인 경우, 그 속성들을 하나로 묶어서 사용하는 식별자
복합 식별자 : 두 개 이상의 속성으로 구성된 식별자
외부 식별자(FK) : 다른 엔터티에서 온 식별자, 다른 엔터티와의 연결고리 역할

 

 

 

'개발 > Database' 카테고리의 다른 글

정규화, 트랜잭션  (2) 2024.03.06
윈도우 함수  (1) 2024.02.25
PK FK UK CK  (0) 2024.02.15
트랜잭션, 뷰, Date  (0) 2024.02.07
사용자 권한 주기 (GRANT)  (0) 2024.02.07