Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

그라가승훈

[데이터베이스 설계와 구축] - 논리설계 01. 데이터 모델링 주요 개념 본문

DataBase

[데이터베이스 설계와 구축] - 논리설계 01. 데이터 모델링 주요 개념

그라가승훈 2022. 8. 17. 01:13

1. 데이터 모델링

데이터 모델링이란
정보화 시스템을 구축하기 위해 어떤 데이터가 존재하는지 또는 업무에 필요한 정보는 무엇인지 분석하는 방법

- 모델링에  3가지 중요한 요소 

  • 데이터 관점 - 업무가 어떤 데이터와 관련이 있는지, 데이터 간의 관계는 무엇인지에 대해서 모델링하는 방법(What, Data)
  • 프로세스 관점 - 업무를 통해 어떤 일을 처리하는지, 무엇을 해야 하는지를 모델링하는 방법(How, Process)
  • 데이터와 프로세스의 상관 관점 - 업무에서 일을 처리하는 방법에 따라 데이터가 어떻게 영향을 받는지 모델링하는 방법(Interaction)

- 데이터 모델링을 진행할 때 중요한 3가지 개념

  • 업무가 관여하는 어떤 것 (Things) ex) 이주일, 심순애
  • 업무가 관여하는 어떤 것간의 관계 (Relationship) ex) 사랑하는 사이
  • 어떤 것의 성격 (Attributes) ex) 키 180cm, 친절, 세심, 활달함
개념 타입/클래스 어커런스/인스턴스
어떤 것 엔티티타입 엔티티
어떤 것간의 관계 관계 페어링
어떤 것의 성격 속성 속성값

2. 엔티티타입

- 엔티티타입의 개념

엔티티타입이란 "업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 것으로 영속적으로 존재하는 단위"

엔티티 타입은 엔티티의 집합이라고 할 수 있고, 엔티티는 엔티티타입에 속한 인스턴스 하나에 해당한다.

엔티티타입 엔티티
강의실 101호
102호
과목 J2EE
DATA MODELING
강사 이강사
김강사

- 엔티티타입의 특징

  1. 반드시 시스템을 구축하고자 하는 업무에서 필요하고 관리하고자 하는 정보여야 한다.
    • 병원 -> 환자 O , 회사 -> 환자 X
  2. 유일한 식별자에 의해 식별이 가능해야 한다.
  3. 영속적으로 존재하는 엔티티의 집합이 되어야 한다.
    • "한 개"가 아니라 "두 개 이상"이라는 집합 개념, 엔티티타입 하나는 여러 개의 엔티티를 포함한다.
  4. 업무 프로세스는 그 엔티티타입을 반드시 이용해야 한다.
  5. 엔티티타입에는 반드시 속성이 포함되어야 한다.
  6. 엔티티타입은 다른 엔티티타입과 최소 한 개 이상의 관계가 있어야 한다.

- 엔티티타입의 분류

엔티티타입은 그 자체의 성격에 따라 분류(유무형에 따른 분류) 하거나 업무를 구성하는 모습에 따라 구분(발생 시점에 따른 분류)한다.

  • 유무형에 따른 분류
    • 유형(Tangible) 엔티티타입
      • 물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔티티타입
      • 사원, 물품, 강사 등
    • 개념(Conceptual) 엔티티타입
      • 물리적인 형태가 없고, 관리해야 할 개념적 정보로 구분되는 엔티티타입
      • 조직, 상품, 장소 등
    • 사건(Event) 엔티티타입
      • 업무를 수행에 따라 발생되는 엔티티타입으로 각종 통계자료에 이용될 수 있다.(발생시점에 따른 분류와 전개방식 통일 권고)
      • 주문, 청구, 미납 등 
  • 발생 시점에 따른 분류
    • 기본 엔티티타입
      • 업무에 원래 존재하는 정보로서 독립적으로 생성되며 다른 엔티티타입의 부모 역할을 한다.
    • 중심 엔티티타입
      • 기본 엔티티타입에서 발생되고 그 업무에서 중심적인 역할을 한다.
      • 데이터양이 많으며 다른 엔티티타입과의 관계를 통해 많은 행위 엔티티타입을 생성한다.
    • 행위 엔티티타입
      • 두 개 이상의 부모 엔티티타입에서 발생되고 내용이 자주 바뀌거나 데이터양이 증가한다.
      • 상세 설계 단계나 프로세스와 상관 모델링을 진행하면서 도출될 수 있다.

- 엔티티타입의 명명

  • 가능하면 협업에서 사용하는 용어를 사용한다.
  • 가능하면 약어를 사용하지 않는다.
  • 단순 명사를 사용한다.
  • 엔티티타입에 부여되는 이름은 유일해야 한다.
  • 가급적 엔티티타입이 생성되는 의미에 따라 이름을 부여한다.
    • 고객이 제품을 주문할 때 발생하는 행위 엔티티타입의 경우 고객 제품이라고 하기보다는 주문 제품 또는 주문 목록이 직관적이다.

3. 속성

- 속성의 개념

  • 업무에 필요한 엔티티에서 관리하고자 하는, 더 이상 분리되지 않는 최소의 데이터 단위
  • 엔티티타입(사원), 엔티티(홍길동), 속성(이름, 주소, 생년월일), 속성값(홍길동, 인천, 97년 01월 05일)

- 엔티티타입, 엔티티, 속성, 속성값에 대한 관계

  • 규칙 1. 한 개의 엔티티타입은 두 개 이상의 엔티티 집합이어야 한다.
  • 규직 2. 한 개의 엔티티는 두 개 이상의 속성을 갖는다.
  • 규칙 3. 한 개의 속성은 한 개의 속성값을 갖는다.

- 속성의 분류

  • 속성의 특성에 따른 분류
    • 기본 속성
      • 업무로부터 추출한 모든 속성에 해당하며, 엔티티타입에 가장 일반적이고 많은 속성을 차지한다.
      • 설계 속성(코드성 데이터, 엔티티타입을 식별하기 위한 일련번호), 파생 속성(다른 속성을 계산하거나 영향을 받아 생성된 속성)을 제외한 모든 속성이다.
    • 설계 속성
      • 업무에 필요한 데이터 이외에 데이터 모델링을 위해 업무를 규칙화하려고 속성을 새로 만들거나 변형하여 정의하는 속성
      • 코드 속성은 원래 속성을 업무의 필요에 의해 변형하여 만든 설계 속성
      • 일련번호와 같은 속성은 Unique한 식별자를 부여하기 위해 모델에서 새로 정의하는 설계 속성
    • 파생 속성
      • 다른 속성에 영향을 받아 발생하는 속성으로서 보통 계산된 값이 이에 해당한다.
  • 엔티티 구성방식에 따른 분류
    • 엔티티를 식별할 수 있는 속성을 PK속성
    • 다른 엔티티와의 관계에서 포함된 속성을 FK속성
    • 엔티티에 포함되어 있고 PK, FK에 포함되지 않는 속성을 일반속성

- 속성의 명명

  1. 해당 업무에서 사용하는 이름을 부여한다.
    • 속성명을 부여할 때는 현업에서 사용하는 이름을 부여하는 것이 가장 중요하다.
  2. 서술식 속성명은 사용하지 않는다.
    • 일반적으로 서술식 속성명은 사용하지 말아야 한다. 명사형을 이용하고 수식어가 많이 붙지 않도록 유의
  3. 약어 사용은 가급적 자제한다.
    • 업무에서 사용하지 않거나 공용화하지 않은 약어는 사용하지 않는 것이 좋다.
  4. 엔티티타입에서 유일하게 식별가능 하도록 지정한다.
    • 가능하면 모든 속성의 이름은 유일하게 작성하는 것이 좋다.

4. 식별자

- 식별자 개념

식별자란 여러 개의 집합체를 담고 있는 하나의 엔티티타입에서 각가의 엔티티를 구분할 수 있는 결정자다.

- 식별자 특징

  1. 식별자에 의해 엔티티타입 내 모든 엔티티들이 유일하게 구분되어야 한다.
  2. 특정 엔티티타입에 식별자가 지정되면 그 식별자는 변하지 않아야 한다.
  3. 주 식별자의 경우 식별자가 지정되면 주 식별자 속성에 반드시 데이터값이 있어야 한다.

- 식별자 구분

대표성 여부 스스로 생성 여부 단일 속성 여부 대체 여부
주 식별자 / 보조 식별자 내부 식별자 / 외부 식별자 단일 식별자 / 복합 식별자 원조 식별자 / 대리 식별자
  • 주 식별자 / 보조 식별자
    • 주 식별자나 보조 식별자 모두 엔티티타입의 엔티티를 유일하게 식별할 수 있게하는 특징이 있다.
    • 물리 테이블에서는 주 식별자가 PK역할을 하고 보조 식별자는 유니크 인덱스로 지정되어 사용한다.
    • 엔티티타입에서 엔티티를 유일하게 식별할 수 있는 속성이 두 개 이상일 때 해당 업무에 적합한 속성을 주식별자로 두고, 다른 속성은 보조 식별자로 활용한다.
      ex) 카드사의 고객 테이블에 고객의 카드번호, 주민등록번호 둘 중 카드사 특성상 카드번호를 주 식별자로 두고 주민등록번호를 보조 식별자로 활용할 수 있다.
  • 내부 식별자 / 외부 식별자
    • 내부 식별자는 자신의 엔티티타입 내에서 스스로 생성되어 존재하는 식별자를 말한다.
    • 외부 식별자는 자신의 엔티티타입으로부터 다른 엔티티타입을 찾아가는 FK 역할을 한다.
  •  단일 식별자 / 복합 식별자
    • 주 식별자의 구성이 한 가지 속성으로만 이루어진 경우를 단일 식별자라고 하고, 두 개 이상의 속성으로 구성된 경우를 복합 식별자라고 한다.
    • 주문 엔티티타입은  주문번호의 속성이 주 식별자 역할을 하므로 단일 식별자
    • 주문 목록 엔티티타입은 주문번호와 제품번호 속성을 이용하여 하나의 유일한 식별자 역할을 하므로 복합 식별자
  • 원조 식별자 / 대리 식별자
    • 대리 식별자인 경우
      • 주 식별자의 속성이 복합 식별자일 경우 여러 개의 속성을 묶어 하나의 속성으로 만들어 활용하는 경우
      • 주 식별자 속성을 일반 속성으로 내리고, 일련번호 형태를 사용하는 경우

5. 관계

- 관계의 개념

두 개의 엔티티타입 사이의 논리적인 관계, 즉 엔티티와 엔티티가 존재의 형태나 행위로서 서로에게 영향을 주는 것을 말한다.

  • 존재에 의한 관계
    • 사원은 부서에 소속된다. 이 것은 사원의 엔티티 자체가 어느 팀의 부서에 소속되어 있기 때문에 나타나는 관계로 존재 형태에 의한 관계가 된다.
    • 엔티티타입 분류 방법기본 엔티티타입 사이의 관계는 많은 경우 존재에 의한 관계가 형성된다.
  • 행위에 의한 관계
    • 고객 엔티티타입과 주문 엔티티타입에서 고객이 "주문한다" 라는 행위로 주문 엔티티타입에서 주문번호가 생성되기 때문에 두 엔티티타입 사이의 관계는 행위에 의한 관계가 된다.
    • 엔티티타입 분류 방법중심, 행위 엔티티타입의 경우 행위에 의한 관계가 많이 형성된다.

- 관계 패어링

각각의 엔티티들은 자신이 관련된 엔티티들과 관계의 어커런스로 참여하는 형태를 관계 패어링이라 한다.

- 관계의 명명

각각의 관계에는 두 개의 멤버십이 있다. 그리고 각각의 멤버십에 의해 두가지 관점으로 표현될 수 있다.

  • 애매한 동사를 피하라
    • '관계 된다.' '관련이 있다.' 등은 구체적이지 못하고 어떤 행위가 있는지 또는 두 참여자간  어떤 상태가 존재하는지 파악할 수 없다.
  • 현재형으로 표현하라
    • '수강을 신청했다.' '강의를 할 것이다.' 라는 표현이 아닌 '수강을 신청한다.' '강의를 한다.' 로 표현해야 한다.

- 관계의 카디낼리티

  • 1:1 (One To One) 관계를 표시하는 방법

  • 1:M (One To Many) 관계를 표시하는 방법

  • M:N (Many To maNy) 관계를 표시하는 방법
    • 하나의 주문서에는 여러 개의 제품을 포함할 수 있고, 한 제품은 여러 개의 주문서를 통해 신청될 수 있다.

- 관계의 종류

작성중...

'DataBase' 카테고리의 다른 글

[데이터베이스] NoSQL(비관계형) 이란?  (0) 2022.07.19
Comments