데이터 모델링의 이해 요약
1. 데이터 모델의 이해
> 데이터 모델링 정의
- 현실 세계의 데이터를 데이터 관점으로 업무 분석하는 기법
- 데이터베이스를 구축하기 위한 분석 및 설계의 과정
> 데이터 모델링 특징
1 ) 추상화
- 현실을 일정한 형식에 맞춰 간략하게 표현
2 ) 단순화
- 누구나 이해하기 쉽게 표현
3 ) 명확성
- 애매모호함을 배제하고 명확하게 한 가지 의미를 갖도록 표현
> 데이터 모델링 유의점
1 ) 중복
- 데이터베이스가 여러 장소에 같은 정보를 저장하지 않도록 한다.
2 ) 비유연성
- 데이터 정의를 프로세스와 분리해 데이터 혹은 프로세스의 변화가 DB에 큰 변화를 일으킬 가능성울 줄여야 함.
3 ) 비일관성
- 데이터와 데이터간 연관 관계에 대해 명확하게 정의해야 한다.
> 데이터 모델링 단계
1 ) 개념적 모델링
- 추상화 수준이 높고 업무 중심적인 포괄적인 수준의 모델링
엔티티와 속성을 도출하며 개념적 ERD를 작성하는 단계
2 ) 논리적 모델링
- Key, 속성, 관계 등을 정확히 표현하는 단계
정규화를 통해 재사용성을 높인다.
3 ) 물리적 모델링
- 실제 데이터베이스에 적용할 수 있도록 성능, 저장 등 물리적인 성격의 설계 단계
> 데이터 모델링 관점
1 ) 데이터 관점
- 업무가 어떤 데이터와 관련이 있는지 또는, 데이터간의 관계는 무엇인지에 대해 모델링
2 ) 프로세스 관점
- 업무가 실제 하고 있는 일은 무엇인지 또는, 무엇을 해야하는지 모델링
3 ) 데이터와 프로세스의 상관관점
- 업무가 처리하는 일의 방법에 따라 데이터는 어떤 영향을 받고 있는지 모델링
> 스키마 구조 3단계
1 ) 외부 스키마
- 사용자 관점, 응용 프로그래머가 데이터베이스에 접근하는 View 를 표현
2 ) 개념 스키마
- 설계자 관점, 모든 통합 관점을 가지고 있으며 DB 규칙과 구조를 표현
3 ) 내부 스키마
- 개발자 관점, 물리적 저장장치 입장에서 본 데이터베이스 구조이며 레코드 구조, 인덱스 등을 표현
> 데이터 모델의 표기법인 ERD 의 순서
① 엔티티 도출(그린다)
② 엔티티 배치
③ 엔티티간 관계 설정
④ 관계명을 기술
⑤ 관계의 참여도를 기술
⑥ 관계의 필수여부를 기술
2. 엔티티
> 엔티티 정의
- 업무에서 관리해야 하는 데이터 집합이며,
이는 개념, 사건, 장소 등의 명사이기도 하다.
> 엔티티 특징
1 ) 식별자
- 유일한 식별자가 있어야 한다 ( ex : 주민등록번호 )
2 ) 인스턴스 집합
- 2 개 이상의 인스턴스가 있어야 한다.
3 ) 속성
- 반드시 속성을 가지고 있어야 한다 ( ex : 고객 엔티티면 이름, 주소 등 )
4 ) 관계
- 다른 엔티티와 최소 한 개 이상의 관계를 가져야 한다 ( ex : 고객은 계좌를 개설한다 )
5 ) 업무
- 반드시 업무에서 관리되어야 할 집합이어야 한다 ( ex : 고객, 계좌 )
> 엔티티 분류
1 ) 유형과 무형에 따른 분류
유형 엔티티
- 업무에서 도출되는 지속적으로 사용되는 물리적 형태 엔티티 ( ex : 고객, 강사, 사원 )
사건 엔티티
- 업무를 수행함에 따라 생성되는 업무 관련 행위 형태의 엔티티, 각종 통계에 이용 가능 ( ex : 주문, 청구 )
개념 엔티티
- 오로지 개념적으로만 사용되는 엔티티 ( ex : 거래소 종목, 조직, 생명보험 상품 )
2 ) 발생 시점에 따른 분류
기본 엔티티
- 키 엔티티, 불리우며 독립적으로 생산되는 엔티티를 말함 ( ex : 고객, 강사, 사원 )
중심 엔티티
- 메인 엔티티, 기본 엔티티로부터 발생되며 업무에서 중심 역할을 수행해 행위 엔티티를 생성 ( ex : 주문, 결제, 취소 )
행위 엔티티
- 두 개 이상의 엔티티로부터 발생되는 엔티티 ( ex : 주문목록, 결제목록 )
3. 속성
> 속성 정의
- 엔티티가 가지는 항목이며 더 이상 분리되지 않는 데이터 단위
엔티티는 속성들에 의해 설명되어 진다
> 속성의 분류
1 ) 엔티티 구성에 따른 분류
PK 속성
- 엔티티를 식별할 수 있는 속성
FK 속성
- 다른 엔티티와의 관계에서 포함된 속성
일반 속성
- PK 속성, FK 속성에 포함되지 않은 속성
2 ) 분해 여부에 따른 분류
복합 속성
- 여러 개의 의미를 지닌 속성 ( ex : 주소 속성은 시, 구, 동 등 세부 속성들로 구성 가능 )
단일 속성
- 오로지 하나의 의미를 지닌 속성이며 하나의 속성은 한 개의 값만을 가질 수 있다 ( ex : 나이, 성별 등 )
다중값 속성
- 하나의 속성에 여러 개의 값을 가지는 경우다. 이는 정규화를 거쳐 별도의 엔티티를 생성해 관계로 연결해야 함.
( ex : 한 사람이 두 개의 계좌를 가질 수 있음. 이는 고객과 계좌로 엔티티를 분리해야 함 )
3 ) 특성에 따른 분류
기본 속성
- 업무로부터 추출한 모든 속성이며 엔티티의 속성 비율 중 가장 많은 비율을 차지한다.
설계 속성
- 업무상 필요하진 않지만 데이터 모델링을 위해 생성하거나 변형하여 정의하는 속성이다.
이는 일련번호와 같은 유일 값을 가진다. ( ex : 상품코드 )
파생 속성
- 다른 속성의 영향을 받아 발생하는 속성이며 주로 집계등의 속성이 이에 해당 ( ex : 평균, 합계 )
4. 관계
> 관계의 정의
엔티티 간의 관련성을 의미
> 관계의 유의점
- 두 개의 엔티티 사이에 연관 규칙이 존재하는가?
업무기술서, 장표에 관계 연결을 가능하게 하는 동사가 있는가?
업무기술서, 장표에 관계 연결 규칙이 서술되어 있는가?
두 개의 엔티티 사이에서 정보의 조합이 발생하는가?
> 관계의 분류
1 ) 존재에 의한 관계
- 두 개의 엔티티가 존재 여부에 대한 관계가 이루어진 상태 ( ex : 부서와 사원은 소속이라는 존재 관계를 이룸 )
2 ) 행위에 의한 관계
- 두 개의 엔티티가 어떤 행위의 관련성에 대해 관계가 이루어진 상태 ( ex : 고객과 상점은 구매라는 행위 관계를 이룸 )
> 관계의 표기법
1 ) 1대1 관계
- A 엔티티와 B 엔티티는 서로가 속성 하나씩만을 가지는 관계
( ex : 하나의 고객은 하나의 주민등록번호를 가짐, 하나의 주민등록번호 또한 하나의 고객만을 가짐 )
2 ) 1대N 관계
- 하나의 A 엔티티는 B 엔티티의 속성 하나를 가질 수 있고 B 엔티티는 A 엔티티의 여러 속성을 가지는 관계
( ex : 하나의 학생은 하나의 학과만을 가지지만, 하나의 학과는 여러 학생을 가질 수 있다 )
3 ) N대N 관계
- A 엔티티는 B 엔티티의 여러 속성을, B 엔티티는 A 엔티티의 여러 속성을 가질 수 있는 관계
( ex : 하나의 학생은 여러 은행의 통장을 가질 수 있고, 하나의 은행은 여러 고객을 가질 수 있다 )
5. 식별자
> 식별자 정의
- 하나의 엔티티에 구성되어 있는 여러 속성 중에 엔티티를 대표할 수 있는 속성
하나의 엔티티는 반드시 하나의 유일한 식별자가 존재해야 함
업무적으로 구분이 되는 정보이며 논리 데이터 모델링 단계에서 사용된다.
(키는 데이터베이스 테이블에 접근을 위한 매개체로, 물리 데이터 모델링 단계에서 사용된다)
* 여기서 키를 간단히 분류하면
후보키 : 유일성과 최소성을 만족하는 키
슈퍼키 : 유일성은 만족하지만 최소성을 만족하지 못하는 키
대체키 : 후보키 중 기본키를 제외하고 남은 나머지 키
외래키 : 다른 테이블의 기본 키 필드를 가리키며 참조 무결성이 특징인 키
> 식별자 특징
1 ) 유일성
- 식별자에 의해 엔티티 내에 모든 인스턴스들은 유일하게 구분되어야 함
2 ) 최소성
- 식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
3 ) 불변성
- 식별자가 한 번 지정되면 그 식별자의 값은 변하지 않아야 함
4 ) 존재성
- 식별자가 지정되면 반드시 식별자의 값이 존재해야 함
> 식별자 분류
1 ) 대표성 여부에 따른 분류
주식별자
- 유일성과 최소성을 만족하면서 엔티티를 대표하는 식별자이며 타 엔티티와 참조관계 연결 가능
보조식별자
- 유일성과 최소성을 만족하지만 엔티티를 대표하지 못해 타 엔티티와 참조관계 연결 불가능
2 ) 스스로 생성여부에 따른 분류
내부식별자
- 엔티티 내부에서 스스로 만들어지는 식별자
외부식별자
- 타 엔티티와의 관계를 통해 타 엔티티로부터 받아오는 식별자
3 ) 속성의 수에 따른 분류
단일식별자
- 하나의 속성으로 구성된 식별자
복합식별자
- 둘 이상의 속성으로 구성된 식별자
4 ) 대체 여부에 따른 분류
본질식별자
- 업무에 의해 자연스레 만들어지는 식별자
인조식별자
- 업무에 의해 자연스레 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있어 인위적으로 만든 식별자