개발일지
제 1장. 데이터 모델링의 이해 본문
데이터모델링
설계과정에서 시스템의 중요한 개념을 논리적인 데이터 모델을 구성하는 작업을 의미하며, 일반적으로 물리적인 데이터베이스 모델 구현, 시스템 데이터베이스 반영 과정을 포함한다. 데이터 모델링은 단순 데이터를 다루는 것 뿐만 아니라 시스템의 구체적인 Flow를 정의하는데도 매우 큰 영향을 미친다.
데이터모델링이란
- 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
- 현실세계의 데이터(what)에 대해 약속된 표기법으로 표현하는 과정
- 데이터베이스를 구축하기 위한 분석/설계의 과정
데이터모델링의 3요소
Thing, Attributes, Relationship
사물, 속성, 관계
데이터모델링 특징
- 추상화(모형화) : 현실세계를 일정한 형식에 맞추어 표현한다.
- 단순화 : 복잡한 현실을 제한된 언어나 표기법을 통해 이해하기 쉽게 한다.
- 명확화(정확화) : 애매모호함을 제거하고 누구나 이해가 가능하도록 정확하게 현상을 기술한다.
데이터모델링 유의사항
- 중복(Duplication) : 데이터 모델은 같은 데이터를 사용하는 사람, 시간, 그리고 장소를 파악하는데 도움을 준다. 이러한 지식 응용은 데이터베이스가 여러 장소에 같은 정보를 저장하는 잘못을 하지 않도록 한다.
- 비유연성(Inflexibility) : 데이터 모델을 어떻게 설계했느냐 에 따라 사소한 업무변화에도 데이터 모델이 수시로 변경됨으로써 유지보수의 어려움을 가중시킬 수 있다. 데이터의 정의를 데이터의 사용 프로세스와 분리함으로써 데이터 모델링은 데이터 혹은 프로세스의 작은 변화가 애플리케이션과 데이터베이스에 중대한 변화를 일으킬 수 있는 가능성을 줄인다.
- 비일관성(Inconsistency) 데이터의 중복이 없더라도 비일관성은 발생한다. 예를 들어 신용 상태에 대한 갱신 없이 고객의 납부 이력 정보를 갱신하는 것이다. 개발자가 다른 데이터와 모순된다는 고려 없이 일련의 데이터를 수정할 수 있기 때문이다. 데이터 모델링을 할 때 데이터와 데이터 간 상호 연관 관계에 대한 명확한 정의는 이러한 위험을 사전에 예방할 수 있도록 해준다. 사용자가 처리하는 프로세스 혹은 이와 관련된 프로그램과 테이블의 연계성을 높이는 것은 데이터 모델이 업무 변경에 대해 취약하게 만드는 단점에 해당한다.
데이터모델링 과정
- 개념적 데이터 모델링 : 추상화 수준이 높고 업무중심적이고 포괄적인 수준의 모델린 진행. 전사적 데이터 모델링, EA수립시 많이 이용
- 논리적 데이터 모델링 : 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현, 재사용성이 높음
- 물리적 데이터 모델링 : 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계
데이터베이스 스키마 구조 3단계
항목 내용 비고
외부스키마(External Schema) | - View 단계 여러 개의 사용자 관점으로 구성, 즉 개개 사용자 단계로서 개개 사용자가 보는 개인적 DB 스키마- DB의 개개 사용자나 응용프로그래머가 접근하는 DB 정의 | 사용자 관점접근하는 특성에 따른 스키마 구성 |
개념스키마(Conceptual Schema) | - 모든 사용자 관점을 통합한 조직 전체의 DB를 기술하는 것- 모든 응용시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB를 기술한 것으로 DB에 저장되는 데이터와 그들간의 관계를 표현하는 스키마 | 통합관점 |
내부스키마(Internal Schema) | - DB가 물리적으로 저장된 형식- 물리적 장치에서 데이터가 실제적으로 저장되는 방법을 표현하는 스키마 | 물리적 저장구조 |
ERD
데이터 모델에 대한 표기법으로 1976년 피터첸(Peter Chen)이 Entity-Relationship Model(E-R Model)이라는 표기법을 만들었다.
ERD 작성순서
① 엔터티를 그린다. ② 엔터티를 적절하게 배치한다. ③ 엔터티간 관계를 설정한다. ④ 관계명을 기술한다. ⑤ 관계의 참여도를 기술한다. ⑥ 관계의 필수여부를 기술한다.
ER 다이어그램 / ERD 기호 및 표기법 참고
https://mjn5027.tistory.com/43
엔터티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔터티는 두 개 이상의 인스턴스의 집합이어야 한다.
- 한 개의 엔터티는 두 개 이상의 속성을 갖는다.
- 하나의 인스턴스에서 각각의 속성은 한 개의 속성값을 갖는다.
엔터티(Entity)
필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것(Thing)
엔터티의 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다.
- 유일한 식별자에 의해 식별할 수 있어야 한다.
- 영속적으로 존재하는 인스턴스의 집합이어야 한다. ('한 개'가 아니라 '두 개 이상')
- 엔터티는 업무 프로세서에 의해 이용되어야 한다.
- 엔터티는 반드시 속성이 있어야 한다.
- 엔터티는 다른 엔터티와 최소한 한 개 이상의 관계가 있어야 한다.
발생시점에 따른 엔터티 분류
- 기본엔터티(Fundamental Entity)/키엔터티(Key Entity) : 그 업무에 원래 존재하는 정보로서 다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성이 가능하고 자신은 타 엔터티의 부모의 역할을 하게 된다. 다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가지게 된다. 예를 들어 사원, 부서, 고객, 상품, 자재 등이 기본엔터티가 될 수 있다.
- 중심엔터티(Main Entity) : 기본엔터티로부터 발생되고 그 업무에 있어서 중심적인 역할을 한다. 데이터의 양이 많이 발생되고 다른 엔터티와의 관계를 통해 많은 행위엔터티를 생성한다. 예를 들어 계약, 사고, 예금원장, 청구, 주문, 매출 등이 될 수 있다.
- 행위엔터티(Active Entity) : 두 개 이상의 부모엔터티로부터 발생되고 자주 내용이 바뀌거나 데이터량이 증가된다. 분석초기 단계에서는 잘 나타나지 않으며 상세 설계단계나 프로세스와 상관모델링을 진행하면서 도출될 수 있다. 예를 들어 주문목록, 사원변경이력 등이 포함된다.
속성
업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위
속성의 명칭 부여
- 해당업무에서 사용하는 이름을 부여 한다.
- 서술식 속성명은 사용하지 않는다.
- 약어사용은 가급적 제한한다.
- 전체 데이터모델에서 유일성 확보하는 것이 좋다. (반정규화, 통합 등의 작업에서 혼란을 방지할 수 있음)
속성의 특성에 따른 분류
- 기본속성 : 업무분석을 통해 바로 정의한 속성을 기본속성 (예: 원금, 예치기간, 이자율)
- 설계속성 : 원래 업무상 존재하지는 않지만 설계를 하면서 도출해내는 속성 (예: 예금분류)
- 파생속성 : 다른 속성으로부터 계산이나 변형이 되어 생성되는 속성 (예: 이자)
도메인
각 속성은 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인(Domain)이라하며, 엔터티 내에서 속성에 대한 데이터타입과 크기 그리고 제약사항을 지정하는 것이다.
관계
관계의 분류
- 관계는 존재에 의한 관계와 행위에 의한 관계로 구분될 수 있다.
- UML(Unified Modeling Language)에는 클래스다이어그램의 관계 중 연관관계(Association)와 의존관계(Dependency)가 있고 이것을 구분하여 연관관계는 실선으로 표현하고, 의존관계는 점선으로 표현한다.
- ERD 에서는 존재적 관계와 행위에 의한 관계를 구분하지 않고 단일화된 표기법을 사용한다.
관계의 표기법
- 관계명(Membership) : 관계의 이름
- 관계차수(Cardinality) : 1:1, 1:M, M:N
- 선택사양(Optionality) : 필수관계, 선택관계
관계 체크사항
- 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?
- 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
- 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
- 업무기술서, 장표에 관계연결을 가능하게 하는 동사(Verb)가 있는가?
관계 읽기
- 기준(Source) 엔터티를 한 개(One) 또는 각(Each)으로 읽는다.
- 대상(Target) 엔터티의 관계참여도 즉 개수(하나, 하나 이상)를 읽는다.
- 관계선택사양과 관계명을 읽는다.
식별자
식별자의 종류
- 주식별자(Primary Identifier)/보조식별자(Alternate Identifier) : 자신의 엔터티 내에서 대표성을 가지는가에 따라 구분
- 내부식별자/외부식별자(Foreign Identifier) : 엔터티 내에서 스스로 생성되었는지 여부에 따라 구분
- 단일식별자(Single Identifier)/복합식별자(Composit Identifier) : 단일 속성으로 식별이 되는가에 따라 구분
- 본질식별자/인조식별자 : 원래 업무적으로 의미가 있던 식별자 속성을 대체하여 일련번호와 같이 새롭게 만든 식별자를 구분
주식별자의 특징
- 유일성 : 주식별자에 의해 엔터티내에 모든 인스턴스들이 유일하게 구분되어야 한다.
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
- 불변성 : 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.
- 존재성 : 주식별자가 지정이 되면 반드시 값이 들어와야 한다. (Null 안 됨)
주식별자 도출기준
- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
- 복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
식별자와 비식별자관계 비교
항목 | 식별자관계 | 비식별자관계 |
목적 | 강한 연결관계 표현 | 약한 연결관계 표현 |
자식 주식별자 영향 | 자식 주식별자의 구성에 포함 | 자식 일반 속성에 포함 |
표기법 | 실선 표현 | 점선 표현 |
연결 고려사항 | - 반드시 부모엔터티 종속- 자식 주식별자구성에 부모 주식별자포함 필요- 상속받은 주식별자속성을 타 엔터티에 이전 필요 | - 약한 종속관계- 자식 주식별자구성을 독립적으로 구성- 자식 주식별자구성에 부모 주식별자 부분 필요- 상속받은 주식별자속성을 타 엔터티에 차단 필요- 부모쪽의 관계참여가 선택관계 |
[서적] SQL 자격검정 실전문제
참고
'Database > SQLD 자격증' 카테고리의 다른 글
2 SQL 기본 및 활용 - 3장 SQL 활용SQL 활용 JOIN, 계층형 질의, 셀프 조인, 서브쿼리, 그룹함수, 윈도우 함수, DCL, 절차형 SQL (0) | 2023.07.13 |
---|---|
2 SQL 기본 및 활용 - 2장 SQL 활용 (0) | 2023.07.13 |
2 SQL 기본 및 활용 - 1장 SQL 기본 (0) | 2023.07.13 |
1-2 데이터 모델과 성능 (0) | 2023.06.06 |