데이터 모델링의 이해

KIHYUK MOON·2023년 2월 12일
0
post-thumbnail
post-custom-banner

데이터 모델링의 이해

1. 모델링이란?

데이터 베이스의 모델링은 '현실 세계를 단순화하여 표현하는 기법'이다. 모델은 현실 세계에서 일어날 수 있는 다양한 현상에 대해서 일정한 표기법에 의해 표현해 놓은 모형이고 모델링은 이런 모델을 만들어 가는 일이다.

  • 현실 세계에서 필요한 데이터를 저장하는 데이터베이스를 구축하기 위한 분석/설계의 과정

2. 모델링의 특징

  1. 추상화 - 현실 세계를 일정한 형식으로 표현, 아이디어나 개념을 간략하게 표현
  2. 단순화 - 정해진 표기법으로 단순하고 쉽게 표현
  3. 명확화 - 불분명함을 제거, 명확하게 해설할 수 있도록 표현
  • 데이터베이스의 모델링은 현실세계를 추상화, 단순화, 명확화하기 위해 일정한 표기법에 의해 표현하는 기법이다.

3. 모델링의 세가지 관점

  1. 데이터 관점
    어떤 데이터들이 업무와 얽혀있는지, 그 데이터 간에는 어떤 관계가 있는지에 대해서 모델링
  2. 프로세스 관점
    실제로 처리하고 있는 일은 무엇인지 또는 앞으로 처리해야 하는 일은 무엇인지를 모델링
  3. 데이터와 프로세스의 상관 관점
    프로세스의 흐름에 따라 데이터가 어떤 영향을 받는지를 모델링

4. 모델링의 세 가지 단계

  1. 개념적 데이터 모델링
    전사적 데이터 모델링 수행시 행해짐. 추상화 레벨이 가장 높음. 업무 중심적이고 포괄적인 수준의 모델링
  2. 논리적 데이터 모델링
    재사용성이 가장 높은 모델링. Key, 속성, 관계 등을 모두 표현
  3. 물리적 데이터 모델링
    실제 DB로 구현할 수 있도록 성능이나 가용성 등 물리적인 성격을 고려하여 모델을 표현

5. 데이터의 독립성

ANSI-SPARC 아키텍쳐에서 스키마를 3단계 구조로 나누는데, 이렇게 분리하는 목적은 데이터 베이스에 대한 사용자들의 관점과 데이터베이스가 실제로 표현되는 물리적인 방식을 분리하기 위함이다.

  1. 3단계 스키마 구조
  • 외부 스키마
    사용자의 관점 : 각 사용자가 보는 데이터베이스의 스키마, 여러 개의 사용자 관점으로 구성, 각 사용자나 응용 프로그래머가 접근하는 DB의 정의

  • 개념 스키마
    통합된 관점 : 모든 사용자가 보는 데이터베이스의 스키마를 통합하여 전체 데이터베이스를 나타내는 것

  • 내부 스키마
    물리적인 관점 : 물리적인 저장구조를 나타냄. 저장 구조나 컬럼 정의, 인덱스 등이 포함

  1. 3단계 스키마 구조가 보장하는 독립성
  • 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향받지 않음
  • 물리적 독립성 : 내부 스키마가 변경되어도 외부/ 개념 스키마는 영향받지 않음

6. ERD

시스템에 어떤 엔터티들이 존재하며 그들 간에 어떤 관계가 있는지를 나타내는 다이어그램
1. ERD 표기 방식

  • Peter Chen - 사용 드뭄

  • IDEF1X - ERWin에서 사용되는 모델, 실무에서 사용하는 경우도 있음

  • IE / Crow's Foot - ERRin, ERStudio에서 사용되는 모델, 까마귀발 표기법이라고도 부르며 가장 많이 사용

  • Min - Max / ISO - 각 엔터티의 참여도를 상세하게 나타냄

  • UML - 소프트웨어 공학에서 주로 사용

  • Case*Method / Barker - Oracle에서 사용되는 모델

  1. ERD 작성 순서
    ㄱ. 엔터티를 도출하고 그림
    ㄴ. 엔터티를 적절하게 배치
    ㄷ. 엔터티 간의 관계를 설정
    ㄹ. 관계명을 기입
    ㅁ. 관계의 참여도를 기입
    ㅂ. 관계의 필수/선택 여부를 기입

엔터티(Entity)

1. 엔터티란?

사전적인 의미는 '독립체'. 식별이 가능한 객체라는 의미를 가진다.

  • 업무에서 쓰이는 데이터를 용도별로 분류한 그룹
  • 엔터티는 명확한 조건이 기준이 되어야 한다. 모호한 기준은 성립될 수 없다.
* 엔터티 : Table
* 인스턴스 : Row
* 속성 : Column

각각의 엔터티는 자신을 더 상세하게 나타내기 위해 속성을 갖는다.

2. 엔터티의 특징

  1. 업무에서 쓰이는 정보여야 한다.
    업무와 연관되어 있을 것 같은 엔터티라도 실제로 프로세스에 이용되지 않는다면 적절한 엔터티라고 볼 수 없다.

  2. 유니크함을 보장할 수 있는 식별자가 있어야 함
    엔터티에 속한 인스턴스가 중복되거나 식별이 모호하면 엔터티의 설계가 잘못된 것. 예를 들어 같은 아이디를 가진 사람이 여러 명이라면 누구인지 식별하는 것이 불가능 하므로 고유 회원번호를 부여해서 식별 가능하도록 설계하는 것이 바람직하다.

  3. 2개 이상의 인스턴스를 가지고 있어야 함
    현재 인스턴스가 1개만 존재하고 앞으로도 그렇다면 엔터티로 볼 수 없다.

  4. 반드시 속성을 가지고 있어야 함
    엔터티는 반드시 자신을 상세하게 나타낼 수 있는 속성을 가지고 있어야 한다.

  5. 다른 엔터티와 1개 이상의 관계를 가지고 있어야 한다.

3. 엔터티의 분류

  1. 유형 vs 무형
  • 유형 엔터티 - 물리적인 현태 존재, 안정적, 지속적
  • 개념 엔터티 - 물리적인 현태 없음, 개념적
  • 사건 엔터티 - 행위를 함으로써 발생, 빈번함, 통계자료로 이용 가능
  1. 발생 시점
  • 기본 엔터티 - 독립적으로 생성, 자식 엔터티 가질 수 있음
  • 중심 엔터티 - 기본 엔터티로부터 파생, 행위 엔터티 생성
  • 행위 엔터티 - 2개 이상의 엔터티로부터 파생

엔터티 이름을 정할 때 주의할 점

  • 업무에서 실제 쓰이는 용어 사용
  • 한글은 약어를 사용하지 않고 영문은 대문자 표기
  • 단수 명사로 표현하고 띄어쓰기 하지 않음
  • 해당 엔터티가 갖고 있는 데이터가 무엇인지 명확하게 표현

속성(Attribute)

1. 속성이란?

사람이나 사물을 정의할 때 보통 여러가지 특징들이 수식어로 붙는다. 예를 들어 아티스트에게는 이름, 생년월일, 소속사, 데뷔연도 등의 수식어가 붙는데, 이렇게 사물이나 개념의 특징을 설명해줄 수 있는 항목들을 속성이라고 부른다.

  • 속성은 더 이상 쪼개지지 않는 의미여야 하고 프로세스에 필요한 항목이여야 한다

2. 속성값

각각의 속성은 속성값을 가지며 엔터티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터이다.
하나의 속성은 한개의 속성값만 가질 수 있다. 아닐경우에 별도의 엔터티로 분리하는 것이 바람직하다.

3. 엔터티, 인스턴스, 속성, 속성값의 관계

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

4. 분류

  1. 특성에 따른 분류
  • 기본 속성 : 엔터티의 가장 일반적인 속성, 업무 프로세스 분석을 통해 바로 정의가 가능함

  • 설계 속성 : 업무에 존재하지는 않지만 설계 과정에서 합리적인 모델링을 위해 만들어진 속성. 인스턴스에 유니크함을 부여한다.

  • 파생 속성 : 다른 속성으로부터 파생된 속성을 의미. 계산된 값이나 가공된 값이 속한다. 불가피하게 필요한 경우에만 정의하는 것이 바람직하며 반드시 데이터의 정합성이 고려되어야 한다.
    데이터 조회 시 빠른 성능을보장한다.

  1. 구성방식에 따른 분류
  • PK속성 : 엔터티에 속한 각 인스턴스에 유니크함을 부여하는 속성 (주식별자)

  • FK 속성 : 다른 엔터티와 관계를 맺게 해주는 매게체 역할, 다른 엔터티의 PK값이 될 수 있으며 NULL 값을 가질 수도 있다.

  • 일반 속성 : 위의 속성들을 제외한 나머지 속성

5. 도메인

속성이 가질 수 있는 속성값의 범위. 엔터티를 정의할 때 데이터 타입과 크기로 나타낼 수 있다.


관계

1. 관계란?

엔터티와 엔터티 사이에 어떠한 연관성이 있는지 타입을 분류하여 존재 관계와 행위 관계로 나눔

2. 존재 관계

존재 자체로 연관성이 있는 관계를 의미.

  • 직원 / 부서
  • 학생 / 학과

3. 행위 관계

특정한 행위를 함으로써 연관성이 생기는 관계를 의미

  • 회원 / 주문
  • 학생 / 출석부

4. 표기법

  1. 관계명 - 두 엔터티가 어떠한 관계를 맺고 있는지를 나타내주는 문장. 모든 관계는 두 개의 관계명을 가지고 있음. 명확한 문장으로 표현하고 현재형이어야 함.

  2. 관계차수 - 각 엔터티에서 관계에 참여하는 수. 1:1, 1:M, M:N 형식으로 구분함

  3. 관계선택사양 - 이 관계가 필수요소인지 선택사항인지를 나타냄 (O표시)

  • 필수적 관계 : 참여자가 반드시 존재해야 하는 관계
  • 선택적 관계 : 참여자가 없을 수도 있는 관계

식별자(Identifiers)

1. 식별자란?

인스턴스의 속성 중에 각각의 인스턴스를 구분 가능하게 만들어주는 대표 격인 속성을 의미

2. 주식별자

기본키, PK에 해당하는 속성이다. 하나의 속성이 주식별자가 될 수도 있고, 여러 개의 속성이 주식별자가 될 수도 있다.

주식별자의 특징

  • 유일성 - 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 함

  • 최소성 - 유일성을 보장하는 최소 개수의 속성이어야 함

  • 불변성 - 속성값이 되도록 변하지 않아야 함

  • 존재성 - 속성값이 NULL일 수 없다.

3. 분류

식별자는 대표성 여부, 스스로 생성되었는지 여부, 단일 속성의 여부, 대체 여부가 분류의 기준이 된다.

  1. 대표성 여부
  • 주식별자 :
    유일성, 최소성, 불변성, 존재성을 가지며 다른 엔터티와 참조관계로 연결. (다른 엔터티의 FK)
  • 보조 식별자 :
    인스턴스를 식별할 수는 있지만 대표 식별자가 아님
    다른 엔터티와 참조관계로 연결되지 않음
  1. 스스로 생성되었는지 여부
  • 내부 식별자 : 엔터티 내부에서 스스로 생성된 식별자
  • 외부 식별자 : 다른 엔터티에서 온 식별자, 다른 엔터티와의 연결고리 역할
  1. 단일 속성의 여부
  • 단일식별자 : 하나의 속성으로 구성된 식별자
  • 복합식별자 : 두 개 이상의 속성으로 구성된 식별자
  1. 대체 여부
  • 원조 식별자 : 업무 프로세스에 존재하는 식별자. 가공되지 않음
  • 대리 식별자 : 주식별자의 속성이 두 개 이상인 경우, 하나로 묶어서 사용

4. 식별자 관계 vs 비식별자 관계

  1. 식별자 관계
    부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계
    주식별자는 반드시 존재해야 하므로 부모 엔터티가 있어야 생성 가능하다.
    단일식별자인지 복합식별자인지에 따라 1:1 이거나 1:M 이거나가 결정된다.

  2. 비식별자 관계
    부모 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계이다. 일반 속성의 속성값은 NULL이 될 수 있으므로 부모 엔터티가 없는 자식 엔터티 생성이 가능하다. (부모 엔터티가 삭제될 수도 있다.)

profile
개발자 전직중..
post-custom-banner

0개의 댓글