1. 데이터베이스 설계 및 모델링
1-1. 데이터 모델링
- 정의
- 기업의 정보 구조를 실체(Entity)와 관계(Relation)를 중심으로 명확하고 체계적으로 표현하여 문서화하는 기법
- 목적
- 연관 조직의 정보요구에 대한 정확한 이해를 할 수 있다.
- 사용자, 설계자, 개발자 간에 효율적인 의사소통 수단을 제공한다.
- 데이터 체계 구축을 통한 고품질 S/W와 유지보수 비용의 감소효과를 기대할 수 있다.
- 신규 또는 개선 시스템의 개발 기초를 제공한다.
- 특성
- 데이터 중심 분석을 통한 업무 흐름 파악이 용이하다.
- 데이터 무결성을 보장할 수 있다.
- 데이터의 공유를 통한 중복을 제거하고 일관성 있는 정보를 제공받을 수 있다.
1-2. 개념 데이터 모델링
: 현실 세계를 데이터베이스에 저장 할 수 있는 구조로 표현해 놓은 도구
- 개체-관계 모델(E-R model; Entity-Relationship model)
- 피터 첸이 제안한 개념적 데이터 모델
- 대체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현
- 핵심 요소
- 개체(entity)
- 현실 세계에서 시스템상 필요한 사람이나 사물등
- 저장할 가치가 있는 중요 데이터를 가지고 있는 사람이나 사물, 개념, 사건 등
- 다른 개체와 구별되는 이름을 가지고 있고, 각 개체만의 고유한 특성이나 상태, 즉 속성을 하나 이상 가지고 있음
- E-R 다이어그램에서 사각형으로 표현하고 사각형 안에 이름을 표기
- 속성(attribute)
- 개체나 관계가 가지고 있는 고유의 특성
- 의미 있는 데이터의 가장 작은 논리적 단위
- E-R 다이어그램에서 타원으로 표현하고 타원 안에 이름을 표기
- 속성값의 개수
- 단일값(single-valued attribute)
- 값을 하나만 가질 수 없는 속성
- 다중값 속성(multi-valued attribute)
- 값을 여러 개 가질 수 있는 속성
- E-R 다이어그램에서 이중 타원으로 표현
- 단일값(single-valued attribute)
- 의미 분해 가능 여부
- 단순속성
- 의미를 더는 분해할 수 없는 속성
- 복합속성
- 의미를 분해할 수 있는 속성
- 단순속성
- 유도 속성
- 기존의 다른 속성의 값에서 유도되어 결정되는 속성
- E-R 다이어그램에서 점선 타원으로 표현
- 널 속성
- 널 값이 허용되는 속성
- 널(null) 값
- 아직 결정되지 않거나 모르는 값 또는 존재하지 않는 값
- 키 속성(key attribute)
- 각 개체를 식별하는 데 사용되는 속성
- 모든 개체의 키 속성 값이 다름
- 둘 이상의 속성들로 구성되기도 함
- E-R 다이어그램에서 밑줄로 표현
- 속성값의 개수
- 관계(relationship)
- 개체와 개체가 맺고 있는 의미 있는 연관성
- 개체 집합들 사이의 대응 관계, 즉 매핑(mapping)을 의미
- E-R 다이어그램에서 마름모로 표현
- 관계의 참여 특성
- 필수적 참여(전체 참여)
- 모든 개체가 관계에 반드시 참여해야 한다.
- E-R 다이어그램에서 이중선으로 표현
- 선택적 참여(부분 참여)
- 개체 중 일부만 관계에 참여해도 되는 것을 의미
- 필수적 참여(전체 참여)
- 관계의 종속성
- 약한 개체(weak entity)
- 다른 개체의 존재 여부에 의존적인 개체
- 오너 개체(oner entity)
- 다른 개체의 존재 여부를 결정하는 개체
- E-R 다이어그램에서 약한 개체는 이중 사각형으로 표현하고 약한 개체가 오너 개체와 맺는 관계는 이중 마름모로 표현
- 약한 개체(weak entity)
- 관계의 참여 특성
- 개체(entity)
- 개체-관계 다이어그램(E-R diagram)
- E-R 다이어그램
- 개체 - 관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현한 것
1-3. 데이터 모델의 3요소
- 연산 - 데이터를 처리하는 작업
- 데이터 구조 - 개체와 개체간의 관계
- 제약조건 - 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약조건
2. 논리 데이터베이스 설계
2-1. 논리 데이터 모델링
- E-R 다이어그램으로 표현된 개념적 구조를 데이터베이스에 저장할 형태로 표현한 논리적 구조
- 사용자가 생각하는 데이터베이스의 모습 또는 구조
- 엔티티(Entity)와 속성(Attribute)들의 관계(Relation)를 구조적으로 정의하는 단계이고 개념모델로부터 업무영역의 업무 데이터 및 규칙을 구체적으로 표현한 모델이다.
- 모든 업무 데이터를 정규화(Normalization)하여 모델링한다.
- 모든 업무 규칙과 관계를 완전하고 정확하게 표현
- 성능 혹은 기타 제약 사항과는 독립적인 모델로서, 특정 DBMS로부터 독립적이다.
- 엔티티(Entity): 관리할 대상이 되는 실체
- 속성(Attribute): 관리할 정보의 구체적 항목
- 관계(Relationship): 엔터티간의 대응관계
- 프로세스
2-2. 논리 데이터 모델의 종류
- 계층 데이터 모델
- 트리(tree) 형태
- 개체 간에 상하 관계가 성립
- 부모 개체 / 자식 개체
- 부모와 자식 개체는 일대다 관계만 허용됨
- 데이터의 삽입, 삭제, 수정, 검색이 쉽지 않음
- 네트워크 데이터 모델
- 데이터베이스의 논리적 구조가 그래프 형태임
- 개체 간에는 일대다 관계만 허용됨
- 오너 / 멤버
- 두 개체 사이에 여러 관계를 정의할 수 있음
- 구조가 복잡하고 데이터의 삽입, 삭제, 수정, 검색이 쉽지 않음
- 관계 데이터 모델
- 일반적으로 많이 사용되는 논리적 데이터 모델
- 데이터베이스의 논리적 구조가 2차원 테이블 형태임
- 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델
- 하나의 개체에 대한 데이터를 하나의 릴레이션(테이블)에 저장
- 용어
- 릴레이션(relation): 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것
- 속성(attribute): 릴레이션의 열, 애트리뷰트
- 튜플(tuple): 릴레이션의 행
- 도메인(domain): 하나의 속성이 가질 수 있는 모든 값의 집합
- 차수(degree): 하나의 릴레이션에서 속성의 전체 개수
- 카디널리티(Cardinality): 하나의 릴레이션에서 튜플의 전체 개수
- 릴레이션의 특성
- 튜플의 유일성
- 하나의 릴레이션에는 동일한 튜플이 존재할 수 없다.
- 튜플의 무순서
- 하나의 릴레이션에서 튜플 사이의 순서는 무의미하다.
- 속성의 무순서
- 하나의 릴레이션에서 속성 사이의 순서는 무의미하다.
- 속성의 원자성
- 속성 값으로 원자 값만 사용할 수 있다.
- 튜플의 유일성
- 용어
- 관계 데이터 연산
- 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것
- 관계대수
- 데이터의 처리 과정을 순서대로 기술
- 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어
- 일반 집합 연산자
- 합집합: U
- 교집합: ∩
- 차집합: -
- 카티션 프로젝트: x (행은 곱하고 열은 더해서 새로운 릴레이션 생성)
- 순수 관계 연산자
- 셀렉트: σ (릴레이션 R에서 조건에 만족하는 튜플 반환)
- 프로젝트: π (릴레이션 R에서 주어진 속성의 값으로 구성된 튜플 반환 )
- 조인: ⋈ (공통 속성을 이용해 튜플들을 연결)
- 디비전: R ÷ S(S의 모든 튜플과 관련 있는 R의 튜플 반환)
- 일반 집합 연산자
- 관계해석
- 원하는 데이터가 무엇인지만 기술
- 관계대수
- 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것
- 키(key)
- 릴레이션에서 튜플들을 유일하게 구별하는 속성 또는 속성들의 집합
- 키의 특성
- 유일성(uniqueness)
- 하나의 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야 함
- 최소성(minimality)
- 꼭 필요한 최소한의 속성들로만 키를 구성
- 유일성(uniqueness)
- 키의 종류
- 슈퍼키(super key)
- 유일성을 만족하는 속성 또는 속성들의 집합: 고객아이디, (고객아이디, 고객이름), (고객이름, 주소)
- 후보키(candidate key)
- 유일성과 최소성을 만족하는 속성 또는 속성들의 집합: 고객아이디, 고객 전화번호
- 기본키(primary key)
- 후보키 중에서 기본적으로 사용하기 위해 선택한 키: 고객아이디
- 대체키(alternate key)
- 기본키로 선택되지 못한 후보키: (고객이름, 주소)
- 외래키(foreign key)
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 슈퍼키(super key)
- 무결성 제약조건(integrity constraint)
- 데이터를 일관된 상태로 유지하기 위한 규칙
- 무결성: 데이터를 정확하고 유효하게 유지하는 것
- 개체 무결성 제약조건(entity integrity constraint)
- 기본키를 구성하는 모든 속성은 널 값을 가질 수 없다는 규칙
- 참조 무결성 제약조건(referential integrity constraint)
- 외래키는 참조할 수 없는 값을 가질 수 없다는 규칙
- 정규화(Normalization)
- 정의
- 중복성을 최소화하고 정보의 일관성을 보정하기 위한 개념
- 특징
- 관계구조가 바람직한지 아니라면 어떻게 분해해야 하는지에 관한 구체적인 판단 기준 제공
- 정규화된 데이터 모델은 정확성, 일치성, 단순성, 비중복성, 안정성 보장
- 정규화 수준에 따른 장단점
- 정규화 수준이 높을수록
- 장점
- 유연한 데이터 구축이 가능
- 데이터의 정확성이 높아짐
- 단점
- 물리적 접근이 복잡
- 길이가 짧은 데이터 생성으로 과도한 조인 발생
- 유형
- 제1정규화
- 반복되는 속성이나 Group 속성 제거
- 새로운 실체와 1:N의 관계 추가
- 모든 속성은 반드시 하나의 값을 가져야 함(반복형태X)
- 제2정규화
- 주식별자에 완전하게 종속되지 않는 속성 제거
- 불완전 함수적 종속(Non Fully Dependency) 제거
- 모든 속성은 반드시 UID전부에 종속되어야 함(UID일부에만 종속되어서는 안됨) -> 부분적 함수 종속: 기본키가 아닌 다른 속성에 종속
- 제3정규화
- 비식별자에 종속되는 속성 제거
- 주식별자에 이행종속(Transtive Dependency, x를 알면 y를 알고 그를 통해 z를 알 수 있는 경우) 되는 속성 제거
- UID가 아닌 모든 속성 간에는 서로 종속될 수 없음(속성간 종속성 배제)
- BCNF
- 제3정규형이고 모든 결정자가 후보키인 정규형
- 제4정규화
- BCNF이고 다중값 종속을 제거한 정규형
- 제5정규화
- 제4정규형이고 조인종속성(테이블을 분해한 결과를 다시 조인했을 때 원래의 테이블과 동일하게 복원되어야 한다는 조건)을 이용한 정규형
- 제1정규화
- 정의
- 이상 현상
- 삽입 이상(insertion anomaly)
- 릴레이션에 새 데이터를 삽입하려면 불필요한 데이터도 함께 삽입해야 하는 문제
- 갱신 이상(update anomaly)
- 릴레이션의 중복된 튜플들 중 일부만 수정하여 데이터가 불일치하게 되는 모순이 발생하는 문제
- 삭제 이상(delertion anomaly)
- 릴레이션에서 튜플을 삭제하면 꼭 필요한 데이터까지 손실되는 연쇄 삭제 현상이 발생하는 문제
- 삽입 이상(insertion anomaly)
3. 물리 데이터베이스 설계
3-1. 물리 데이터 모델링
: 설계 단계에서의 정보 요건을 정확하고 완전하게 표현한 모델
- 데이터베이스 생성을 위한 물리 구조로 변환한다.
- 설계와 성능을 고려한 조정을 수행한다.
- 적용 DBMS에 적합한 성능 조정을 수행한다.
3-2. 물리 데이터 모델 설계 순서
- 엔터티 -> 테이블
- 한글 엔티티명 -> 영문 테이블명
- 속성 -> 컬럼
- 한글 속성명 -> 영문 컬럼명
- 데이터 타입의 지정
- 주식별자 -> 기본키, 외래식별자 -> 외래키
- 관계의 전환
- 논리적 설계에서 엔터티간의 관계(relationship)는 물리적 설계에서도 그대로 유지
- 카디널리티, 선택/필수도 그대로 적용됨
- 칼럼의 유형, 길이 정의
- CHAR, VARCHAR2, NUMBER, DATE
- 반정규화 수행
- 반정규화(Denormalization) = 비정규화
- 정의
- 정규화에 충실하여 모델링을 수행하면 종속성, 활용성은 향상되나 수행속도가 증가하는 경우가 발생하여 이를 극복하기 위해 성능에 중점을 두어 의도적으로 행하는 정규화 원칙 위배 행위를 일컫는다.
- 특징
- 데이터 모델링 규칙에 얽메이지 않고 수행한다.
- 시스템이 물리적으로 구현되었을 때 성능향상을 목적으로 한다.
- 엔터티 통합에 의한 반정규화
- 두 엔터티를 조인하는데 걸리는 시간을 절약하려는 목적
- 대부분 조인에 의한 검색을 하고, 검색이 빈번히 이루어지는 두개의 엔터티를 대상으로 한다.
- 정의
- 반정규화(Denormalization) = 비정규화
3-3. 물리 데이터저장소 구성
: 물리 데이터 저장소 설계에 따라 데이터저장소에 실제 데이터가 저장될 물리적 공간을 구성
- 다양한 오브젝트를 설계한다.
- 테이블 제약조건 설계
- : 참조 무결성을 관리하기 위한 제약조건(Constraint)을 정의한다.
- 참조 무결성: 관련 있는 테이블 사이에 참조하는 외래키값은 항상 참조되는 테이블에 기본키로 존재해야한다.
- 인덱스 설계
- 인덱스는 테이블에 대한 검색 속도를 향상시킬 수 있는 확실한 수단
- 책 뒤에 붙어 있는 색인과 비슷한 역할
- 순차적 접근
- 튜플수가 많아지면 대량의 데이터에 대한 검색 방법으로는 적당하지 않다.
- 이진 검색
- 데이터가 정렬되어 있다면 적은 비교횟수로 원하는 튜플을 찾을 수 있다.
- 그러나 10만개의 튜플에 대해 정렬 상태를 유지하는 것은 매우 많은 비용이 든다.
- 인덱스로 검색
- 실제 데이터는 정렬되어 있지 않지만 마치 정렬되어 있는 것과 같은 효과를 얻을 수 있다.
- 순차적 접근
- 뷰 설계
- : 테이블을 기초로 하는 가상(논리) 테이블을 말한다.
- 뷰 속성
- REPLACE: 뷰가 이미 존재하는 경우 재생성
- FORCE: 기본 테이블의 존재 여부에 관계 없이 뷰 생성
- NOFORCE: 기본 테이블이 존재할 때 만 뷰 생성
- WITH CHECK OPTION: Sub-Query 내의 조건을 만족하는 행만 변경
- WITH READ ONLY: DML 작업 불가
- 클러스터 설계
- : 지정된 칼럼 값의 순서대로 데이터 행을 저장하는 방법으로, 동일한 성격의 데이터를 같은 클러스터내 저장한다.
- : 지정된 칼럼 값의 순서대로 데이터 행을 물리적으로 같은 블록에 저장하는 방법으로, 인덱스의 단점을 해결하고 액세스 효율을 향상 시킬 수 있는 방법
- 적용 기준
- 분포도가 넓을수록 오히려 유리(인덱스의 단점을 해결)한 기법
- 액세스 기법이 아니라 액세스 효율 향상을 위한 물리적 저장 방법
- 클러스터 설계시 고려사항
- 검색 효율은 높여 주나 입력, 수정, 삭제 시는 부하가 증가함을 고려하여야 한다.
- Union, Distinct, Order by, Group by가 빈번한 칼럼이면 고려해 보아야 한다.
- 수정이 자주 발생하지 않는 칼럼은 고려 대상이다.
- 적용 기준
- 파티션 설계
- : 대용량DB는 몇 개의 중요한 트랜잭션 테이블에서 데이터가 증가하므로, 보다 작은 단위로 나눔으로써 성능 저하 방지와 관리의 용이성을 위해 사용하는 기법
- 파티션 종류
- 범위분할(Range Partitioning):지정한 열의 값을 기준으로 분할, 숫자나 날짜 기준
- 해시분할(Hash Partitioning): 해시 함수에 따라 데이터를 분할
- 조합분할(Composite Partitioning): 범위분할 후, 해시 함수를 적용하여 다시 분할
- 테이블 제약조건 설계
4. 자료구조
: 자료를 효율적으로 표현하고 저장하고 처리할 수 있도록 정리하는 것
4-1. 선형구조
- 순차리스트 - 리스트에 나열한 데이터들이 일정한 순서를 가지고 있는 구조
- 연결리스트
- 순서가 매겨진 항목들을 모아놓은 구조 중 하나로 각 데이터를 연결하는 포인터까지 있는 구조
- 순차 자료구조: 논리적인 순서 = 물리적인 순서
- 연결 리스트: 논리적인 순서 != 물리적인 순서
- 스택 - 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)으로 되어 있다.
- 큐 - 한쪽 끝으로 자료를 넣고, 반대쪽에서는 자료를 뺄 수 있는 선형구조( (FIFO - First In First Out )
- 데크 - 삽입과 삭제가 리스트의 양쪽 끝에서 모두 발생할 수 있는 자료구조
4-2. 비선형구조
- 트리
- 자료 간 계층 관계를 가진 계층형 자료구조
- 노드(node) - 트리의 원소
- 간선(edge) - 노드를 연결하는 선
- 루트 노드(root node) - 트리의 시작 노드
- 형제 노드(sibling node) - 같은 부모 노드의 자식 노드들
- 조상 노드 - 간선을 따라 루트 노드까지 이르는 경로에 있는 모든 노드들
- 서브 트리(subtree) - 부모 노드와 연결된 간선을 끊었을 때 생성되는 트리
- 자손 노드 - 서브 트리에 있는 하위 레벨의 노드들
- 차수(degree)
- 노드의 차수: 노드에 연결된 자식 노드의 수
- 트리의 차수: 트리에 있는 노드의 차수 중에서 가장 큰 값
- 단말 노드(리프 노드): 차수가 0인 노드. 자식 노드가 없는 노드
- 높이
- 노드의 높이: 루트에서 노드에 이르는 간선의 수. 노드의 레벨
- 트리의 높이: 트리에 있는 노드의 높이 중에서 가장 큰 값
- 노드(node) - 트리의 원소
- 이진 트리
- 트리의 모든 노드의 차수를 2 이하로 제한하여 전체 트리의 차수가 2 이하가 되도록 정의
- 이진 트리의 모든 노드는 왼쪽 자식 노드와 오른쪽 자식 노드만 가짐
- 이진 트리 순회
- 전위 순회(D -> L -> R) PREORDER
- 중위 순회(L -> D -> R) INORDER
- 후위 순회(L -> R -> D) POSTFIX
- 자료 간 계층 관계를 가진 계층형 자료구조
- 그래프
- 연결할 객체를 나타내는 정점과 객체를 연결하는 간선의 집합으로 구성
- 무방향 그래프
- 두 정점을 연결하는 간선에 방향이 없는 그래프
- 정점이 n개인 무방향 그래프에서 최대의 간선 수: n(n-1)/2개
- 방향 그래프
- 간선에 방향이 있는 그래프
- 정점이 n개인 방향 그래프의 최대 간선 수: n(n-1)개
- 무방향 그래프
- 연결할 객체를 나타내는 정점과 객체를 연결하는 간선의 집합으로 구성
5. 알고리즘
: 주어진 문제를 논리적으로 해결하기 위해 필요한 절차, 방법, 명령어들을 모아놓은 것
5-1. 정렬
- Bubble Sort
- 인접한 2개의 레코드를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환하는 알고리즘
- Insertion(삽입) Sort
- 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘
- Selection(선택) Sort
- 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환해나가는 방식\
- Quick Sort
- 피봇(Pivot)을 기준으로 피벗보다 작은 원소들과 큰 원소들을 각각 피벗의 좌우로 분할한 후, 피벗보다 작은 원소들과 피벗보다 큰 원소들을 각각 순환으로 정렬하는 알고리즘
- Heap Sort
- 힙 자료구조를 이용하는 정렬(가장 큰 수를 트리 최상단으로 맨 아래 수와 교환, 배열 읽는 순서 상하좌우)
5-2.
5-3.
'자격증 > 정보처리기사 인강 - 실기' 카테고리의 다른 글
6. 화면 설계 (0) | 2024.07.14 |
---|---|
5. 인터페이스 구현 (2) | 2024.07.14 |
4. 서버프로그램 구현 (0) | 2024.07.12 |
3. 통합구현 (0) | 2024.07.07 |
1. 요구사항 확인 (0) | 2024.06.21 |