DB 관계 데이터베이스, 대수, 해석(3)
관계 데이터베이스의 개념과 구조, 관계대수와 관계해석의 원리를 설명합니다. 테이블 집합으로 구성된 관계 데이터베이스의 기본 요소(릴레이션, 애트리뷰트, 투플, 도메인), 다양한 키 유형, 그리고 관계대수(절차적)와 관계해석(비절차적) 언어의 연산자와 질의문 표현 방법을 체계적으로 다루고 있습니다.
관계 데이터베이스
테이블들의 집합으로 표현한것이 관계 데이터베이스(RDB)
RDBMS와 구분할 것!
관계 데이터 모델은 수학에서의 릴레이션과 집합 이론
에 기초
-
릴레이션
: 학생 테이블 -
애트리뷰트
: 열 -
투플
: 행 -
도메인
: 애트리뷰트가 취할 수 있는 값들의 집합- 도메인으로 정의하면 보다 안전!
릴레이션
= 릴레이션 스키마 + 릴레이션 인스턴스
-
릴레이션 인스턴스
: 투플들의 집합- 릴레이션 외연과 동의어. 동적 성질
-
릴레이션 스키마
: 애트리뷰트의 집합(정확하게는 릴레이션(테이블) 이름 + 애트리뷰트 이름)- 릴레이션 내포, 스킴과 동의어. 정적 성질
- 릴레이션의 특성
- 투플의 유일성
- 투플의 무순서성
- 애트리뷰트의 무순서성
- 애트리뷰트의 원자성
관계 데이터베이스
: 테이블들의 집합
관계 데이터베이스 스키마
= 릴레이션 스키마 + 무결성 제약조건(개체 무결성, 참조 무결성)
키(Key)
데이터베이스 키
- 후보키(유일성, 최소성)
- 슈퍼키(유일성)
- 기본키(후보키 중 하나)
- 대체키(기본키 제외 나머지 후보키)
- 외래키
- 외래키의 예시
- S : 교수(교수번호, 교수이름, 학과번호, 직급)
- R : 학과(학과번호, 학과이름,
학과장교수번호
, 학생수) - 릴레이션 R의 애트리뷰트 집합 FK가 릴레이션 S의 기본키일 때 이 FK는 R의 외래키이다.
- FK : 외래키, PK : 기본키
관계대수와 관계해석
연산 : 시스템 입장
데이터 언어 : 사용자 입장
관계 데이터 언어 – 정형어
-
정형어 : 관계 대수, 관계 해석
-
관계 대수 – 1.절차 언어 : how, what
-
관계 해석 – 1.비절차 언어 : what, 2.투플 관계 해석, 3.도메인 관계 해석
- 표현방법이 다를 뿐 관계 대수(what,how)나 관계 해석(what)에서의 기능들은 동일
- 다만, 관계 해석의 경우 what만 이용한 비절차 언어이므로 사용자 입장에선 다루기 더 쉬움
관계 대수
기본연산
- 일반 집합 연산자(합집합, 교집합, 차집합 ,카티션 프로덕트)
- 순수 관계 연산자(실렉트, 프로젝트, 조인, 디비전)
- 폐쇄성질 : 중첩된 수식 표현 가능
일반 집합 연산자
-
합병가능한 릴레이션에서
합,교,차집합
연산의 피연산자들- 차수동일
- 대응 애트리뷰트 쌍 별로 도메인 동일
합집합(UNION, ∪)
교집합(INTERSECT, ∩)
차집합(DIFFERENCE, -)
카티션 프로덕트(CARTESIAN PRODUCT, ×)
순수 관계 연산자
-
실렉트(σ)
: 선택 조건을 만족하는 릴레이션의 수평적 부분집합(특정 행 선택) -
프로젝트(π)
: 릴레이션의 수직적 부분집합(특정 열 선택) -
조인(⋈)(세타 조인)
: 세타(=연산기호)에 따른 조인(말 그대로 사용한 연산기호와 맞게 조인)- 동일 조인(=(열비교)), 자연 조인(=, 중복제거(열))
-
디비전(÷)
: R÷S={ tt∈ πD(R) ∧ t · s∈R for all s∈S } - D=X-Y이다. 모든 S에 대해서 R에 모든 S에 대한 t가 있어야 한다.
- {학번,과목번호} 릴레이션을 SC라 했을때 과목번호 C413을 포함하는 학번을 구하라하면?
- SC ÷ C413 으로 보면 되고, 실제로 C413 과목번호를 가진 학번들이 출력된다.
개명 연산 : 중간 처리 결과 릴레이션에 이름지정, 애트리뷰트 이름 변경 때 사용
기본 연산 : 다른 연산으로 대체할 수 없는 하나의 논리적 기능을 수행하는 연산(나머지 기호
)
복합 연산 : 기본 연산으로 대체가능한 연산(교집합, 조인, 디비전
)
관계 대수의 확장
-
세미 조인
: S와 자연 조인이 가능한 R의 투플의 집합(즉, 자연조인에서 중복투플 제거 및 S나 R로만 표현) -
외부 조인
(+기호붙음) : 누락 정보를 처리하기 위한 조인의 확장(예로 자연조인하고 못넣은 투플들 포함시키기) -
외부 합집합 : 합병 가능하지 않은 두 릴레이션의 모든 애트리뷰트를 포함하는 확장된 릴레이션
-
집계 연산 : 형식? GAFB(E) 예시? GROUP과목번호AVG성적(등록)
관계 대수의 질의문 표현
- 모든 학생의 ‘이름’과 ‘학과’를 검색하라.
- π이름,학과(학생)
- ‘과목번호’가 C413인 과목에 등록한 학생의 ‘이름’과 ‘성적’은 무엇인가?
- π이름,성적(σ과목번호=’C413’(학생 ⋈N등록))
- ⋈N 은 자연조인을 의미한다.
- ‘화일구조’ 과목을 가르치는 ‘담당교수’를 검색하라.
- π담당교수(σ과목이름=’화일구조’(과목))
- 모든 과목에 수강한 학생의 ‘학번’과 ‘이름’을 검색하라
- π학번,이름((π학번,과목번호(등록) ÷ π과목번호(과목)) ⋈N학생)
- “모든”이 들어간 쿼리에 디비전을 주로 사용
- ‘학번’이 600, ‘이름’이 ‘김영호’, ‘학년’이 4, ‘학과’가 ‘컴퓨터’인 학생을 삽입하라.
- 학생∪{<600, ‘김영호’, 4, ‘컴퓨터’>}
- ‘데이터베이스‘ 과목을 삭제하라.
- 과목 - (σ과목이름=’데이터베이스’(과목))
관계 해석
관계 해석
-
술어 논리학을 기반.(술어 : 참, 거짓 나타냄)
-
관계 데이터 모델의 연산 표현 방법, 비절차적(what)
투플 관계 해석 : 원하는 릴레이션을 투플 해석식으로 정의하는 표기법
-
정형식 – 원자식이 규칙에 따라 결합된 식
-
투플 변수 – 자유변수, 속박변수
투플 해석식의 질의문 표현
- 과목 C413에서 성적이 A인 학생의 학번을 모두 검색하라
- {e.Sno|ENROL(e) ∧ e.Cno=’C413’∧ e.Grade=’A’ }
- 과목 C413을 등록한 학생의 이름과 학과를 모두 검색하라
- { s.Sname, s.Dept|STUDENT(s) ∧∃e(ENROL(e) ∧ s.Sno=e.Sno ∧ e.Cno=’C413’) }
- 모든 과목에 등록한 학생의 이름을 전부 검색하라.
- { s.Sname|STUDENT(s) ∧ (∀c)(∃e)(COURSE(c)
∧ENROL(e)∧ e.Sno=s.Sno ∧ e.Cno=c.Cno) }
- { s.Sname|STUDENT(s) ∧ (∀c)(∃e)(COURSE(c)
- 과목 ‘C413’에 등록하지 않은 학생의 이름을 전부 검색하라.
- {s.Sname|STUDENT(s) ∧ (¬∃e)(ENROL(e) ∧ s.Sno=e.Sno ∧ e.Cno=‘C413’) }
- ¬ 란 부정을 의미한다.
도메인 관계 해석 : 원하는 릴레이션을 도메인 해석식으로 정의하는 표기법
- 도메인 변수 – 자유변수, 속박변수
도메인 해석식의 질의문 표현
- 컴퓨터학과 3,4 학년(Year)의 이름(Sname)을 검색하라.
- {xSname|(∃xYear)(∃xDept) (STUDENT(xSno, xSname, xYear, xDept)∧ xYear ≥ 3∧ xDept=’컴퓨터’ ) }
- 과목번호(Cno) C413에서 성적(Grade)이 A인 학생의 학번(Sno)을 모두 검색하라
- {xSno|(∃xCno)(∃xGrade) (ENROL(xSno, xCno, xGrade, xMidterm, xFinal) ∧ xCno= ‘C413’ ∧ xGrade=‘A’) }
- 기말 성적(Final)이 90점 이상인 학생의 학번(Sno)과 이름(Sname)을 검색하라.
- {xSno,xSname|(STUDENT(xSno,xSname,xYear,xDept) ∧ (∃xFinal)(∃xxSno) (ENROL(xxSno, xCno, xGrade, xMidterm, xFinal)∧xSno=xxSno ∧ xFinal ≥ 90) }
- 과목번호(Cno) C324에 등록하지 않은 학생의 이름 (Sname) 을 검색하라.
- { xSname|(∃xSno) ((STUDENT(xSname, xSno, xYear, xDept) ∧ (¬∃xxSno) (∃xCno) (ENROL(xxSno, xCno, xGrade, xMidterm, xFinal) ∧ xSno=xxSno ∧ xCno=’C324’)) }
QBE -> 중요하진 않음
-
도메인 관계 해석 사용
-
Print, Select, Update, Delete, Insert(P. S. U. D. I.) 등등
-
중복 자동 제거, ALL삽입시 중복 허용(P.ALL)
댓글남기기