관계 데이터 모델 = 릴레이션
튜플 (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)에 기반 둠
- 튜플 관계 해석과 도메인 관계 해석으로 구분
- 관계 해석과 관계 대수는 기능과 능력 면에서 동등하며 관계 대수로 표현되는 식은 관계해석으로 표현 가능
'Study > 정보처리기사 실기' 카테고리의 다른 글
[정보처리기사 실기] 데이터 입출력 구현 _ 물리 데이터 저장소 (0) | 2025.02.21 |
---|---|
[정보처리기사 실기] 데이터 입출력 구현 _ 논리 데이터 저장소 (2) (0) | 2025.02.19 |
[정보처리기사 실기] 3장 데이터 입출력 구현 _ 데이터베이스 기초 (0) | 2025.02.13 |
[정보처리기사 실기] 2장 화면 설계 _ UI 설계 (0) | 2025.02.12 |
[정보처리기사 실기] 2장 화면 설계 _ UI 요구사항 확인 (1) | 2025.02.07 |