정보처리기사 실기 대비_파트2_2
08 Jul 2023
정보처리기사 실기 대비
2. 데이터 입출력 구현
Section39 E-R(개체-관계) 모델
- E-R(Entity-Relationship, 개체-관계) 모델
- 개체 간 관계를 기본 요소로 이용하여 현실 세계의 무질서한 데이터를 개념적인 논리 데이터로 표현하기 위한 방법
- 1976년 피터 첸에 의해 제안되고 기본적인 구성 요소 정립
- 개념적 데이터 모델의 가장 대표적인 것
- 개체 타입과 이들 간의 관계 타입을 이용해 현실 세계를 개념적으로 표현
- 데이터를 객체, 관계, 속성으로 묘사
- 다이어그램으로 표현, 1:1, 1:N, 1:M 등의 관계 유형을 제한 없이 나타낼 수 있음
- E-R 다이어그램
- 사각형 : 개체 타입
- 마름모 : 관계 타입
- 타원 : 속성
- 이중 타원 : 다중값 속성(복합 속성)
- 밑줄 타원 : 기본키 속성
- 복수 타원 : 복합 속성
- 관계 : 1:1, 1:N, N:M 등의 개체 간 관계에 대한 대응수를 선 위에 기술함
- 선, 링크 : 개체 타입과 속성을 연결
Section40 관계형 데이터베이스의 구조 / 관계형 데이터 모델
- 관계형 데이터베이스
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 데이터베이스
- 1970년 코드에 의해 처음 제안
- 개체와 관계를 모두 릴레이션이라는 표로 표현하기 때문에 개체를 개체 릴레이션과 관계 릴레이션이 존재
- 장점 : 간결, 보기 편리, 다른 데이터베이스로의 변환이 용이
- 단점 : 성능이 다소 떨어짐
- 관계형 데이터베이스의 릴레이션 구조
- 데이터들을 표의 형태로 표현한 것
- 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성됨
- 튜플
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성
- 레코드와 같은 의미
- 튜플의 수를 카디널리티, 또는 기수, 대응수라고 함
- 속성
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상의 데이터 항목 또는 데이터 필드에 해당됨
- 속성은 개체의 특성을 기술
- 속성의 수를 디그리 또는 차수라고 함
- 도메인
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합
- 도메인은 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데에도 이용됨
- 릴레이션의 특징
- 한 릴레이션에는 똑같은 튜플이 포함될 수 없음. 릴레이션에 포함된 튜플들을 모두 상이함
- 한 릴레이션에 포함된 튜플 사이에는 순서가 없음
- 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변함
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음
- 속성의 유일한 식별을 위해 속성의 명칭은 유일해야 하지만, 속성을 구성하는 값은 동일한 값이 있을 수 있음
- 리레이션을 구성하는 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키로 설정함
- 속성의 값은 논리적으로 더 이상 쪼갤 수 없는 원자값만을 저장함
- 관계형 데이터 모델
- 2차원적인 표를 이용해서 데이터 상호 관계를 정의하는 DB구조를 말함
- 가장 널리 사용되는 데이터 모델
- 파일 구조처럼 구성한 테이블들을 하나의 DB로 묶어서 테이블 내에 있는 속성들 간의 관계를 설정하거나 테이블 간의 관계를 설정하여 이용함
- 기본키와 이를 참조하는 외래키로 데이터 간의 관계를 표현
- 계층 모델과 망 모델의 복잡한 구조를 단순화시킨 모델
- 관계형 모델의 대표적 언어는 SQL
- 1:1, 1:N, N:M 관계를 자유롭게 표현할 수 있음
Section41 관계형 데이터베이스의 제약 조건 - 키
- 키
- 데이터베이스에서 조건이 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 조건
- 후보키
- 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성들
- 유일성과 최소성을 모두 만족시켜야 함
- 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함
- 최소성 : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함
- 기본키
- 후보키 중에서 특별히 선정된 주키
- 중복된 값을 가질 수 없음
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- NULL을 가질 수 없음
- 대체키
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미
- 보조키라고도 함
- 슈퍼키
- 한 릴레이션 내에서 속성들의 집합으로 구성된 키
- 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음
- 슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족하지 못함
- 외래키
- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미
- 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인상에서 정의되었을 때의 속성 A를 외래키라고 함
- 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없음
Section42 관계형 데이터베이스의 제약 조건 - 무결성
- 무결성
- 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미
- 무결성 제약 조건은 데이터베이스에 들어 있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지 하기 위한 제약 조건을 말함
- 무결성의 종류
- 개체 무결성 : 기본키의 어떤 속성도 Null 값이나 중복값을 가질 수 없음
- 참조 무결성 : 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야 함
- 도메인 무결성 : 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정
- 사용자 정의 무결성 : 속성 값들이 사용자가 정의한 제약 조건에 만족되어야 한다는 규정
- NULL 무결성 : 릴레이션의 특정 속성 값이 NULL이 될 수 없도록 하는 규정
- 고유 무결성 : 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성값들이 서로 달라야 한다는 규정
- 키 무결성 : 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다는 규정
- 관계 무결성 : 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정
- 데이터 무결성 강화
- 데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화해야 함
- 데이터 무결성은 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음
- 애플리케이션 : 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 프로그램 내에 추가
- 데이터베이스 트리거 : 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가함
- 데이터베이스에 제약 조건을 설정하여 무결성을 유지함
Section43 관계대수 및 관계해석
- 관계대수
- 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
- 릴레이션을 처리하기 위해 연산자와 연산규칙 제공, 피연산자와 연산 결과가 모두 릴레이션
- 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시
- 관계 데이터베이스에 적용하기 위해 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 있음
- 순수 관계 연산자
- Select
- 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산
- 릴레이션의 행에 해당하는 튜플을 구하는 것이므로 수평 연산이라고도 함
- Project
- 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
- 연산 결과에 중복이 발생하면 중복이 제거됨
- 릴레이션의 열에 해당하는 속성을 추출하는 것이므로 수직 연산자라고도 함
- Join
- 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
- Join의 결과는 Cartesian Product(교차곱)을 수행한 다음 Select를 수행한 것과 같음
- Division
- x ⊃ y인 두 개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산
- 일반 집합 연산자
- 수학적 집합 이론에서 사용하는 연산자
- 합집합, 교집합, 차집합을 처리하기 위해서는 합병 조건을 만족해야 함
- 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징을 요약하면 다음과 같음
- 합집합 : 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거되는 연산
- 교집합 : 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산
- 차집합 : 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산
- 교차곱 : 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산
- 관계해석
- 관계 데이터의 연산을 표현하는 방법
- 코드가 수학의 Predicate Calculus에 기반을 두고 관계 데이터베이스를 위해 제안
- 관계 해석은 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지닌다.
- 원하는 정보를 정의할 때는 계산 수식을 사용한다.
Section44 이상 / 함수적 종속
- 이상(Anomaly)
- 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고, 이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상
- 삽입 이상
- 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상
- 삭제 이상
- 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄 삭제가 발생하는 현상
- 갱신 이상
- 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상
- 함수정 종속(Functional Dependency)
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이라 하자. 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고, X -> Y로 표기
- 함수적 종속은 데이터의 의미를 표현. 현실 세계를 표현하는 제약 조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건
- X -> Y의 관계를 갖는 속성 X와 Y에서 X를 결정자라 하고, Y를 종속자라 한다. 예를 들어 학번 -> 이름에서는 학번이 결정자이고, 이름이 종속자이다.