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

[정보처리기사] - 관계형 데이터베이스

by Laplace 2024. 7. 13.

관계형 데이터베이스

- 관계형 데이터베이스는 2차원적인 표(Table)를 이용해서 데이터 상호 관계를 정의하는 데이터베이스입니다.

-  코드(E. F. Codd)에 의해 처음 제안

- 간결하고 보기 편리하며 다른 데이터베이스로의 변환이 용이하지만 성능이 다소 떨어짐

 

 

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

학생 릴레이션
학생 릴레이션

p.s : 엔터티와 릴레이션의 구분

- 엔터티는 모델링 단계에서

- 릴레이션은 이터베이스의 물리적 구조에서 사용되는 개념으로, 엔터티를 실제 테이블 형태로 구현한 것

 

 

튜플 (Tuple)

- 릴레이션을 구성하는 각각의 행

- 튜플의 수 = 카디널리티 (Cardinality)

 

속성 (Attribute)

- 속성은 데이터베이스를 구성하는 가장 작은 논리적 단위 입니다.

- 속성은 개체의 특성을 기술합니다.

- 속성의 수 = 디그리 (Degree)

 

도메인 (Domain)

- 하나의 속성이 취할 수 있는 같은 타입의 원자 값들의 집합 ex) 성별 속성의 도메인은 "남", "여"로, 그 외의 값은 입력될 수 없습니다.

 

릴레이션 (Relation)

- 2개 이상의 인스턴스를 가져야한다.

- 인스턴스는 2개이상의 속성값을 가져야한다.

 

 

키 (Key)

- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성

 

키의 종류

  • 후보키 (Candidate Kry)
  • 기본키 (Primary Key)
  • 대체키 (Alternate Key)
  • 슈퍼키 (Super Key)
  • 외래키 (Foreign Key)

후보키 (Candidate Key)

- 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합

- 기본키로 사용할 수 있는 속성들을 말한다.

- 후보키는 유일성과 최소성을 모두 만족해야 한다.

유일성 (Unique) 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함
최소성 (Minimality) 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함

 

기본키 (Primary Key)

- 후보키 중에서 특별히 선정된 주키(Main Key)이다.

- 기본키는 중복된 값을 가질 수 없다.

- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이다.

- NULL값을 가질 수 없다

 

대체키 (Alternate Key)

- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키

- 보조키라고도 함

 

슈퍼키 (Super Key)

- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키

- 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않는다.

- 슈퍼키는 유일성은 만족하지만, 최소성은 만족하지 못한다

- 슈퍼키의 예시)

학생테이블 : {학생ID, 이름}: 학생ID에 이름을 추가해도 여전히 각 학생을 유일하게 식별할 수 있습니다. 

 

외래키 (Foreign Key)

- 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합

 

 

제약 조건 - 무결성

 

무결성

- 무결성은 데이터베이스에서 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미한다.

- 무결성 제약조건은 데이터의 정확성을 보장하기 위해 부정확한 자료가 저장되는 것을 방지하기 위한 제약조건이다.

 

무결성의 종류

종류 내용
개체 무결성 테이블의 기본키를 구성하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다는 규정
참조 무결성 외래키 값은 Null이거나 참조 릴레이션의 기본키 값과 동일해야함.
즉, 참조할수 없는 외래키 값을 가질 수 없다는 규정
NULL 무결성 릴레이션의 특정 속성 값이 NULL이 될 수 없도록 하는 규정
도메인 무결성 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정

 

데이터 무결성 강화

- 데이터 품질을 확보하기 위해 애플리케이션, 데이터베이스 트리거, 제약 조건을 이용하여 데이터 무결성을 강화해야한다.

  • 애플리케이션 - 데이터 생성, 수정, 삭제 시 무결성 조건을 검증하는 코드를 프로그램 내에 추가함
  • 데이터베이스 트리거 - 트리거 이벤트에 무결성 조건을 실행하는 절차형 SQL을 추가함
  • 제약조건 - 데이터베이스에 제약 조건을 설정하여 무결성을 유지함

 

관계대수

- 관계대수는 관계형 데이터베이스에서 데이터를 처리하고 쿼리하는 방법을 수학적으로 정의한 언어

- 순수 관계 연산자와 일반 집합 연산자가 있다.

 

순수 관계 연산자

종류 특징 기호
Select - 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을      만드는 연산
- 릴레이션의 행에 해당하는 튜플을 구하는 것이므로 수평 연산이라고도 함
σ (시그마)
Project - 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산
- 결과에 중복이 발생하면 중복이 제거됨
- 릴레이션의 열에 해당하는 속성을 추출하는 것이므로 수직 연산자라고도 함
𝝅 (파이)
Join - 공통 속성을 중심으로 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
- Join의 결과는 Cartesian Product (교차곱)을 수행한 다음 Select를 수행한 것과 같음
⋈ 
Division - 관계대수에서 Division 연산은 두 관계(R와 S) 사이의 특정 조건을 만족하는 튜플을 찾는 데 사용됩니다. Division 연산은 R의 모든 튜플이 S에 있는 튜플과 결합될 수 있는 R의 튜플을 반환합니다. ÷

 

일반 집합 연산자

  • 합집합 ( UNION ) : 두 릴레이션에 존재하는 튜플의 합집합을 구하고 중복되는 튜플은 제거
  • 교집합 ( INTERSECTION ) ∩ : 두 릴레이션에 존재하는 튜플의 교집합을 구하는 연산
  • 차집합 ( DIFFERENCE ) - : 두 릴레이션에 존재하는 튜플의 차집합을 구하는 연산
  • 교차곱 ( Cartesian Product ) x : 디그리 = 두 릴레이션의 디그리를 더한 것, 카디널리티 = 두 릴레이션의 카디널리티를 곱한 것  

 

관계해석

- 관계해석은 관계 데이터의 연산을 표현하는 방법이다.

- 관계 데이터 모델의 제안자인 코드(E. F. Codd)가 수학의 술어해석에 기반을 두고 관계 데이터베이스를 위해 제안함