728x90
데이터 모델링의 이해
데이터 모델링
- 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
- 현실세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정
- 데이터베이스를 구축하기 위한 분석/설계의 과정
데이터 모델링의 특징
- 추상화 : 현실세계를 일정한 형식에 맞춰 표현
- 단순화 : 복잡한 현실을 제한된 언어나 표기법을 통해 이해하기 쉽게 표현
- 정확화 : 애매모호함을 배제하고 누구나 이해 가능하도록 정확하게 표현
💡 단추정!
데이터 모델링을 하는 주요 이유
- 분석된 모델을 가지고 데이터베이스를 생성하여 개발 및 데이터 관리에 사용
- 업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표현
- 업무의 흐름을 설명하고 분석
데이터 모델링을 할 때 유의점
- 중복 : 여러 장소에 같은 정보를 저장하지 않도록
- 비유연성 : 데이터의 정의를 데이터의 사용 프로세스와 분리
- 비일관성 : 데이터 간의 상호 연관관계를 명확하게 정의하여 일관성있게
💡 사용자가 처리하는 프로세스/프로그램과 테이블의 연계성을 높이는 것은 부적절
데이터 모델링의 단계
데이터 모델링 단계 | 설명 |
---|---|
개념적 모델링 | - 추상화 수준이 높은 수준의 모델링 - 전사적 데이터 모델링, EA 수립시 많이 이용 - 업무 측면에서 모델링 |
논리적 모델링 | - 구축하고자 하는 업무에 대해 key, 속성, 관계 등 정확하게 표현 - 재사용성이 높음 |
물리적 모델링 | - 실제로 데이터베이스에 이식하도록 성능, 보안, 가용성을 고려하여 데이터베이스 구축 |
데이터 모델링 관점
관점 | 설명 |
---|---|
데이터 | - 비즈니스 프로세스에서 사용되는 데이터 - 구조 분석, 정적 분석 |
프로세스 | - 비즈니스 프로세스에서 수행하는 작업 - 시나리오 분석, 도메인 분석, 동적 분석 |
데이터와 프로세스 | - CRUD 분석 |
ERD (Entity Relationship Diagram)
- 1976년 피터첸이 Entity-Relatioship Model 표기법을 만듦
- 데이터 모델링의 표준으로 사용되며 엔터티와 엔터티 간의 관계를 정의
- 중요한 엔터티는 가급적 왼쪽 상단에 배치
ERD 작성절차
① 엔터티 도출
② 엔터티 배치
③ 엔터티 간 관계설정
④ 관계명 기술
⑤ 관계 참여도 표현
⑥ 관계의 필수여부
데이터 모델링 고려사항
- 데이터 모델의 독립성
- 중복된 데이터 제거
- 정규화 : 데이터 중복을 제거하는 방법
- 고객 요구사항의 표현
- 고객의 요구사항을 간결하고 명확하게 표현
- 데이터 품질 확보
- 데이터 표준을 정의하고 표준 준수율 관리
3중 스키마
스키마
데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것. 개체의 특성을 나타내는 속성 Attribute
, 속성들의 집합으로 이뤄진 개체 Entity
, 개체 사이에 존재하는 관계 Relation
에 대한 정의와 이들이 유지해야할 제약조건을 기술
- 데이터베이스의 독립성을 확보하기 위한 방법
- 3단계 계층으로 분리해서 독립성을 확보하는 방법으로, 각 계층을 뷰(View)라고 함
스키마 | 설명 |
---|---|
개념스키마 | - 설계자 관점, 사용자 전체 집단의 데이터베이스 구조 - 모든 사용자 관점을 통합한 조직 전체 관점의 통합적 표현 |
외부스키마 = 서브스키마 | - 사용자 관점, 업무상 관련이 있는 데이터 접근 - 관련 데이터베이스의 뷰(View) 표시 - 현실세계에 존재하는 데이터들을 어떤 형식, 구조, 배치를 통해 사용자에게 보여줄 것인가 |
내부 스키마 | - 개발자 관점, 데이터베이스의 물리적 저장 구조 - 데이터 저장 구조, 레코드 구조, 디스크 구조, 필드 정의, 인덱스 등 의미 |
엔터티 (Entity)
엔터티(Entity)
- 업무에서 관리해야 하는 데이터 집합
엔터티 특징
- 엔터티는 두 개 이상의 속성과 두 개 이상의 인스턴스를 가져야함
- 해당 업무에서 필요하고 관리하고자 하는 정보여야하고 이용되어야함
- 유일한 식별자에 의해 식별이 가능해야함
- 다른 엔터티와 최소 한 개 이상의 관계가 있어야함 (단, 통계성 엔터티나 코드성 엔터티는 생략가능)
엔터티 종류
- 유형과 무형에 따른 종류 ⇒ 물리적 형태의 존재 여부
종류 | 설명 |
---|---|
유형 엔터티 | - 물리적 형태가 있음 - 업무에서 도출되며 지속적으로 사용되는 엔터티 - 예) 고객, 사원, 부서, 상품 |
개념 엔터티 | - 개념적으로 사용되는 엔터티 - 물리적 형태가 없음 - 예) 거래소 종목, 생명보험 상품 |
사건 엔터티 | - 비즈니스 프로세스를 실행하면서 생성되는 엔터티 - 예) 결제, 취소, 수수료 청구 |
- 발생 시점에 따른 종류
종류 | 설명 |
---|---|
기본 엔터티 = 키 엔터티 | - 다른 엔터티로부터 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가짐 - 다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성이 가능하고 타 엔터티의 부모 역할을 하게 됨 - 예) 고객, 사원, 부서, 상품 |
중심 엔터티 | - 기본 엔터티로부터 발생되고 행위 엔터티를 생성하는 것 - 예) 계좌, 주문, 취소, 체결 |
행위 엔터티 | - 2개 이상의 엔터티로부터 발생하는 것 - 예) 주문 이력, 체결 이력 |
엔터티 명칭 부여
- 현업 업무에서 사용하는 용어 이용
- 약어 사용하지 않기
- 단수명사 사용
- 유일한 이름 부여
- 엔터티 생성 의미대로 이름 부여
속성 (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
'Database > SQL' 카테고리의 다른 글
[SQLD] SQL 기본 I (0) | 2023.09.03 |
---|---|
[SQLD] 데이터 모델과 성능 (1) | 2023.09.01 |
[Oracle/SQL] SQL Developer 계정 생성 (0) | 2023.08.11 |
[SQL] 인덱스 (INDEX) (0) | 2023.08.01 |
[SQL] 시퀀스 (Sequence) (0) | 2023.08.01 |