정보처리기사 - 데이터 입출력 구현 #40~43

2023. 8. 19. 11:08자격증/정보처리기사

40. 관계형 데이터베이스의 구조 / 관계형 데이터베이스 모델

40.1 관계형 데이터베이스

2차원적인 표(Table)를 이용해서 데이터 상호 관계를 정의하는 데이터베이스
  • 1970년 IBM에 근무하던 코드(E. F. Codd)에 의해 처음 제안
  • 개체(Entity)와 관계(Relationship)를 모두 릴레이션(Relation)이라는 표(Table)로 표현하기 때문에 개체를 표현하는 개체 릴레이션과 관계를 표현하는 관계 릴레이션이 존재
  • 장점 : 간결하고 보기 편리하며, 다른 데이터베이스로의 변환이 용이
  • 단점 : 성능이 다소 떨어짐

40.2 관계형 데이터베이스의 릴레이션 구조

릴레이션은 데이터들을 표의 형태로 표현한 것으로, 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성

<학생 릴레이션>

  • 릴레이션 인스턴스 : 데이터 개체를 구성하고 있는 속성들에 데이터 타입이 정의되어 구체적인 데이터 값을 가진 것

40.3 튜플(Tuple)

릴레이션을 구성하는 각각의 행
  • 튜플은 속성의 모임으로 구성됨
  • 파일 구조에서 레코드와 같은 의미
  • 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 함
    • 학생 릴레이션에서 카디널리티는 4

40.4 속성(Attribute)

데이터베이스를 구성하는 가장 작은 논리적 단위
  • 파일 구조상의 데이터 항목 또는 데이터 필드에 해당
  • 속성은 개체의 특성을 기술
  • 속성의 수를 디그리(Degree) 또는 차수라고 함
    • 학생 릴레이션에서 디그리는 5

40.5 도메인(Domain)

하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합
  • 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데에도 이용
    • 학생 릴레이션에서 학년의 도메인은 1~4

40.6 릴레이션의 특징

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

40.7 관계형 데이터 모델(Relational Data Model)

2차원적인 표(Table)를 이용해서 데이터 상호 관계를 정의하는 DB 구조
  • 가장 널리 사용되는 데이터 모델
  • 파일 구조처럼 구성한 테이블들을 하나의 DB로 묶어서 테이블 내에 있는 속성들 간의 관계(Relationship)를 설정하거나 테이블 간의 관계를 설정하여 이용
    • 관계 모델에서의 테이블인 Relation과 개체와 개체 간의 관계를 Relationship의 차이 주의
  • 기본키(Primary Key)와 이를 참조하는 외래키(Foreign Key)로 데이터 간의 관계를 표현
    • 기본키(Primary Key) : 후보키 중에서 특별히 선정된 키로 중복된 값을 가질 수 있음
    • 외래키(Foreign Key) : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
  • 계층 모델과 망 모델의 복잡한 구조를 단순화시킨 모델
  • 관계형 모델의 대표적인 언어는 SQL
  • 1:1, 1:N, N:M 관계를 자유롭게 표현 가능

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

41.1 키(Key)

데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
  • 키의 종류
    • 후보키(Candidate Key)
    • 기본키(Primary Key)
    • 대체키(Alternate Key)
    • 슈퍼키(Super Key)
    • 외래키(Foreign Key)

41.2 후보키(Candidate Key)

릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
  • 기본키로 사용할 수 있는 속성들을 의미
  • 후보키는 유일성(Unique)과 최소성(Minimality) 을 모두 만족시켜야 함
종류 내용
유일성(Unique) 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함
최소성(Minimality) 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함

41.3 기본키(Primary Key)

후보키 중에서 특별히 선정된 주키(Main Key)
  • 중복된 값을 가질 수 없음
  • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
  • NULL 값을 가질 수 없음
    • 튜플에서 기본키로 설정된 속성에는 NULL 값이 있어서는 안 됨

41.4 대체키(Alternate Key)

후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키
  • 보조키라고도 함

41.5 슈퍼키(Super Key)

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

41.6 외래키(Foreign Key)

다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
  • 한 릴레이션에 속한 속성 A와 참조 릴레이션의 기본키인 B가 동일한 도메인 상에서 정의되었을 때의 속성 A를 외래키라고 함
  • 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없음

42. 관계형 데이터베이스의 제약 조건 - 무결성(Integrity)

42.1 무결성(Integrity)

데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성
  • 무결성 제약 조건은 데이터베이스에 들어 있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건을 말함

42.2 무결성의 종류

종류 내용
개체 무결성 기본 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정
참조 무결성 - 외래키 값은 Null 값이거나 참조 릴레이션의 기본키 값과 동일해야 함- 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정
도메인 무결성 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정
사용자 정의 무결성 속성 값들이 사용자가 정의한 제약조건에 만족되어야 한다는 규정
NULL 무결성 릴레이션의 특정 속성 값이 NULL 값이 될 수 없도록 하는 규정
고유 무결성 릴레이션의 특정 속성에 대해 각 튜플이 갖는 속성값들이 서로 달라야 한다는 규정
키 무결성 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다는 규정
관계 무결성 릴레이션에 어느 한 튜플의 삽입 가능 여부 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계에 대한 적절성 여부를 지정한 규정

42.3 데이터 무결성 강화

데이터 품질에 직접적인 영향을 미치므로 데이터 특성에 맞는 적절한 무결성을 정의하고 강화해야 함
  • 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 강화할 수 있음
종류 내용
애플리케이션 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 프로그램 내에 추가
데이터베이스 트리거 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가
제약 조건 데이터베이스에 제약 조건을 설정하여 무결성을 유지
  • 트리거(Trigger) : 데이터베이스 시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트(Event)가 발생할 때마다 자동으로 수행되는 절차형 SQL
  • 이벤트(Event) : 시스템에 어떤 일이 발생한 것을 말하며, 트리거에서 이벤트는 데이터의 입력, 갱신, 삭제와 같이 데이터를 조작하는 작업이 발생했음을 의미

43. 관계대수 및 관계해석

43.1 관계대수

관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어
  • 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하며, 피연산자와 연산 결과가 모두 릴레이션
  • 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시함
  • 관계 데이터베이스에 적용하기 위해 특별히 개발한 순수 관계 연산자와 수학적 집합 이론에서 사용하는 일반 집합 연산자가 존재
  • 기본적으로 관계대수와 관계해석은 관계 데이터베이스를 처리하는 기능과 능력면에서 동등
    • 관계대수로 표현한 식은 관계대수로 표현 가능

43.2 순수 관계 연산자

종류 특징 기호
Select - 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산- 릴레이션의 행에 해당하는 튜플(Tuple)을 구하는 것이므로 수평 연산이라고도 함- 예) σ score(점수) >70(학생 릴레이션) : 학생 릴레이션에서 점수가 70 초과인 튜플을 선택 σ
(시그마)
Project - 주어진 릴레이션에서 속성 리스트(Attribute List)에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산- 연산 결과에 중복이 발생하면 중복이 제거- 릴레이션의 열에 해당하는 속성을 추출하는 것이므로 수직 연산자라고도 함- 예) π Name(이름), Number(학번)(학생 릴레이션) : 학생 릴레이션에서 해당 이름과 학번 속성을 추출 𝝿
(파이)
Join - 공통 속성을 중심으로 두 개 의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산- Join의 결과는 교차곱(Cartesian Product)을 수행한 다음 Select를 수행한 것과 같음- 예) 학생 릴레이션 ⋈ Number = Number 정보 릴레이션 : 학생 릴레이션과 정보 릴레이션을 Number 기준으로 합체
Division X⊃Y인 두 개의 릴레이션 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값만을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산- 예) 학생 릴레이션 Number ÷ Number 출석 릴레이션 : 학생 릴레이션에서 출석 릴레이션에 있는 Number를 구함 ÷
  • 교차곱(Cartesian Product) : 두 릴레이션에 존재하는 모든 튜플들을 대응시켜 새로운 릴레이션을 만드는 연산
    • 연산의 결과 차수는 두 릴레이션의 차수를 합한 것과 같음
    • 튜플은 두 릴레이션의 튜플 수를 곱한 것과 같음
    • 교차곱의 결과는 두 릴레이션을 연결하여 나타낼 수 있는 모든 튜플들을 표현할 수 있음

43.3 일반 집합 연산자

수학적 집합 이론에서 사용하는 연산자
  • 일반 집합 연산자 중 합집합(UNION), 교집합(INTERSECTION), 차집합(DIFFERENCE)을 처리하기 위해서는 합병 조건을 만족해야 함
    • 합병 조건 : 합병하려는 두 릴레이션 간에 속성의 수가 같고, 대응되는 속성별로 도메인이 같아야 함
      • 릴레이션 R과 S가 합병이 가능하다면, 릴레이션 R의 i번째 속성과 릴레이션 S의 i번째 속성의 도메인이 서로 같아야 함
      • 속성의 이름이 같을 필요는 없음
  • 합병 가능한 두 릴레이션 R과 S가 있을 때 각 연산의 특징
연산자 기능 및 수학적 표현 카디널리티
합집합
UNION
- 두 릴레이션에 존재하는 튜플의 합집합을 구하되, 결과로 생성된 릴레이션에서 중복되는 튜플은 제거되는 연산- R∪S = {t|t∈R or t∈S}※ t는 릴레이션 R 또는 S에 존재하는 튜플 - |R∪S| ≤ |R|+|S|- 합집합의 카디널리티는 두 릴레이션 카디널리티의 합보다 크지 않음
교집합
INTERSECTION
- 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산- R∩S = {t|t∈R and t∈S}※ t는 릴레이션 R 그리고 S에 동시에 존재하는 튜플 - |R∩S| ≤ MIN{|R|, |S|}- 교집합의 카디널리티는 두 릴레이션 중 카디널리티가 적은 릴레이션의 카디널리티보다 크지 않음
차집합
DIFFERENCE
-
- 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산R-S = {t|t∈R and t∉S}※ t는 릴레이션 R에는 존재하고 S에는 없는 튜플 - |R-S| ≤ |R|- 차집합의 카디널리티는 릴레이션 R의 카디널리티보다 크지 않음
교차곱
CARTESIANPRODUCT
×
- 두 릴레이션에 있는 튜플들의 순서쌍을 구하는 연산- R×S = {r·s|r∈R and s∈S}※ r은 R에 존재하는 튜플이고, s는 S에 존재하는 튜플 - |R×S| = |R|×|S|- 교차곱의 디그리는 두 릴레이션의 디그리를 더한 것과 같고, 카디널리티는 두 릴레이션의 카디널리티를 곱한 것과 같음

43.4 관계해석(Relational Calculus)

관계 데이터의 연산을 표현하는 방법
  • 관계 데이터 모델의 제안자인 코드(E. F. Codd)가 수학의 술어 해석(Predicate Calculus)에 기반을 두고 관계 데이터베이스를 위해 제안
  • 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지님
  • 원하는 정보를 정의할 때는 계산 수식을 사용