1. 발생시점에 따른 엔터티 분류
- 기본/키엔터티 (Fundamental Entity, Key Entity)
- 중심엔터티 (Main Entity)
- 행위엔터티(Active Entity)
2. 데이터모델링이란
- 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
- 현실세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정
- 데이터베이스를 구축하기 위한 분석/설계의 과정
3. 데이터 모델링의 유의점
- 중복(Duplication)
- 비유연성(Inflexibility)
- 비일관성(Inconsistency)
4. 데이터 모델링 개념
- 개념적 데이터 모델링 : 추상화 수준이 높고 업무중심적이고 포괄적인 수준의 모델링 진행. 전사적 데이터 모델링, EA수립 시 많이 사용.
- 논리적 데이터 모델링 : 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계 등을 정확하게 표현, 재사용성이 높음.
- 물리적 데이터 모델링 : 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계
5. 데이터베이스 스키마 구조 3단계
- 외부스키마(External Schema)
- 개념스키마(Conceptual Schema)
- 내부스키마(Internal Schema)
6. ERD 작성 순서
① 엔터티를 그린다
② 엔터티를 적절하게 배치한다.
③ 엔터티 간 관계를 설정한다.
④ 관계명을 기술한다.
⑤ 관계의 참여도를 기술한다.
⑥ 관계의 필수여부를 기술한다.
7. 엔터티의 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다. (EX. 환자, 토익의 응시횟수, ...)
- 유일한 식별자에 의해 식별이 가능해야 한다.
- 영속적으로 존재하는 인스턴스의 집합이어야 한다. ('한 개'가 아니라 '두 개 이상')
- 엔터티는 업무 프로세스에 의해 이용되어야 한다.
- 엔터티는 반드시 속성이 있어야 한다,
- 엔터티는 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다.
8. 엔터티, 인스턴스, 속성, 속성값의 관계
- 한 개의 엔터티는 두 개 이상의 인스턴스의 집합이어야 한다.
- 한 개의 엔터티는 두 개 이상의 속성을 갖는다.
- 한 개의 속성은 한 개의 속성 값을 갖는다.
9. 속성의 특성에 따른 분류
- 기본속성
- 설계속성
- 파생속성
10. 도메인
- 각 속성은 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인(Domain)이라 하며, 엔터티 내에서 속성에 대한 데이터타입과 크기 그리고 제약사항을 지정하는 것이다.
11. 속성의 명칭 부여
- 해당업무에서 사용하는 이름을 부여한다.
- 서술식 속성명은 사용하지 않는다.
- 약어사용은 가급적 제한한다.
- 전체 데이터모델에서 유일성을 확보하는 것이 좋다.
12. 관계
- ERD에서는 존재적 관계와 행위에 의한 관계를 구분하지 않지만 클래스다이어그램에서는 이것을 구분하여 연관관계와 의존관계로 표현한다.
13. 관계의 표기법
- 관계명(Membership) : 관계의 이름
- 관계차수(Cardinality) : 1:1, 1:M, M:N
- 관계선택사양(Optionality) : 필수관계, 선택관계
14. 관계 읽기
- 기준(Source) 엔터티를 한 개(One) 또는 각(Each)으로 읽는다.
- 대상(Target) 엔터티의 관계참여도 즉 개수(하나, 하나 이상)를 읽는다.
- 관계선택사양과 관계명을 읽는다.
15. 식별자의 종류
- 엔터티 내에서 대표성을 가지는가에 따라 주 식별자(Primary Identifier)와 보조 식별자(Alternate Identifier)로 구분
- 엔터티 내에서 스스로 생성되었는지 여부에 따라 내부식별자와 외부식별자(Foreign Identifier)로 구분
- 단일 속성으로 식별이 되는가에 따라 단일식별자(Single Identifier)와 복합식별자(Composit Identifier)로 구분
- 원래 업무적으로 의미가 있던 식별자 속성을 대체하여 일련번호와 같이 새롭게 만든 식별자를 구분하기 위해 본질식별자와 인조식별자로 구분
16. 주식별자의 특징
- 유일성 : 주식별자에 의해 엔터티 내에 모든 인스턴스들을 유일하게 구분함
- 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
- 불변성 : 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함
- 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재 (Null 안됨)
17. 식별자와 비식별자관계 비교
항목 | 식별자관계 | 비식별자관계 |
목적 | 강한 연결관계 표현 | 약한 연결관계 표현 |
자식 주식별자 영향 | 자식 주식별자의 구성에 포함됨 | 자식 일반 속성에 포함됨 |
표기법 | 실선 표현 | 점선 표현 |
연결 고려사항 | - 반드시 부모엔터티 종속 - 자식 주식별자구성에 부모 주식별자 포함 필요 - 상속받은 주식별자속성을 타 엔터티에 이전 필요 |
- 약한 종속관계 - 자식 주식별자구성을 독립적으로 구성 - 자식 주식별자구성에 부모 주식별자 부분 필요 -상속받은 주식별자속성을 타 엔터티에 차단 필요 - 부모쪽의 관계참여가 선택관계 |
18. 식별자의 분류 체계
분류 | 식별자 | 설명 |
대표성 여부 | 주식별자 | 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결할 수 있는 식별자 |
보조식별자 | 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조관계 연결을 못함 | |
스스로 생성여부 | 내부식별자 | 엔터티 내부에서 스스로 만들어지는 식별자 |
외부식별자 | 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자 | |
속성의 수 | 단일식별자 | 하나의 속성으로 구성된 식별자 |
복합식별자 | 둘 이상의 속성으로 구성된 식별자 | |
대체 여부 | 본질식별자 | 업부에 의해 만들어지는 식별자 |
인조식별자 | 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자 |
19. 성능 데이터모델이란?
- 데이터베이스 성능 향상을 목적으로 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것이다.
20. 1차 정규화
- 중복속성에 대한 분리가 1차 정규화의 대상이 되며, 로우단위의 중복도 1차 정규화의 대상이 되지만 칼럼 단위로 중복이 되는 경우도 1차 정규화의 대상이다.
21. 반정규화
- 반정규화는 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발(Development)과 운영(Maintenance)의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 의미한다. 반정규화는 데이터를 중복하여 성능을 향상하기 위한 기법이라고 정의할 수 있고 좀 더 넓은 의미의 반정규화는 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 의미한다. 데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행하게 된다.
22. 테이블의 반정규화
기법분류 | 반정규화 기법 |
테이블 병합 | 1 : 1 관계 테이블 병합 |
1 : M 관계 테이블 병합 | |
슈퍼/서브타입 테이블 병합 | |
테이블 분할 | 수직분할 |
수평분할 | |
테이블 추가 | 중복테이블 추가 |
통계테이블 추가 | |
이력테이블 추가 | |
부분테이블 추가 |
23. 칼럼의 반정규화
반정규화 기법 |
중복칼럼 추가 |
파생칼럼 추가 |
이력테이블 칼럼추가 |
PK에 의한 칼럼 추가 |
응용시스템 오작동을 위한 칼럼 추가 |
24. 반정규화 절차
- 반정규화 대상조사
> 범위처리빈도수 조사
> 대량의 범위 처리 조사
> 통계성 프로세스 조사
> 테이블 조인 개수
- 다른 방벙유도 검토
> 뷰(View) 테이블
> 클러스터링 적용
> 인덱스의 조정
> 응용애플리케이션
- 반정규화 적용
> 테이블의 반정규화
> 속성의 반정규화
> 관계의 반정규화
25. 반정규화의 대상에 대해 다른 방법으로 처리
- 지나치게 많은 조인(JOIN)이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 뷰(View)를 사용하면 이를 해결할 수도 있다.
- 대량의 데이터 처리나 부분처리에 의해 성능이 저하되는 경우에 클러스터링을 적용하거나 인덱스를 조정함으로써 성능을 향상시킬 수 있다.
- 대량의 데이터는 Primary Key의 성격에 따라 부분적인 테이블로 분리할 수 있다. 즉 파티셔닝 기법(Partitioning)이 적용되어 성능저하를 방지할 수 있다.
- 응용 애플리케이션에서 로직을 구사하는 방법을 변경함으로써 성능을 향상시킬 수 있다.
26. 슈퍼/서브 타입 데이터 모델의 변환기술
- 개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성
- 슈퍼타입 + 서브타입에 대해 발생되는 트랜잭션에 대해서는 슈퍼타입 + 서브타입 테이블로 구성
- 전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성
27. PK순서 결정
- PK순서를 결정하는 기준은 인덱스 정렬구조를 이해한 상태에서 인덱스를 효율적으로 이용할 수 있도록 PK순서를 지정해야 한다. 즉 인덱스의 특징은 여러 개의 속성이 하나의 인덱스로 구성되어 있을 때 앞쪽에 위치한 속성의 값이 비교자로 있어야 인덱스가 좋은 효율을 나타낼 수 있다. 앞쪽에 위치한 속성 값이 가급적 '=' 아니면 최소한 범위 'BETWEEN', '< >'가 들어와야 인덱스를 이용할 수 있는 것이다.
28. 분산 데이터베이스 장점
- 지역 자치성, 점증적 시스템 용량 확장
- 신뢰성과 가용성
- 효용성과 융통성
- 빠른 응답 속도와 통신비용 절감
- 데이터의 가용성과 신뢰성 증가
- 시스템 규모의 적절한 조절
- 각 지역 사용자의 요구 수용 증대
29. 분산 데이터베이스 단점
- 소프트웨어 개발 비용
- 오류의 잠재성 증대
- 처리 비용의 증대
- 설계, 관리의 복잡성과 비용
- 불규칙한 응답 속도
- 통제의 어려움
- 데이터 무결성에 대한 위협
'Certificate > SQLD' 카테고리의 다른 글
[SQLD] 기출문제 오답정리 2 (3) | 2023.11.15 |
---|---|
[SQLD] 기출문제 오답정리 (2) | 2023.11.12 |
[SQLD] 2과목 2장 핵심정리 모아놓기 (1) | 2023.11.12 |
[SQLD] 2과목 1장 핵심정리 모아놓기 (0) | 2023.11.05 |
[SQLD] 단답형 정리 (0) | 2023.11.05 |