본문 바로가기

Study/Concepts

DAY 72. DB - DB 모델링

 

DB 모델링

 

모델링?

말 그대로 모델을 만드는 작업을 뜻한다.
즉, 현실 세계를 추상화, 단순화, 명확화 시켜서 표현하는 기법이다.
실체를 모델링하여 모델을 만들어 실체를 구현한다.

 

소프트웨어 개발과정

소프트웨어(프로그램) 개발 프로세스

요구사항 분석 —> 프로그램 설계 —> 프로그램 구현 —> 통합/테스트 —> 유지보수 (#분설구테유)

 

  • 정보전략 계획수립(ISP) : 프로그램 개발하고자 하는 고객사의 장단점 등 기업 분석
  • 업무 분석 : 작업의 관여물 작성시 어떤 식으로 흘러가는지 모델링 하는 작업, 클래스 다이어그램 유스케이스 다이어그램, 시퀀스 다이어그램 등 작성

 

  • 데이터 관점 순서
    1. 데이터 모델링
    2. 상관 모델링
    3. 물리 DB 설계
    4. DB 구축
    5. DB 튜닝
  • 프로세스 관점
    1. 프로세스 모델링
    2. 상관 모델링
    3. 프로그램(로직) 설계
    4. 프로그램 개발
    5. 프로그램 테스트

 

 

<데이터 관점>

  • 데이터 모델링 : 논리 DB 설계 —> 물리 DB 설계 —> DB 구축 —> DB 튜닝

 

<프로세스 관점>

  • 프로세스 모델링 : 단위 업무들에 대한 로직 처리 ( ex. 회원가입 서비스 구현 어떤 메소드에 어떤 코드를 구현하는지 모델링 하는 작업 )
  • RUN & 유지보수

 


 

DB 모델링 주요 개념

엔티티(Entity)

업무의 관심 대상이 되는 정보를 갖고 있거나 그에 대한 정보를 관리할 필요가 있는 유형이다.

무형의 사물(개체)

  • 유형 엔티티 : 물리적인 형태가 있는 엔티티(ex. 멤버, 사원, 직원, 상품, 거래처, 학생 등)
  • 무형 엔티티 : 물리적인 형태가 없고 개념적인 형태로 존재하는 엔티티(ex. 생산 계획, 부서 조직, 색상별 선호도 등)
  • 문서 엔티티 : 업무 절차 상에서 사용되는 문서나 장부같은 것 (ex. 거래명세서, 입출금 전표, 주문서 등)
  • 이력 엔티티 : 업무 상에서 반복적으로 이루어지는 행위나 사건의 내용을 일자 별, 시간 별로 정리한 것 (ex. 입출고 내역 등)
  • 코드 엔티티 : 무형 엔티티의 일종으로, 각종 코드를 관리하기 위한 엔티티 (ex. 색상 코드, 국가 코드, 직급 분류 코드 등)

 

속성(Attribute)

엔티티에서 관리해야 할 최소 단위 정보 항목(관심이 있는 항목)을 말한다.

엔티티는 하나 이상의 속성을 포함한다.

  • 기본 속성 : 업무 분석 과정에서 그 대상인 엔티티가 가져야 할 전체 속성들 중에 가장 큰 비율을 차지한다.
  • 유도 속성 : 다른 속성의 값들로부터 유도될 수 있는 속성 (ex. 포인트)
  • 설계 속성 : 외래키 같은 인위적인 식별자로써 설계를 보다 효과적으로 할 수 있는 속성이다.

 

인스턴스(Instance)

엔티티의 속성으로 실제로 구현된 하나의 값

 

 

✔️ 엔티티의 조건

  1. 업무의 관심 대상이 되는 사물이어야 한다.
  2. 두 개 이상의 인스턴스를 소유해야 한다.
  3. 마땅한 속성을 소유해야 된다. (속성이 하나 이상이 있어야 한다.)

 

✔️ 속성 명명 규칙

  1. 속성의 의미가 분명히 드러나게 작성해야 할 것 = 명확
  2. 해당 업무에서 사용하는 이름을 부여할 것
  3. 서술식(수식어, 소유격) X, 약어 X
  4. 엔티티에서 유일하게 식별 가능하도록 지정할 것 = 중복 X

 

◾ 관계

두 엔티티 사이의 관련성을 나타낸다. 엔티티 간의 관계를 설정함으로써 속성을 공유하게 된다. 공유하는 속성이 없다면 엔티티끼리 서로 관계 하지 않는다.

데이터의 발생 경로와 어떻게 데이터가 변화하는지를 표현할 수 있다.

 

◾ 카디널리티(Cardinality)

  • 각 엔티티에 속해 있는 인스턴스들 간에 수적으로 어떤 관계가 있는지 나타낸다.
  • 종류 —> 1:1, 1:N, M:N

 


 

주식별자(Primary Identifier)

엔티티 내에 있는 각각의 인스턴스를 구별하는 기준이다.

인스턴스를 구분할 수 있는 유일한 구분자의 역할을 한다.

엔티티를 만들 때는 항상 주식별자가 존재해야 한다.

주식별자는

▪️ 유일성(중복X),

▪️ 최소성(굳이 복합키로 두지말라),

▪️ 불변성(한 번 주식별자의 값을 부여했으면 변경하지말라),

▪️ **존재성(무조건 값이 있어야 한다=NOT NULL제약조건을 만족)**의 특징을 갖는다.

주식별자는 1개가 아니라 여러 속성일 수도 있다. (=복합키)

엔티티의 속성 중 주식별자 속성이 없다면 인위적으로 주식별자로서 사용할 새로운 속성을 만든다.

 

 

외래식별자(Foreign Identifier)

엔티티와 엔티티를 연결해주는 고리의 역할이다.

엔티티 간의 공유하는 상호 식별자 속성

관계가 있는 두 엔티티를 부모, 자식 엔티티로 구분한 뒤, 부모의 주식별자와 공통 속성이 자식에게도 존재하면 해당 속성을 외래식별자로 지정한다.

자식 엔티티에 부모 엔티티 주식별자 공통 속성이 없다면 → 자식에게 속성을 추가한 후에 외래식별자로 지정한다.