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