본문 바로가기
security/정보처리기사

정처기 데이터베이스 구축 - 3.1 논리 데이터베이스 설계

by aristia 2021. 2. 9.

<데이터베이스 설계>


1. 데이터베이스 설계의 개념
- 사용자의 요구를 분석하여, 그것들을 컴퓨터에 저장할 수 있는 데이터베이스 구조에 맞게 변형한 후
  특정 DBMS로 데이터베이스를 구현하여 일반 사용자들이 사용하게 하는 것

2. 데이터베이스 설계 시 고려사항
- 무결성
     : 연산 후에도 데이터베이스에 저잗왼 데이터가 정해진 제약 조건을 항상 만족해야 함
- 일관성
     : 데이터베이스에 저장된 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 변함없이 일정해야 함
- 회복
     : 불법적인 데이터의 노출, 변경, 손실로부터 보호할 수 있어야 함
- 효율성
     : 응답시간의 단축, 시스템의 생산성, 저장 공간의 최적화 등이 가능해야 함
- 데이터베이스 확장
     : 데이터베이스 운영에 영향을 주지 않으면서 지속적으로 데이터를 추가할 수 있어야 함

3. 데이터베이스 설계 순서
- 1. 요구 조건 분석
     : 요구 조건 명세서 작성
- 2. 개념적 설계
     : 개념 스키마, 트랜잭션 모델링, E-R 모델
- 3. 논리적 설계
     : 목표 DBMS에 맞는 논리 스키마 설계, 트랜잭션 인터페이스 설계
- 4. 물리적 설계
     : 목표 DBMS에 맞는 물리적 구조의 데이터로 변환
- 5. 구현
     : 목표 DBMS의 DDL(데이터 정의어)로 데이터베이스 생성, 트랜잭션 작성

4. 요구 조건 분석
- 데이터베이스를 사용할 사람들로부터 필요한 용도를 파악하는 것
- 데이터베이스 사용자에 따른 수행 업무와 필요한 데이터의 종류, 용도, 처리 형태 흐름, 제약 조건 등을 수집함
- 수집된 정보를 바탕으로 요구 조건 명세를 작성함

5. 개념적 설계(정보 모델링, 개념화)
- 정보의 구조를 얻기 위해 현실 세계의 무한성과 계속성을 이해하고,
  다른 사람과 통신하기 위해 현실세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 개념 스키마 모델링, 트랜잭션 모델링을 병행 수행함
- 요구 분석 단계에서 나온 결과인 요구 조건 명세를 DBMS에 독립적인 E-R 다이어그램으로 작성함
- DBMS에 독립적인 개념 스키마를 설계함

6. 논리적 설계(데이터 모델링)
- 현실 세계에서 발생하는 자료를 컴퓨터가 이해하고 처리할 수 있는 물리적 저장장치에 저장할 수 있도록
  변환하기 위해 특정 DBMS가 지원하는 논리적 자료 구조로 변환시키는 과정
- 개념 세계의 데이터를 필드로 기술된 데이터 타입과
  이 데이터 타입들 간의 관계로 표현되는 논리적 구조의 데이터로 모델화함
- 트랜잭션의 인터페이스를 설계함
- 관계형 데이터베이스라면 테이블을 설계하는 단계

7. 물리적 설계(데이터 구조화)
- 논리적 설계 단계에서 논리적 구조로 표현된 데이터를 디스크 등의 물리적 저장장치에 저장할 수 있는
  물리적 구조의 데이터로 변환하는 과정
- 다양한 데이터베이스 응용에 대해 처리 성능을 얻기 위해 데이터베이스 파일의 저장 구조 및 엑세스 경로를 결정함
- 저장 레코드의 형식, 순서, 접근 경로와 같은 정보를 사용하여 데이터가 컴퓨터에 저장되는 방법을 묘사함

8. 데이터베이스 구현
- 논리적 설계 단계와 물리적 설계 단계에서 도출된 데이터베이스 스키마를 파일로 생성하는 과정
- 사용하려는 특정 DBMS의 DDL(데이터 정의어)을 이용하여 데이터베이스 스키마를 기술한 후
  컴파일 하여 빈 데이터베이스 파일을 생성함
- 생성된 빈 데이터베이스 파일에 데이터를 입력함
- 응용 프로그램을 위한 트랜잭션을 작성함
- 데이터베이스 접근을 위한 응용 프로그램을 작성함





<데이터 모델의 개념>


1. 데이터 모델의 정의
- 현실 세계의 정보들을 컴퓨터에 표현하기 위해 단순화, 추상화하여 체계적으로 표현한 개념적 모형
- 데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약 조건 등을 기술하기 위한 개념적 도구들의 모임
- 현실 세계를 데이터베이스에 표현하는 중간 과정, 즉 데이터베이스 설계 과정에서 데이터의 구조(Schema)를
  논리적으로 표현하기 위해 사용되는 지능적 도구
- 데이터 모델 구성 요소 : 개체, 속성, 관계
- 데이터 모델 종류 : 개념적, 논리적, 물리적 데이터 모델
- 데이터 모델에 표시할 요소 : 구조, 연산, 제약 조건

2. 데이터 모델의 구성 요소
- 개체(Entity)
     : 데이터베이스에 표현하려는 것으로, 사람이 생삭하는 개념이나 정보 단위 같은 현실 세계의 대상체
- 속성(Attribute)
     : 데이터의 가장 작은 논리적 단위로서 파일 구조상의 데이터 항목, 데이터 필드에 해당
- 관계(Relationship)
     : 개체 간의 관계, 속성 간의 논리적인 연결을 의미함

3. 개념적 데이터 모델 (= 정보 모델)
- 현실 세계에 대한 인간의 이해를 돕기 위해 현실세계에 대한 인식을 추상적 개념으로 표현하는 과정
- 속성들로 기술된 개체 타입과 이 개체 타입들 간의 관계를 이용하여 현실 세계를 표현함
- 현실 세계에 존재하는 개체를 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 함
- E-R 모델

4. 논리적 데이터 모델
- 개념적 모델링 과정에서 얻은 개념적 구조를 컴퓨터가 이해하고 처리할 수 있는
  컴퓨터의 세계의 환경에 맞도록 변환하는 과정
- 필드로 기술된 데이터 타입과 이 데이터 타입들 간의 관계를 이용하여 현실 세계를 표현함
- 단순히 데이터 모델이라고 하면 논리적 데이터 모델을 의미함
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용함
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계, 계층, 네트워크 모델로 구분함

5. 논리적 데이터 모델의 품질 검증
- 완성된 논리 데이터 모델이 기업에 적합한지를 확인하기 위해 품질을 검증하는 것
- 논리 데이터 품질 기준에 따라 개체, 속성, 관계, 식별자, 모델 전반 등에 대하여 검토 체크리스트를 작성하고
  체크리스트이 각 항목을 확인하는 방식으로 검증함
- 개체 품질 검증 항목
- 속성 품질 검증 항목
- 관계 품질 검증 항목
- 식별자 품질 검증 항목
- 전반적인 품질 검증 항목

6. 데이터 모델에 표시할 요소
- 구조(Structure)
     : 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질을 표현함
- 연산(Operation)
     : 데이터베이스에 저장된 실제 데이터 처리하는 작업에 대한 명세로서 데이터베이스를 조작하는 기본 도구
- 제약 조건(Constraint)
     : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건

 



<데이터 모델의 구성 요소 - 개체(Entity)>


1. 개체의 정의 및 특징
- 데이터베이스에 표현하려는 것, 사람이 생각하는 개념이나 정보 단위 같은 현실 세계의 대상체
- 실세계에 독립적으로 존재하는 유, 무형의 정보로서 서로 연관된 몇 개의 속성으로 구성됨
- 파일 시스템의 레코드에 대응하는 것으로 어떤 정보를 제공하는 역할을 수행함
- 영속적(Persistence)으로 존재하는 개체의 집합
- 독립적으로 존재하거나 그 자체로서도 구별 가능함
- 유일한 식별자(United Identifier)에 의해 식별이 가능함
- 개체는 업무 프로세스에 의해 이용됨
- 다른 개체와 하나 이상의 관계(Relationship)가 있음

2. 개체 선정 방법
- 업무 문석에 관한 내용을 구체적으로 설명한 업무 기술서를 이용함
- 실제 업무를 담당하고 있는 담당자와 인터뷰를 함
- 업무 기술서와 인터뷰에서 확이하지 못한 정보가 있는지 실제 업무를 직접 견학하여 확인함
- 실제 업무에 사용되고 있는 장부와 전표를 이용함
- 이미 구축된 시스템이 있는 경우 해당 시스템의 산출물을 검토함
- 자료 흐름도(DFD)를 통해 업무 분석을 수행했을 경우 자료 흐름도의 자료 저장소(Data Store)을 이용함
- BPR(업무 프로세스 재설계)에 의해 업무를 재정의한 경우 관련 개체를 찾음

3. 개체명 지정 방법
- 일반적으로 해당 업무에서 사용하는 용어로 지정함
- 약어 사용은 되도록 제한함
- 가능하면 단수 명사를 사용함
- 모든 개체명은 유일해야 함
- 가능하면 개체가 생성되는 의미에 따라 의미를 부여함




<데이터 모델의 구성 요소 - 속성(Attribute)>



1. 속성의 정의 및 특징
- 데이터베이스를 구성하는 가장 작은 논리 단위
- 파일 구조상의 데이터 항목, 데이터 필드에 해당함
- 개체를 구성하는 항목
- 개체의 특성을 기술함
- 속성의 수를 디그리(Degree) 또는 차수라고 함

2. 속성의 종류
- 속성의 특성에 따른 분류
     - 기본 속성(Basic Attribute)
          : 업무 분석을 통해 정의한 속성
            속성 중 가장 많고 일반적
            업무로부터 분석한 속성이라도 업무상 코드로 정의한 속성은 기본 속성에서 제외함
     - 설계 속성(Designed Attribute)
          : 원래 업무 상 존재하지 x, 설계 과정에서 도출해내는 속성
            업무에 필요한 데이터 외에 데이터 모델링을 위해 업무를 규칙화하려고
            속성을 새로 만들거나 변형하여 정의하는 속성
     - 파생 속성(Derived Attribute)
          : 다른 속성으로부터 계산이나 변형 등의 영향을 받아 발생하는 속성
            패생 속성은 되도록 적은 수를 정의하는 것이 좋음
- 개체 구성 방식에 따른 분류
     - 기본키 속성(Primary Key Attribute)
          : 개체를 식별할 수 있는 속성
     - 외래키 속성(Foreign Key Attribute)
          : 다른 개체와의 관계에서 포함된 속성
     - 일반 속성
          : 개체에 포함되어 있고 기본키, 왜래키에 포함되지 않은 속성

3. 속성 후보 선정 원칙
- 속성으로 지정할 후보는 최대한 많이 선택하는 것이 좋음
- 선정 원칙
     - 원시(Source) 속성으로 판단되는 속성 후보는 버리지 않음
     - 소그룹별로 속성 후보군을 만들고 가장 근접한 개체에 할당함

4. 속성명 지정 원칙
- 웹이나 클라이언트/서버(Client/Server) 등 어떠한 환경에서든
  사용자 인터페이스에 나타나기 때문에 정확하고 혼란이 없도록 지정해야 함
- 속성명 지정 원칙
     - 해당 업무에서 사용하는 용어로 지정
     - 서술형으로 지정x
     - 가급적이면 약어의 사용은 제한
     - 개체명은 속성명으로 사용할 수 x
     - 개체에서 유일하게 식별 가능하도록 지정함

 


 

<데이터 모델의 구성 요소 - 관계(Relationship)>



1. 관계의 정의
- 개체와 개체 사이의 논리적인 연결을 의미함
- 관계에는 개체간의 관계와 속성 간의 관계가 있음

2. 관계의 형태
- 일 대 일(1:1)
     : 개체 집합 A의 각 원소가 개체 집합 B의 원소 한 개와 대응하는 관계
- 일 대 다(1:N)
     : 개체 집합 A의 각 원소는 개체 집합 B의 원소 여러개와 대응하고 있지만,
       개체 집합 B의 각 원소는 개체 집합 A의 원소 한개와 대응하는 관계
- 다 대 다(N:M)
     : 개체 집합 A의 각 원소는 개체 집합 B의 원소 여러개와 대응하고,
       개체 집합 B의 원소도 개체 집합 A의 원소 여러개와 대응하는 관계

3. 관계의 종류
- 종속 관계(Dependent Relationship)
     : 두 개체 사이의 주, 종 관계를 표현한 것으로, 식변 관계와 비식별 관계가 있음
- 중복 관계(Redundant Relationship)
     : 두 개체 사이에 2번 이상의 종속 관계가 발생하는 관계
- 재귀 관계(Recursive Relationship) (=순환 관계 (Recursive Relationship))
     : 개체가 자기 자신과 관계를 맺는 것
- 배타 관계(Exclusive Relationship)
     : 개체의 속성이나 구분자를 기준으로 개체의 특성을 분할하는 관계로, 배타 AND 관계와 배타 OR 관계로 구분함
       배타 AND 관계는 하위 개체들 중 속성이나 구분자 조건에 따라 하나의 개체만을 선택
       배태 OR 관계는 하나 이상의 개체를 선택할 수 있음




 

<E-R(개체-관계) 모델>


1. E-R(Entity-Relationship, 개체-관계) 모델의 개요
- 개념적 데이터 모델의 가장 대표적인 것으로, 1976년 피터 첸(Peter Chen)에 의해 제안되고,
  기본적인 구성 요소가 정립됨
- 개체와 개체 간의 관계를 기본 요소로 이용하여 현실 세계의 무질서한 데이터를
  개념적인 논리 데이터로 표현하기 위한 방법으로 많이 사용되고 있음
- 개체 타입(Entitiy Type)과 이들 간의 관계 타입(Relationship Type)을 이용해 현실 세계를 개념적으로 표현함
- 데이터를 개체(Entity), 관계(Relationship), 속성(Attribute)으로 묘사함
- 특정 DBMS를 고려한 것은 아님
- 다이어그램으로 표현하며, 1:1, 1:N, N:M 등의 관계 유형을 제한 없이 나타낼 수 있음
- 최초에는 개체, 관계, 속성과 같은 개념들로 구성되었으나
  나중에는 일반화 계층같은 복잡한 개념들이 첨가되어 확장된 모델로 발전함

2. E-R 다이어그램
- E-R 모델의 기본 아이디어를 이해하기 쉽게 기호를 사용하여 시각적으로 표현한 그림
- 실체 간의 관계는 물론 조직 사용자, 프로그램, 데이터 등 시스템 내에서 역할을 가진 모든 실체들을 표현함
- 데이터에 대해 개발자, 관리자 사용자들이 서로 다르게 인식하고 있는 뷰(View)들을 하나로 단일화시킴
- 피터 첸 표기법, 정보 공학 표기법, 바커 표기법 등이 있음

3. 피터 첸 표기법(Peter Chen Notation)


4. 정보 공학 표기법(Information Engineering Notation)
- 1981년 클리프 핀켈쉬타인(Clive Finkelstein)과 제임스 마틴(James Martin)이 공동 개발함

 

5. 바커 표기법(Barker Notation)
- 영국 컨설팅 회사 CACI에서 개발하였고, 리차드 바커(Richard Barker)에 의해 정립됨

 


 

<관계형 데이터베이스의 구조>


1. 관계형 데이터베이스의 개요
- 1970년 IBM에 근무하던 코드(E. F. Codd)에 의해 처음 제안되었음
- 관계형 데이터베이스를 구성하는 개체(Entity)나 관계(Relationship)를 모두 릴레이션(Relation)이라는 표(Table)로 표현
- 릴레이션은 개체를 표현하는 개체 릴레이션, 관계를 나타내는 관계 릴레이션으로 구분 가능
- 장점 : 간결하고 보기 편리하며, 다른 데이터베이스의 변환이 용이함
- 단점 : 성능이 다소 떨어짐

2. 관계형 데이터베이스의 Relation 구조
- 릴레이션은 데이트들을 표(Table)의 형태로 표현한 것으로
  구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- 튜플(Tuple)
     - 릴레이션을 구성하는 각각의 행
     - 속성의 모임으로 구성됨
     - 파일 구조에서 레코드와 같은 의미
     - 튜플의 수를 카다널리티(Cardinality) 또는 기수, 대응수라고 함
- 속성(Attribute)
     - 데이터베이스를 구성하는 가장 작은 논리적 단위
     - 파일 구조상 데이터 항목, 데이터 피르에 해당함
     - 개체의 특성을 기술함
     - 속성의 수디그리(Degree) 또는 차수라고 함
- 도메인(Domain)
     - 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomatic)값들의 집합
     - 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데에도 이용됨

3. 릴레이션의 특징
- 한 릴레이션에 똑같은 튜플이 포함될 수 없으므로 릴레이션에 포함된 튜플은 모두 상이함
- 한 릴레이션에 포함된 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있음
- 릴레이션을 구성하는 튜플으 유일하게 식별하기 위해 속성들의 부분집합을 키(Key)로 설정함
- 속성의 값은 논리적으로 더 이상 쪼갤 수 없는 원자값만을 저장함




 

<관계형 데이터베이스의 제약 조건 - 키(Key)>


1. 키(Key)의 개념 및 종류
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때
  튜플들을 서로 구분할 수 있는 기준이 되는 애트리뷰트를 말함
- 키의 종류에는 후보키, 기본키, 대체키, 슈퍼키, 왤키 등이 있음

2. 후보키(Candidate Key)
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들을 말함
- 하나의 릴레이션내에서는 중복된 튜플들이 있을 수 없으므로 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재함
- 후보키는 릴레이션에 있는 모든 튜플에 대해서 유일성, 최소성만족시켜야 함
- 유일성
     : 하나의 키 값으로 하나의 튜플만으 유일하게 식별할 수 잇어야 함
- 최소성
     : 모든 레코들을 유일하게 식별하는 데 꼭 필요한 속성으로만 구성되어야 함

3. 기본키(Primary Key)
- 후보키 중에서 특별히 선정된 주키(Main Key)로 중복된 값을 가질 수 없다
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- 기본키는 후보키의 성질을 갖는다. 즉, 유일성과 최소성을 가지며 튜플을 식별하기 위해 반드시 필요한 키
- 기본키는 NULL 값을 가질 수 없다. 즉, 튜플에서 기본키로 설정된 속성에는 NULL 값이 있어서는 안된다.

4. 대체키(Alternate Key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미함

5. 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들이 집합으로 구성된 키
- 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성만족시키지만, 최소성만족시키지 못함

6. 외래키(Foreign Key)
- 다른 릴레이션의 기본키를 참조하느 속성 또는 속성들의 집합을 의미함
- 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간의 참조 관계를 표현하는데 중요한 도구
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가
  동일한 도메인 상에서 정의되었을 때의 속성 A를 외래키라고 함
- 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없음




 

<관계형 데이터베이스의 제약 조건 - 무결성>


1. 무결성(Integrity)의 개념 및 종류
- 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실세계의 실제 값이 일치하는 정확성을 의미함
- 데이터베이스에 들어있는 데이터의 정확성을 보장하기 위해
  부정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약조건을 말함
- 개체 무결성, 도메인 무결성, 참조 무결성, 사용자 정의 무결성 등이 있음

2. 개체 무결성(Entity Integrity, 실체 무결성)
- 개체 무결성은 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정

3. 도메인 무결성(Domain Integrity, 영역 무결성)
- 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정

4. 참조 무결성(Referential Integrity)
- 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 함
- 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
- 외래키와 참조하려는 테이블의 기본키는 도메인과 속성 개수가 같아야 함

5. 사용자 정의 무결성(User-Defined Integrity)
- 속성들 값이 사용자가 정의한 제약 조건에 만족해야 한다는 규정

6. 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화해야 함
- 프로그램이 완성되고 데이터가 저장된 상태에서 무결성을 정의할 경우 많은 비용이 발생
  --> 데이터베이스 구축 과정에서 정의함
- 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음
- 애플리케이션
     - 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하느 코드를 데이터를 조작하는 프로그램 내에 추가한다.
     - 데이터베이스는 데이터 무결성 제약을 정의 x --> 복잡한 규칙 등은 애플리케이션 내에서 처리
     - 장점 : 복잡한 무결성 조건의 구현이 가능
     - 단점 : 소스코드에 분산디어 있어 관리가 힘들고, 개별적인 시행으로 인해 적정성 검토가 어려움
- 데이터베이스 트리거
     - 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가함
     - 장점 : 통합 관리가 가능하고, 복잡한 요구 조건의 구현이 가능함
     - 단점 : 운영 중 변경이 여럽고, 사용상 주의가 필요함
- 제약 조건
     - 데이터베이스에 제약 조건을 설정하여 무결성을 유지함
     - 장점 : 통합 관리 가능, 간단한 선언으로 구현 가능, 변경 용이, 오류 데이터 발생 방지 등이 있음
     - 단점 : 복잡한 제약 조건의 구현 과 예외적인 처리가 불가능

 


 

<관계대수 및 관계 해석>


1. 관계대수의 개요
- 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적 언어
- 릴레이션을 처리하기 위해 연산자와 연산 규칙을 제공하는 언어로, 피연산자 결과 모두 릴레이션이다.
- 질의에 대한 해를 구하기 위해 수행하야 할 연산의 순서를 명시함
- 순수 관계 연산자
     : 관계대수에는 관계 데이터베이스에 적용하기 위해 특별히 개발
       Select, Project, Join, Division
- 일반 집합 연산자
     : 수학적 집합 이론에서 사용
       UNION(합집합), INTERSECTION(교집합), DIFFERENCE(차집합), CARTESIAN PRODUCT(교차곱)

2. SELECT (= 수평 연산)
- 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산
- 릴레이션의 행(가로)에 해당하는 튜플을 구하는 것
- 연산자의 기호는 그리스 문자 시그마(σ)를 사용함
표기 형식 : σ<조건>(R)
     - R은 릴레이션 이름
     - 조건에서는 기호를 사용한 비교 연산이 허용되며,
       논리 연산자를 사용하여 여러 개의 조건들을 하나의 조건으로 결합시킬 수도 있음

3. Project
- 주어진 릴레이션에서 속성 리스트(Attribute List)에 제시된 속성값만을 추출하여 새로운 릴레이션을 만드는 연산
- 연산 결과에 중복이 발생하면 중복이 제거됨
- 릴레이션의 열(세로)에 해당하는 Attribute를 추출하는 것이므로 수직 연산자라고도 함
- 연산자의 기호는 그리스 문자 파이(π)를 사용함
- 표기 형식 : π<속성리스트>(R)
     - R은 릴레이션 이름

4. Join
- 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
- Join 결과로 만들어진 릴레이션의 차수는 조인된 두 릴레이션의 차수를 합한 것과 같음
- Join 결과는 Cartesian Product(교차곱)를 수행한 다음 Select를 수행한 것과 같다.
- 연산자의 기호는 ⋈를사용함
- 표기 형식 : R ⋈ 키속성r=키속성s S
     - 키 속성 r은 릴레이션 R의 속성이고, 키 속성 s는 릴레이션 S의 속성이다

5. Division
- X⊃Y인 두개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서
  S가 가진 속성을 제외한 속성만을 구하는 연산
- 연산자의 기호는 ÷를 사용함
- 표기 형식 : R [속성r ÷ 속성s] S
     - 속성 r은 릴레이션 R의 속성, 속성 s는 릴레이션 S의 속성, 속성 r과 속성 s는 동일 속성값을 가지는 속성이여야 함

6. 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자로서 릴레이션 연산에도 그대로 적용할 수 있음
- 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)를 처리하기 위해서는 합병 조건을 만족해야 함

7. 관계해석(Relational Calculus)
- 관계 데이터 모델의 제안자인 코드(E. F. Codd)가 수학의 Predicate Calculus(술어 해석)에 기반을 두고
  관계 데이터베이스를 위해 제안함
- 관계 데이터의 연산을 표기하는 방법, 원하는 정보를 정의할 때는 계산 수식을 사용함
- 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특징을 지님
- 튜플 관계해석과 도메인 관계해석이 있음
- 기본적으로 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력면에서 동등하며,
  관계대수로 표현한 식은 관계 해석으로 표현할 수 있음
- 질의어료 표현함






<정규화(Normalization)>


1. 정규화의 개요
- 함수의 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를
  더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어가는 과정
- 하나의 종속성이 하나의 릴레이션에 포함될 수 있도록 분해해가는 과정
- 차수가 높아질수록 만족시켜야 할 제약 조건이 늘어남
- 데이터베이스의 노리적 설계 단계에서 수행함
- 논리적 처리 및 품질에 큰 영향을 미침
- 일관성, 정확성, 단순성 ,비중복성, 안정성 등을 보장함
- 정규화 수준이 높을수록 유연한 데이터 구축이 가능하고 데이터의 정확성이 높아짐
- 정규화 수준이 높을수록 물리적 접근이 복잡하고 너무 많은 조인으로 인해 조회 성능이 저하됨

2. 정규화의 목적
- 데이터구조의 안정성 및 무결성을 유지함
- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만듦
- 효과적인 검색 알고리즘 생성 가능
- 데이터 중복을 배제하여 이상(Anomaly)의 발생 방지 및 자료 저장 공간의 최소화가 가능
- 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄임
- 데이터 모형의 단순화가 가능
- 속성의 배열 상태 검증이 가능
- 개체의 속성의 누락 여부 확인이 가능
- 자료 검색과 추출의 효율성을 추구

3. 이상(Anormaly)의 개념 및 종류
- 정규화를 거치지 않으면 데이터베이스 내에 데이터들이 불필요하게 중복되어
 릴레이션 조작 시 예기치 못한 곤란한 현상 발생
- 삽입 이상(Insetion Anomaly)
     : 릴레이션에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들도 함께 삽입되는 현상
- 삭제 이상(Dletion Anomaly)
     : 릴레이션에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 연쇄가 일어나는 현상
- 갱신 이상(Update Anomaly)
     : 릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상

4. 정규화의 원칙
- 정보의 무손실 표현
     : 하나의 스키마를 다른 스키마로 변환할 때 정보의 손실이 있어서는 안 됨
- 분리의 원칙
     : 하나의 독립된 관계성은 하나의 독립된 릴레이션으로 분리시켜 표현해야 함
- 데이터의 중복성이 감소되어야 함

5. 정규화 과정
- 1NF(제1정규형)
     : 릴레이션에 속한 모든 도메인이 원자값만으로 되어있는 정규형
       릴레이셔의 모든 속성 값이 원자 값으로만 되어 있는 정규형
       릴레이션의 모든 속성이 단순 영역에서 정의됨
- 2NF(제2정규형)
     : 릴레이션 R이 1NF이고, 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형
- 3NF(제3정규형)
     : 릴레이션 R이 2NF이고, 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않는 정규형
       무손실 조인, 종속성 보존을 저해하지 않고 항상 3NF 설계를 얻을 수 있음
- BCNF(Boyce-Codd 정규형)
     : 릴레이션 R에서 결정자가 모두 후보키(Candiate Key)인 정규형
       3NF에서 후보키가 여러개 존재하고 서로 중첩되는 경우에 적용하는, 강한 제3정규형이라고 함
       모든 BCNF(Boyce-Codd Normal Form)가 종속성을 보존하는 것은 x
       BCNF의 제약 조건
            : 키가 아닌  모든 속성은 각 키에 대하여 완전 종속해야 함
              키가 아닌 모든 속성은 그 자신이 부분적으로 들어가 있지 않은 모든 키에 대하여 완전 종속해야 함
              어떤 속성도 키가 아닌 속성에 대해서는 완전 종속할 수 없음
- 4NF(제4정규형)
     : 릴레이션 R에 다치 종속이 성립하는 경우 R의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
- 5NF(제5정규형, PJ/NF)
     : 릴레이션 R의 모든 조인 종속이 R의 후보키를 통해서만 성립되는 정규형




 

<반 정규화(Denormalization)> ☆


1. 반정규화의 개념
- 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로
  의도적으로 정규화 원칙을 위배하는 행위
- 시스템의 성능이 향상, 관리의 효율성 증가 but 데이터의 일관성, 정합성이 저하될 수 있음
- 과도한 반정규화는 오히려 성능을 저하시킬 수 있음
- 반정규화를 위해서는 사전의 데이터의 일관성과 무결성을 우선으로 할지, 
  데이터베이스의 성능과 단순화를 우선적으로 할지를 결정해야 함
- 테이블 통합, 테이블 분할, 중복 테이블 추가, 중복 속성 추가 등이 있음

2. 테이블 통합
- 두 개의 테이블이 조인(Join)되는 경우가 많아 하느이 테이블로 합쳐 사용하는 것이 성능 향상에 도움이 될 경우 수행
- 두 개의 테이블에서 발생하는 프로세스가 동일하게 자주 처리되는 경우,
  두 개의 테이블을 이용하여 항상 조회를 수행하는 경우 테이블 통합을 고려함
- 테이블 통합의 종류에는 1:1 관계 테이블 통합, 1:N 관계 테이블 통합, 슈퍼타입/서브타입 테이블 통합이 있음
- 테이블 통합 시 고려 사항
     : 테이블 검색은 간편하지만 레코드 증가로 인해 처리량이 증가함
       테이블 통합으로 인해 입력, 수정, 삭제 규칙이 복잡해질 수 있음
       Not Null, Default, Check 등의 제약조건(Constraint)을 설계하기 어려움

3. 테이블 분할
- 수평 분할
     - 레코드(Record)를 기준으로 테이블을 분할하는 것
     - 레코드별로 사용 빈도의 차이가 큰 경우 사용 빈도에 따라 테이블을 분할함
- 수직 분할
     - 하나의 테이블에 속성이 너무 많을 경우 속성을 기준으로 테이블을 분할하는 것
     - 갱신 위주의 속성 분할
          : 데이터 갱신 시 레코드 잠금으로 인해 다른 작업을 수 행할 수 없으므로
            갱신이 자주 일어나는 속성들을 수직 분할하여 사용함
     - 자주 조회되는 속성 분할
          : 테이블에서 자주 조회되는 속성이 극히 일부일 경우 자주 사용되는 속성들을 수직 분할하여 사용함
     - 크키가 큰 속성 분할
          : 이미지나 2GB 이상 저장될 수 있는 텍스트 형식 등으로 된 속성들을 수직 분할하여 사용함
     - 보안을 적용해야 하는 속성 분할
          : 테이블 내의 특정 속성에 대하 보안을 적용할 수 없으므로 보안을 적용해야 하는 속성들을 수직 분할하여 사용
- 테이블 분할 시 고려 사항
     - 기본 키의 유일성 관리가 어려워짐
     - 데이터 양이 적거나 사용 빈도가 낮은 경우 테이블 분할이 필요한지를 고려해야 함
     - 분할된 테이블로 인해 수행 속도가 느려질 수 있음
     - 데이터 검색에 중점을 두어 테이블 분할 여부를 결정해야 함

4. 중복 테이블 추가
- 여러 테이블에서 데이터를 추출해서 사용해야 하거나 다른 서버에 저장된 테이블을 이용해야 하는 경우
  중복 테이블을 추가하여 작업의 효율성을 향상시킬 수 있음
- 중복 테이블으 추가하는 경우
     - 정규화로 인해 수행 속도가 느려지는 경우
     - 많은 범위, 특정 범위의 데이터를 자주 처리해야 하는 경우
     - 처리 범위를 줄이지 않고는 수행 속도를 개선할 수 없는 경우
- 중복 테이블을 추가하는 방법은 다음과 같음
     - 집계 테이블의 추가
          : 집계 데이터를 위한 테이블을 생성하고, 각 원본 테이블에 트리거(Trigger)을 설정하여 사용하는 것
            트리거의 오버헤드(Overhead)에 유의해야 함
     - 진행 테이블의 추가
          : 이력 관리 등의 목적으로 추가하는 테이블로,
            적절한 데이터양의 유지와 활용도를 높이기 위해 기본키를 적절히 설정함
     - 특정 부분만을 포함하는 테이블의 추가
          : 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분마으로 새로운 테이블을 생성함

5. 중복 속성 추가
- 조인해서 데이터를 처리할 때 데이터를 조회하느 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가하는 것
- 중복 속성을 추가하면 데이터의 무결성 확보가 어려움, 디스크 공간이 추가로 필요함
- 중복 속성을 추가하는 경우
     - 조인이 자주 발생하는 속성인 경우
     - 접근 경로가 복잡한 속성인 경우
     - 엑세스의 조건으로 자주 사용되는 속성인 경우
     - 기본키의 형태가 적절하지 않거나 여러개의 속성으로 구성된 경우
- 중복 속성 추가 시 고려 사항
     - 테이블 중복과 속성의 중복을 고려해야 함
     - 데이터 일관성 및 무결성에 유의해야 함
     - SQL 그룹 함수를 이용하여 처리할 수 있어야 함
     - 저장 공간의 지나친 낭비를 고려함

 




<시스템 카탈로그>


1. 시스템 카탈로그(System Catalog)의 의미
- 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
- 시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나
  명세에 관한 정보를 유지 관리하는 시스템 테이블 
- 카탈로드를이 생성되면 데이터 사전(Data Dictionary)에 저장되기 때문에
  좁은 의미로는 카타로그를 데이터 사전이라고 함

2. 시스템 카탈로그 저장 정보 ( = 메타 데이터(Meta-Data))
- 메타 데이터의 유형
     - 데이터베이스 객체 정보
          : 테이블(Table), 인덱스(Index), 뷰(View) 등의 구조 및 통계 정보
     - 사용자 정보
          : 아이디, 패스워드, 접근 권한 등
     - 테이블의 무결성 제약 조건 정보
          : 기본키, 외래키, NULL 값 허용 여부 등
     - 함수, 프로시저, 트리거 등에 대한 정보

3. 카탈로그의 특징
- 카탈로그 자체도 시스템 테이블로 구성되어 있어 일반 이용자도 SQL을 이용하여 내용을 검색해 볼 수 있음
- INSERT, DELETE, UPDATE문으로 카탈로그를 갱신하는 것은 허용되지 않음
- 데이터베이스 시스템에 따라 상이한 구조를 가짐
- 카탈로그는 DBMS가 스스로 생성하고 유지함
- 카탈로그의 갱신
     : 사용자가 SQL문을 실행시켜 기본 테이블, 뷰, 인덱스 등에 변화를 주면 시스템이 자동으로 갱신함
- 분산 시스템에서의 카탈로그
     : 보통의 릴레이션, 인덱스 사용자 등의 정보를 포함
       + 위치 투명성중복 투명성을 제공하기 위해 필요한 모든 제어 정보를 가져야 함

4. 카탈로그/데이터 사전을 참조하기 위한 DBMS 내의 모듈 시스템
- 데이터 정의어 번역기(DDL Complier)
     : DDL을 메타 데이터를 갖는 테이블(카탈로그)로 변환하여 데이터 사전에 저장시킴
- 데이터 조작어 번역기(DML Complier)
     : 응용 프로그램에 삽입된 DML문을 주 언어로 표현한 프로시저 호출로 변환하여 질의 처리기와 상호 통신함
- Data Directory
     : 데이터 사전에 수록된 데이터를 실제로 접근하는데 필요한 정보를 관리 유지하는 시스템
       시스템 카탈로그는 사용자와 시스템 모두 접근할 수 있지만, 데이터 데릭터리는 시스템만 접근 가능
- 질의 최적화기
     : 사용자의 요구를 효율적인 형태로 변환하고 질의르 처리하는 좋은 전략을 모색함
- 트랜잭션 처리기
     : 복수 사용자 환경에서 평행으로 동시에 일어나는 트랜잭션 문제를 해결하여,
       각각의 사용자가 데이터베이스 자우너을 배타적으로 이용할 수 있도록 함

 

www.yes24.com/Product/Goods/82838724?OzSrank=6

 

2020 시나공 정보처리기사 필기

2020년 정보처리기사 NCS기반 전면 개편!정보처리기사 시험은 NCS 학습 모듈 중 정보통신 분야의 ‘정보기술’ 분류에 포함된 ‘정보기술개발’과 ‘정보기술운영’에 속한 125개의 학습 모듈을

www.yes24.com

* 2020 시나공 정보처리기사 필기 요약한 내용입니다.

댓글