Database/SQL

[SQLD] 데이터 모델링

gangintheremark 2023. 8. 30. 21:07
728x90

데이터 모델링의 이해

데이터 모델링

  • 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
  • 현실세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정
  • 데이터베이스를 구축하기 위한 분석/설계의 과정

데이터 모델링의 특징

  • 추상화 : 현실세계를 일정한 형식에 맞춰 표현
  • 단순화 : 복잡한 현실을 제한된 언어나 표기법을 통해 이해하기 쉽게 표현
  • 정확화 : 애매모호함을 배제하고 누구나 이해 가능하도록 정확하게 표현
💡 단추정!

데이터 모델링을 하는 주요 이유

  • 분석된 모델을 가지고 데이터베이스를 생성하여 개발 및 데이터 관리에 사용
  • 업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현
  • 업무의 흐름을 설명하고 분석

데이터 모델링을 할 때 유의점

  • 중복 : 여러 장소에 같은 정보를 저장하지 않도록
  • 비유연성 : 데이터의 정의를 데이터의 사용 프로세스와 분리
  • 비일관성 : 데이터 간의 상호 연관관계를 명확하게 정의하여 일관성있게
    💡 사용자가 처리하는 프로세스/프로그램과 테이블의 연계성을 높이는 것은 부적절

 

데이터 모델링의 단계

데이터 모델링 단계 설명
개념적 모델링 - 추상화 수준이 높은 수준의 모델링
- 전사적 데이터 모델링, EA 수립시 많이 이용
- 업무 측면에서 모델링
논리적 모델링 - 구축하고자 하는 업무에 대해 key, 속성, 관계 등 정확하게 표현
- 재사용성이 높음
물리적 모델링 - 실제로 데이터베이스에 이식하도록 성능, 보안, 가용성을 고려하여 데이터베이스 구축

 

데이터 모델링 관점

관점 설명
데이터 - 비즈니스 프로세스에서 사용되는 데이터
- 구조 분석, 정적 분석
프로세스 - 비즈니스 프로세스에서 수행하는 작업
- 시나리오 분석, 도메인 분석, 동적 분석
데이터와 프로세스 - CRUD 분석

 

ERD (Entity Relationship Diagram)

  • 1976년 피터첸이 Entity-Relatioship Model 표기법을 만듦
  • 데이터 모델링의 표준으로 사용되며 엔터티와 엔터티 간의 관계를 정의
  • 중요한 엔터티는 가급적 왼쪽 상단에 배치

 

ERD 작성절차

엔터티 도출

엔터티 배치

엔터티 간 관계설정

관계명 기술

⑤ 관계 참여도 표현

⑥ 관계의 필수여부

 

데이터 모델링 고려사항

  • 데이터 모델의 독립성
    • 중복된 데이터 제거
    • 정규화 : 데이터 중복을 제거하는 방법
  • 고객 요구사항의 표현
    • 고객의 요구사항을 간결하고 명확하게 표현
  • 데이터 품질 확보
    • 데이터 표준을 정의하고 표준 준수율 관리

3중 스키마

스키마

데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것. 개체의 특성을 나타내는 속성 Attribute , 속성들의 집합으로 이뤄진 개체 Entity , 개체 사이에 존재하는 관계 Relation 에 대한 정의와 이들이 유지해야할 제약조건을 기술

  • 데이터베이스의 독립성을 확보하기 위한 방법
  • 3단계 계층으로 분리해서 독립성을 확보하는 방법으로, 각 계층을 뷰(View)라고 함
스키마 설명
개념스키마 - 설계자 관점, 사용자 전체 집단의 데이터베이스 구조
- 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현
외부스키마 = 서브스키마 - 사용자 관점, 업무상 관련이 있는 데이터 접근
- 관련 데이터베이스의 뷰(View) 표시
- 현실세계에 존재하는 데이터들을 어떤 형식, 구조, 배치를 통해 사용자에게 보여줄 것인가
내부 스키마 - 개발자 관점, 데이터베이스의 물리적 저장 구조
- 데이터 저장 구조, 레코드 구조, 디스크 구조, 필드 정의, 인덱스 등 의미

엔터티 (Entity)

엔터티(Entity)

  • 업무에서 관리해야 하는 데이터 집합

엔터티 특징

  • 엔터티는 두 개 이상의 속성과 두 개 이상의 인스턴스를 가져야함
  • 해당 업무에서 필요하고 관리하고자 하는 정보여야하고 이용되어야함
  • 유일한 식별자에 의해 식별이 가능해야함
  • 다른 엔터티와 최소 한 개 이상의 관계가 있어야함 (단, 통계성 엔터티나 코드성 엔터티는 생략가능)

엔터티 종류

  • 유형과 무형에 따른 종류 ⇒ 물리적 형태의 존재 여부
종류 설명
유형 엔터티 - 물리적 형태가 있음
- 업무에서 도출되며 지속적으로 사용되는 엔터티
- 예) 고객, 사원, 부서, 상품
개념 엔터티 - 개념적으로 사용되는 엔터티
- 물리적 형태가 없음
- 예) 거래소 종목, 생명보험 상품
사건 엔터티 - 비즈니스 프로세스를 실행하면서 생성되는 엔터티
- 예) 결제, 취소, 수수료 청구
  • 발생 시점에 따른 종류
종류 설명
기본 엔터티 = 키 엔터티 - 다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가짐
- 다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성이 가능하고 타 엔터티의 부모 역할을 하게 됨
- 예) 고객, 사원, 부서, 상품
중심 엔터티 - 기본 엔터티로부터 발생되고 행위 엔터티를 생성하는 것
- 예) 계좌, 주문, 취소, 체결
행위 엔터티 - 2개 이상의 엔터티로부터 발생하는 것
- 예) 주문 이력, 체결 이력

출처) https://starrykss.tistory.com/1612

엔터티 명칭 부여

  • 현업 업무에서 사용하는 용어 이용
  • 약어 사용하지 않기
  • 단수명사 사용
  • 유일한 이름 부여
  • 엔터티 생성 의미대로 이름 부여

속성 (Attribute)

속성(Attribute)

속성이란 업무에서 필요로 하는 인스턴스에서 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위

 

속성의 특징

  • 엔터티에 대해 자세하고 구체적인 정보 표현
  • 하나의 엔터티는 두 개 이상의 속성을 갖음
  • 속성도 집합이다
  • 하나의 인스턴스에서 각각의 속성은 한 개의 속성값만 갖음

 

속성의 종류

  • 분해 여부에 따른 속성의 분류
속성 설명
단일 속성 - 하나의 의미로 구성
복합 속성 - 여러 개의 의미
- 예) 주소 (시, 군, 동 등으로 분해)
다중 속성 - 속성에 여러 개의 값을 가질 수 있는 것
- 다중값 속성은 엔터티로 분해
- 예) 상품 리스트
  • 특성에 따른 속성의 분류
특징 설명
기본 속성 - 일반적인 속성
설계 속성 - 업무상 필요한 데이터 외 데이터 모델링을 위해 속성을 새로 만들거나 변형하여 정의
- 예) 상품코드 01 02 ...
파생 속성 - 다른 속성의 값을 계산하여 저장하는 속성
- 데이터를 조회할 때 빠른 성능을 낼 수 있도록 하기 위한 속성
- 예) 합계, 평균

속성 명칭 부여

  • 해당 업무에서 사용하는 이름
  • 서술식X
  • 약어 가급적 사용X
  • 유일성 확보
  • 복합 명사 사용하여 구체적으로 명명
💡 엔터티, 인스턴스, 속성, 속성값의 관계
- 한 개 이상의 엔터티는 두 개 이상의 인스턴스의 집합
- 한 개의 엔터티는 두 개 이상의 속성
- 한 개의 속성은 한 개의 속성값

 

도메인(Domain)

  • 속성이 가질 수 있는 값의 범위나 데이터타입과 크기 그리고 제약사항을 지정

 

관계 (Relation)

관계의 종류

1. 존재에 의한 관계

  • 엔터티 간의 상태 의미
  • 예) 고객은 관리점에 소속된다.

2. 행위에 의한 관계

  • 엔터티 간에 어떤 행위가 있는 것
  • 예) 계좌를 개설하고 주문을 발주한다.
💡 ERD에서는 구분하지 않고 단일화된 표기법으로 표현.
💡 UML의 클래스 다이어그램에서는 연관관계와 의존관계로 표현하며 실선과 점선의 표기법으로 표현

 

관계의 표기법

  • 관계명
  • 관계차수 :  1:1  1:M   M:N  관계의 기수성 표현
  • 관계 선택사양 : 필수관계, 선택관계

관계를 체크하는 사항

  • 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?
  • 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
  • 업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?
  • 업무기술서, 장표에 관계연결에 대한 규칙이 서술되있는가?

관계 읽기

  • 기준(Source) 엔터티를 한 개(One) 또는 각(Each)으로 읽는다
  • 대상(Target) 엔터티의 관계참여도를 읽는다
  • 관계선택사양과 관계명을 읽는다

식별관계와 비식별관계 비교

항목 식별자관계 비식별자관계
목적 강한 연결관계 표현 약한 연결관계 표현
자식 주식별자 영향 자식 주식별자 구성에 포함 자식 일반 속성에 포함
표기법 실선  점선
연결 고려사항 - 반드시 부모엔터티 종속
- 자식 주식별자에 부모 주식별자 포함 필요
- 상속받은 주식별자 속성을 타엔터티에 이전 필요
- 다른 엔터티에게 기본키를 공유
- 약한 종속관계
- 자식 주식별자 구성을 독립적으로 구성
- 자식 주식별자 구성에 부모 주식별자 부분 필요
- 상속받은 주식별자 속성을 타엔터티에 차단 필요
- 부모쪽의 관계참여가 선택관계

 

비식별자 관계인 경우

  • 자식엔터티에서 받은 속성이 반드시 필수가 아니기 때문에 부모 없는 자식이 생성될 수 있는 경우
  • 엔터티별로 데이터의 생명주기(Life Cycle)를 다르게 관리할 경우
  • 여러 개의 엔터티가 하나의 엔터티로 통합되어 표현되었는데 각각의 엔터티가 별도의 관계를 가질 경우
  • 자식엔터티의 별도의 주식별자를 생성하는 것이 더 유리하다고 판단되는 경우

 

엔터티 식별자

주식별자를 지정할 때 고려할 사항

  • 유일성 : 주식별자에 의해 엔터티내 모든 인스턴스들이 유일하게 구분되어야함
  • 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수
  • 불변성 : 지정된 주식별자의 값은 자주 변하지 않는 것
  • 존재성 : 주식별자가 지정되면 반드시 값이 들어와야 함
💡 명칭, 내역 등과 같은 이름으로 기술되는 것들은 주식별자로 지정하지 않는다

식별자의 종류

분류 식별자 설명
대표성여부 주식별자 - 유일성과 최소성을 만족하는 엔터티를 대표하는 식별자
- 다른 엔터티와 참조 관계로 연결 가능
보조식별자 - 유일성과 최소성은 만족하지만 대표성을 만족하지 못하는 식별자
- 참조 관계 연결X
스스로 생성여부 내부식별자 엔터티 내부에서 스스로 생성되는 식별자
외부식별자 다른 엔터티와의 관계로부터 받아오는 식별자
속성의 수 단일식별자 하나의 속성으로 구성된 식별자
복합식별자 둘 이상의 속성으로 구성된 식별자
대체 여부 본질식별자 비즈니스 프로세스에 의해 만들어지는 식별자
인조식별자 - 인위적으로 만들어지는 식별자
- 순서번호(Sequence Number)을 사용해서 식별자 생성

 

키의 종류

  • 기본키 : 후보키 중에서 엔터티를 대표할 수 있는 키
  • 후보키 : 유일성과 최소성을 만족하는 키
  • 슈퍼키 : 유일성은 만족하지만, 최소성을 만족하지 않는
  • 대체키 : 여러 개의 후보키 중에서 기본키를 선정하고 남은 키
  • 외래키 : 하나 혹은 다수의 다른 테이블의 기본키 필드를 가리키는 것. (참조무결성 확인위해 사용)
728x90