2024년 개정 후 버전으로 목차 확인하면서 정리했습니다.
참고자료: 노랭이 교재, https://yurimac.tistory.com/40
1장 데이터 모델링의 이해
1절. 데이터 모델의 이해
데이터 모델링의 중요성 및 유의점
- 중복: 같은 시간 같은 데이터 제공
- 비유연성: 사소한 업무 변화에 데이터 모델이 수시로 변경되면 안됨. 데이터 정의를 사용 프로세스와 분리
- 비일관성: 데이터 간 상호 연관 관계에 대해 명확히 정의해야 함
데이터 모델링
- 개념적, 논리적, 물리적 데이터 모델링
데이터 독립성 요소
- 외부 스키마: 개개 사용자가 보는 개인적 데이터베이스 스키마
- 개념 스키마: 모든 사용자 관점을 통합한 전체 데이터베이스
- 내부 스키마: 물리적 장치에서 데이터가 실제적 저장
데이터 독립성
- 논리적 독립성: 개념 스키마가 변경되어도 외부 스키마에 영향 x
- 물리적 독립성: 내부 스키마가 변경되어도 외부/개념 스키마는 영향 x
Mapping(사상)
- 상호 독립적인 개념을 연결시켜주는 다리
- 논리적 사상: 외부 스키마 - 개념 스키마
- 물리적 사상: 개념 스키마 - 내부스키마
데이터 모델링의 3요소
- 어떤 것(Things)
- 성격(Attributes)
- 관계(Relationships)
모델링 특징
- 추상화
- 단순화
- 명확화
2절. 엔터티
데이터 모델 표기법
- 1976년 피터첸이 Entity Relationship Model 개발
- IE, Baker 기법이 많이 쓰임
- 엔터티 관계 속성으로 이뤄짐
Entity Relationship Diagram(ERD) 작업 순서
- 엔터티 그림
- 엔터티 배치
- 엔터티 관계 설정
- 관계명 기술
- 관계의 참여도 기술
- 관계 필수 여부
좋은 데이터모델의 요소
- 완전성: 업무에 필요한 모든 데이터가 모델에 정의
- 중복배제: 하나의 DB내에 동일한 사실은 한번만.
- 업무규칙: 많은 규칙을 사용자가 공유하도록 제공
- 데이터 재사용: 데이터가 독립적으로 설계되어야 함
- 의사소통: 업무 규칙은 엔터티, 서브타입, 속성, 관계 등의 형태로 최대한 자세히 표현
- 통합성: 동일한 데이터는 한 번만 정의, 참조 활용
엔터티
- 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것, 보이지 않는 개념 포함
엔터티 특징
- 반드시 해당 업무에서 필요하고 관리하고자 함
- 유일한 식별자에 의해 식별 가능
- 두 개 이상의 인스턴스 집합
- 업무 프로세스에 의해 이용되어야 함
- 반드시 속성이 있어야 함
- 다른 엔터티와 최소 1개 이상의 관계가 있어야 함.
엔터티의 분류
유무형에 따른 분류: 유형, 개념, 사건 엔터티
- 유형: 물리적 형태 예) 사원, 물품, 강사
- 개념: 개념적 정보 예) 조직, 보험 상품
- 사건: 업무 수행시 발생 예) 주문, 청구, 미납
발생시점에 따른분류: 기본/키, 중심, 행위 엔터티
- 기본: 그 업무에 원래 존재하는 정보, 타 엔터티의 부모 역할, 자신의 고유한 주식별자를 가짐 예) 사원, 부서
- 중심: 기본 엔터티로부터 발생, 다른 엔터티와의 관계로 많은 행위 엔터티 생성 예) 계약, 사고, 주문
- 행위: 2개 이상의 부모엔터티로부터 발생, 자주 바뀌거나 양이 증가 예) 주문 목록, 사원 변경 이력
엔터티의 명명
- 현업 업무에서 사용하는 용어 사용
- 약어 사용 금지
- 단수명사 사용
- 고유한 이름 사용
- 생성의미대로 부여
3절. 속성
속성
- 업무에서 필요로 하는 인스턴스로 관리하고자하는 의미상 분리되지 않는 최소의 데이터 단위
- 한 개의 엔터티는 2개 이상의 인스턴스 집합
- 한 개의 엔터티는 2개 이상의 속성을 가짐
- 한 개의 속성은 1개의 속성값을 가짐
속성의 분류: 기본, 설계, 파생 속성
- 기본: 업무로부터 추출한 모든 일반적인 속성
- 설계: 업무를 규칙화하기 위해 새로 만들거나 변형, 정의하는 속성 예) 일련 번호
- 파생: 다른 속성에 영향을 받아 발생하는 속성, 빠른 성능을 낼 수 있도록 원래 속성의 값을 계산 예) 합
도메인
- 속성에 대한 데이터 타입, 크기, 제약사항 지정
속성의 명명
- 해당업무에서 사용하는 이름 부여
- 서술식 속성명은 사용 금지
- 약어 사용 금지
- 전체 데이터 모델에서 유일성 확보
4절. 관계
관계 (Relationship)
- 엔티티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태
패어링
- 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것
UML(통합모델링언어)에서의 관계
- 연관관계(실선): 항상 이용하는 관계
- 의존관계(점선): 상대방 행위에 의해 발생하는 관계
관계의 표기법
- 관계명: 관계의 이름
- 관계 차수: 1:1, 1:N, N:M
- 관계 선택성: 필수 관계, 선택 관계
관계 체크 사항
- 2개의 엔터티 사이에 관심있는 연관 규칙이 있는가?
- 2개의 엔터티 사이에 정보의 조합이 발생하는가?
- 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?
- 업무기술서, 장표에 관계연결을 가능케하는 동사가 있는가?
5절. 식별자
식별자
- 엔터티내에서 인스턴스를 구분하는 구분자
- 식별자는 논리적 데이터 모델링 단계에 사용
- Key는 물리적 데이터 모델링 단계에 사용
식별자 특징
- 유일성: 주식별자에 의해 모든 인스턴스들이 유일하게 구분
- 최소성: 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
- 불변성: 지정된 주식별자의 값은 자주 변하지 않아야 함
- 존재성: 주식별자가 지정이 되면 반드시 값이 들어와야 함
식별자 분류
대표성 여부: 주식별자, 보조식별자
- 주식별자: 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자, 타 엔터티와 참조관계를 연결 가능
- 보조식별자: 대표성을 가지지 못해 참조관계 연결 불가
스스로 생성 여부: 내부식별자, 외부식별자
- 내부식별자: 스스로 생성되는 식별자
- 외부식별자: 타 엔터티로부터 받아오는 식별자
속성의 수: 단일식별자, 복합식별자
- 단일식별자: 하나의 속성으로 구성
- 복합식별자: 2개 이상의 속성으로 구성
대체 여부: 본질식별자, 인조식별자
- 본질식별자: 업무에 의해 만들어지는 식별자
- 인조식별자: 인위적으로 만든 식별자
주식별자 도출 기준
- 해당 업무에서 자주 이용되는 속성임
- 명칭, 내역 등과 같이 이름으로 기술되는 것들은 x
- 복합으로 주식별자를 구성할 경우 너무 많은 속성은 x
- 너무 많으면 인조식별자 생성한다.
식별자 관계
주식별자: 자식의 주식별자로 부모의 주식별자 상속
- 부모로부터 받은 식별자를 자식 엔터티의 주식별자로 이용하는 경우
- 강한 연결관계 표현, 실선 표기
- 식별자 관계로만 설정 시 주식별자 증가로 오류유발
비식별자: 부모 속성을 자식의 일반 속성으로 사용.
- 부모 없는 자식이 생성될 수 있는 경우
- 부모와 자식의 생명주기가 다른 경우
- 여러개의 엔터티가 하나의 엔터티로 통합되어 표현되었는데 각각의 엔터티가 별도의 관계를 가진 경우
- 자식 엔터티에 별도의 주식별자를 생성하는 것이 더 유리한 경우
- SQL 문장이 길어져 복잡성이 증가되는 것 방지
- 약한 연결관계 표현, 점선 표기
2장 데이터 모델과 SQL
1절. 정규화
정규화
- 반복적인 데이터를 분해하고 각 데이터가 종속된 테이블에 적절하게 배치되도록 하는 것
- 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성 위한 과정
- 일반적으로 정규화시 입력,수정, 삭제 성능이 향상 되지만 조인에 의한 조회 성능이 저하될 수 있다
- 이에 반정규화를 사용해 조인 성능을 향상 시킬 수 있다.
정규화는 이상현상 때문에 사용
- 삽입 이상: 데이터 삽입 시 불필요한 것까지 삽입
- 삭제 이상: 컬럼 · 행 삭제 시 연쇄적으로 삭제
- 갱신 이상: 필드 수정 시 모순이 생김
함수적 종속 이용해서 정규화
- Full Functional Dependency(완전 함수 종속)
- Partial Functional Dependency(부분 함수 종속)
- Transitive Functional Dependency(이행 함수 종속)
정규화 과정
비정규 Relation | |
↓ | 도메인이 원자값 |
제1정규형 | |
↓ | 부분 함수적 종속제거 |
제2정규형 | |
↓ | 이행적 함수 종속 제거 |
제3정규형 | |
↓ | 결정자이면서 후보키가 아닌 것 제거 |
BCNF | |
↓ | 다치 종속 제거 |
제4정규형 | |
↓ | 조인 종속성 이용 |
제5정규형 |
제 1 정규화
- 도메인이 원자값
- 테이블이 컬럼이 원자성을 갖도록 테이블을 분리하는 단계
- 하나의 행과 컬럼의 값이 반드시 한 값만 입력되도록 행을 분리
제 2 정규화
- 부분 함수적 종속제거
- 완전 함수 종속을 만들도록 테이블을 분해
- 기본키를 구성하는 모든 컬럼의 값이 다른 컬럼을 결정짓는 상태
제 3 정규화
- 이행적 함수 종속 제거
- A -> B, B-> C의 관계가 성립할 때, A -> C가 성립되는 것
- (A, B)와(B, C)로 분리
2절. 관계와 조인의 이해
조인(JOIN)
- 식별자를 상속하고, 상속된 속성을 매핑키로 활용하여 데이터를 결합하는 것을 의미
관계(Relationship)
- 관계(Relationship)를 맺는다는 것은 식별자를 상속시키고 해당 식별자를 매핑키로활용해데이터를 결합해 보겠다는 것을 의미한다
3절. 모델이 표현하는 트랜잭션의 이해
트랜잭션
- 밀접히 관련되어 분리될 수 없는 1개 이상의 DB. 조작 논리적 연산단위
- COMMIT: 올바르게 반영된 데이터를 DB에 반영
- ROLLBACK: 트랜잭션 시작 이전의 상태로 되돌림. COMMIT 되지 않은 모든 트랜잭션을 롤백
- SAVEPOINT : 저장 지점
트랜잭션의 특성
- 원자성 : 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않아야 한다.
- 일관성 : DB 트랜잭션 실행 전 내용이 잘못 되지 않으면 실행 후도 잘못 되지 않아야 한다.
- 고립성 : 트랜잭션 실행 도중 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
- 지속성 : 트랜잭션이 성공적으로 수행되면 DB의 내용은 영구적으로 저장된다.
4절. Null 속성의 이해
NULL의 특성
- NULL 값은 아직 정의되지 않은 값으로 0 또는 공백과 다르다.
- 테이블을 생성할 때 NOT NULL 또는 PRIMARY KEY로 정의되지 않은 모든 데이터 유형은 NULL 값을 포함할 수 있다.
- NULL 값을 포함하는 연산의 경우 결괏값도 NULL 값이다.
- NULL 값과의 수치연산은 NULL 값을 리턴
- NULL 값과의 비교연산은 거짓(FALSE) 리턴
- 결괏값을 NULL이아닌 다른 값을 얻고자 할 때 NVL/ISNULL 함수를 사용한다.
NULL 관련 함수
NVL(식1, 식2) / ISNULL(식1, 식2)
- 식1의 결과값이 NULL이면 식2의 값을 출력
NULLIF(표현식1, 표현식2)
- 식1이 식2와 같으면 NULL을, 같지 않으면 식1을 출력
COALESCE(식1, 식2, ...)
- 식에서 NULL이 아닌 최초의 표현식 리턴
- 모든 NULL이면 NULL을 리턴
- ex) COALESCE(NULL, NUL, 'HELLO') => 'HELLO'
5절. 본질식별자 vs 인조식별자
본질식별자
- 업무에 의해 만들어지는 식별자
인조식별자
- 인위적으로 만든 식별자
- 인조식별자를 사용하면 중복 데이터를 막기 어려워진다.
- 본질식별자를 사용할 때와 비교하여 추가적인 인덱스가 필요해진다.
'자격증' 카테고리의 다른 글
[정보처리기사] 실기 기출문제(2023) 풀이 C언어 (4) | 2024.04.22 |
---|---|
[정보처리기사] 실기 기출문제(2023-2020) 풀이 Python (2) | 2024.04.22 |
[정보처리기사] 유튜브 두목넷 정보처리기사 실기를 위한 C 특강(7강 포인터) (0) | 2024.02.18 |
[정보처리기사] 유튜브 두목넷 정보처리기사 실기를 위한 C 특강(6강 배열) (0) | 2024.02.17 |
[정보처리기사] 유튜브 두목넷 정보처리기사 실기를 위한 C 특강(5강 제어문-반복구조) (0) | 2024.02.15 |