본문 바로가기

Study/정보처리기사 실기

[정보처리기사 실기] 데이터 입출력 구현 _ 논리 데이터 저장소 (1)

관계 데이터 모델 = 릴레이션

튜플
(Tuple)
릴레이션에서 각각의 행 (row)
속성
(Attribute)
릴레이션에서 각각의 열 (column)
도메인
(Domain)
한 속성이 가질 수 있는 값의 집합
차수
(Degree)
릴레이션에서 속성의 개수 
카디널리티
(Cardinality)
릴레이션에서 튜플의 개수

 


키의 개념과 종류

- 키 (Key)란 릴레이션의 모든 튜플들을 유일 (unique)하게 식별할 수 있는 특성 가진 속성이나 속성 집합 의미

- 모든 릴레이션은 하나의 키 가짐

 

1) 슈퍼키 (Super Key)

- 릴레이션 내 모든 튜플에 대해 유일성만 만족하는 속성

- 릴레이션 내 여러 개 슈퍼키 정의될 수 있음

ex) 학생 릴레이션에서 학번, {학번, 이름}, {학번, 이름, 학과}, 전화, {학번, 전화} 등


2) 후보키 (Candidate Key)

- 릴레이션에서 튜플을 유일하게 구별하기 위해 사용하는 속성 또는 속성들 집합

- 릴레이션 내에서 유일성뿐 아니라 최소성도 만족해야 하는 속성

- 릴레이션 내 여러 개 후보키 정의될 수 있음

ex) 학생 릴레이션에서 학번, 전화


3) 기본키 (Primary Key)

- 여러 개 후보키 중 선택된 하나의 주키

- 기본키 속성값으로 Null이 중복되는 값 결코 가질 수 없음

ex) 학생 릴레이션에서 학번


4) 대체키 (Alternate Key)

- 여러 후보키 중 기본키로 선택되지 못한 후보키

ex) 학생 릴레이션에서 전화


5) 외래키 (Foreign Key)

- 다른 릴레이션 기본키와 일치하는 속성 또는 속성들 집합

- 외래키와 기본키 속성명은 다를 수 있지만 정의된 도메인은 일치

- 릴레이션과 릴레이션을 연결 (join)하는 도구로 사용됨


무결성 제약조건

1) 개체 무결성 제약 조건

- 기본키 값은 결코 널 (Null)값이나 중복값 가질 수 없다는 제약조건


2) 참조 무결성 제약 조건

- 외래키 값은 참조하는 릴레이션 기본키 값과 일치하거나 널값만 가져야 하고 참조할 수 없는 값 가질 수 없다는 제약조건

 

참조 무결성 유지 위한 옵션

  • Cascade : 기본키 삭제, 변경 시 외래키도 같이 삭제, 변경
  • Restrict (No Action) :  기본키 삭제, 변경 명령 무시
  •  Set Null : 기본키 삭제, 변경 시 외래키 값 Null 값으로 지정
  • Set Default : 기본키 삭제, 변경 시 외래키 값 Default 값으로 지정

관계 데이터 연산

- 크게 관계 대수와 관계 해석으로 구분

 

1) 관계 대수

- 릴레이션 처리 위한 연산 (Operation) 집합

- 원하는 정보 얻기 위해 일련의 연산 순서 명세하는 절차적 언어

- 연산 피연산자와 연산 결과가 모두 릴레이션 되는 폐쇄성 가짐

- 일반 집합 연산자 4개와 순수 관계 연산자 4개 두 그룹으로 구성됨

 

(1) 집합 관계 연산자

연산자 기능 및 표현식
합집합 (U) - 릴레이션 R 또는 S에 속하는 모든 튜플 구함
- R U S = { t | t∈R ∨ t∈S }, 합병가능연산자 (차수와 도메인 일치)
교집합 (∩) - 릴레이션 R과 S 양쪽에 모두 속하는 튜플 구함
- R ∩ S = { t | t∈R ∧ t∈S }, 합병가능연산자 (차수와 도메인 일치)
차집합 (-) - 릴레이션 R에는 있지만 S에는 없는 튜플 구함
- R - S = { t | t∈R ∧ t∉S }, 합병가능연산자 (차수와 도메인 일치)
교차곱 (X) - 릴레이션 R, S에 속하는 모든 순서쌍 구함
- R X S = { r·s | r∈R ∧ s∈S }

(2) 순수 관계 연산자

종류 특징 기호
Select - 릴레이션에서 조건식을 만족하는 튜플을 검색하는 연산자
- 릴레이션 행에 해당하는 튜플만 구하므로 수평적 부분집합 연산
σ
Project - 주어진 릴레이션에서 속성 리스트 (Attribute List)에 제시된 속성값만 추출해 새로운 릴레이션 만드는 연산
- 연산 결과에 중복 발생하면 중복 제거됨
- 릴레이션 열에 해당하는 속성 추출하는 것이므로 수직 연산자라고도 함
π
Join - 공통속성 중심으로 2개 릴레이션을 하나로 합쳐 새로운 릴레이션 만드는 연산
- Join 결과는 Cartesian Product (교차곱) 수행한 다음 Select 수행한 것과 같음
Division - 릴레이션 R, S 있을 시 릴레이션 B 조건에 맞는 것들만 릴레이션 R에서 분리해 Project 하는 연산 ÷

 

EX)

  • 학생 (학번, 이름, 학년, 학과)
  • 과목 (과목번호, 과목명, 학점, 학과, 담당 교수)
  • 등록 (학번, 과목번호, 성적)

① 모든 학생 이름과 학과 나타내기

     π 이름, 학과 (학생)

 

② '데이터베이스' 과목 가르치는 담당 교수는?

     π 담당교수 ( σ 과목명 = '데이터베이스' (과목))

 

③ 과목번호가 C413인 과목에 등록한 학생들 이름과 성적은?

     π 이름, 성적 ( σ 과목번호 = 'C413'(학생 ⋈ 등록))


2) 관계 해석

- 원하는 정보가 무엇이라는 것만 선언하는 비절차적 특성 가짐

- 릴레이션 정의하는 연산으로 정의 형식화하기 위해 계산 수식 사용

- 수학 프레디킷 해석 (Predicate Calculus)에 기반 둠

- 튜플 관계 해석과 도메인 관계 해석으로 구분

- 관계 해석과 관계 대수는 기능과 능력 면에서 동등하며 관계 대수로 표현되는 식은 관계해석으로 표현 가능