1 / 65

관계 데이터 구조

관계 데이터 구조.  속성과 도메인. 테이블 ≒ 릴레이션 (relation) 도메인 (domain) 속성이 취할 수 있는 값 (value) 들의 집합 같은 도메인의 값들끼리 비교가 허용됨 속성 (attribute) 도메인의 역할 이름 속성 이름들은 모두 달라야 함 단순 도메인 (simple domain) → 단순 속성 : 원자값 복합 도메인 (composite domain) → 복합 속성 : 복합값 연 , 월 , 일 ⇒ 날짜 :< 연 , 월 , 일 >.

lou
Download Presentation

관계 데이터 구조

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 관계 데이터 구조

  2. 속성과 도메인 • 테이블 ≒ 릴레이션(relation) • 도메인(domain) • 속성이 취할 수 있는 값(value)들의 집합 • 같은 도메인의 값들끼리 비교가 허용됨 • 속성(attribute) • 도메인의 역할 이름 • 속성 이름들은 모두 달라야 함 • 단순 도메인 (simple domain) → 단순 속성 : 원자값 • 복합 도메인 (composite domain) → 복합 속성 : 복합값 연, 월, 일 ⇒ 날짜:<연,월,일>

  3. ▶릴레이션(Relation) R ⅰ. 수학적 정의 릴레이션 R : 카티션 프러덕트의 부분집합 R ⊆ D1 × D2 ×...× Dn 즉 n-튜플 <v1, v2, ..., vn>의 집합 단 Di : i번째 도메인 vi ∈ Di, i = 1,2,..,n n : R의 차수(degree :일차, 이차, 삼차, ..., n차) 튜플의 수 : 카디널리티(cardinality) ⅱ. 개념적 정의 릴레이션 스키마 + 릴레이션 인스턴스 학번 x 과목번호 (SNO x CNO) 과목번호 (CNO) 학번 (SNO) <100,C412> <100,C123> <100,C312> <200,C412> <200,C123> <200,C312> C412 C123 C312 100 200

  4. ▶ 릴레이션 스키마 (relation schema) • 릴레이션 내포 (Intension) • 릴레이션 스키마 릴레이션 이름 + 속성 이름 R(A1, A2, ..., An), Ai ⇔ Di • 정적 성질 : 시간에 무관

  5. ▶ 릴레이션 인스턴스 (relation instance) • 릴레이션 외연 (Extension) • 어느 한 시점에 릴레이션 R이 포함하고 있는 튜플들의 집합 < v1, v2, ..., vn > vi ∈ Di • {(attr1=v1, attr2=v2, ···, attrn=vn )} • 동적 성질 • 삽입, 삭제, 갱신 • 시간에 따라 변함

  6. 릴레이션 속성 학생 릴레이션 스키마 학번 학년 이름 학과 릴레이션 4 컴퓨터 100 나연묵 3 전기 200 이찬영 릴레이션 인스턴스 1 컴퓨터 300 정기태 4 컴퓨터 400 송병호 2 산공 500 박종화 튜플 도메인 integer DSNO integer DYEAR char(10) DEPT char(6) NAME

  7. 릴레이션의 특성 (1) ⅰ. 튜플의 유일성 릴레이션 = 서로 다른 튜플들의 "집합" ⅱ. 튜플들의 무순서 릴레이션 : 추상적 개념(abstract concept) 테이블 : 구체적 표현(concrete representation) ⅲ. 속성들의 무순서 릴레이션 스키마 → 속성들의 "집합" 튜플 : <attr:value>쌍의 집합

  8. 릴레이션의 특성 (2) ⅳ. 속성의 원자값(atomic value) (분해 불가능) • 정규화 관계 (normalized relation) • 비정규화 관계는 분해로 정규화 • 동등한 의미 유지 • 널값은 원자값 (null value ; unknown, inapplicable) • 단순 도메인 • 복합 도메인 : 값을 하나의 단위로 취급

  9. 관계 데이터베이스 • 관계 데이터베이스 • 데이터베이스를 시간에 따라 그 내용(상태)이 변할 수 있는 테이블 형태로 표현 • 관계 데이터베이스 스키마 = 릴레이션 스키마 집합 • 관계 데이터 모델 ⇔ 프로그래밍 시스템 릴레이션 ⇔ 화일 튜플 ⇔ 레코드 (어커런스) 속성 ⇔ 필드

  10. 학번 (SNO) 이름 (SNANE) 학년 (YEAR) 학과 (DEPT) 학생 (STUDENT) 100 나 연 묵 4 컴퓨터 200 이 찬 영 3 전기 300 정 기 태 1 컴퓨터 400 송 병 호 4 컴퓨터 500 박 종 화 2 산공 과목번호 (CNO) 과목이름 (CNANE) 학점 (CREDIT) 학과 (DEPT) 담당교수 (PRNAME) 과목 (COURSE) C123 프로그래밍 3 컴퓨터 김성기 C312 자료 구조 3 컴퓨터 황수찬 C324 파일 처리 3 컴퓨터 이규철 C413 데이터 베이스 3 컴퓨터 이석호 C412 반 도 체 3 전자 홍봉희  example • 대학(University) 관계 데이터베이스

  11. 학번 (SNO) 과목번호 (CNO) 성적 (GRADE) 중간성적 (MIDTERM) 기말성적 (FINAL) 등록 (ENROL) 100 C413 A 90 95 100 E412 A 95 95 200 C123 B 85 80 300 C312 A 90 95 300 C324 C 75 75 300 C413 A 95 90 400 C312 A 90 95 400 C324 A 95 90 400 C413 B 80 85 400 E412 C 65 75 500 C312 B 85 80  example • 대학(University) 관계 데이터베이스(cont’d)

  12. 관계 데이터 제약

  13.  기본키(Primary key) • 키(key) • 튜플을 유일하게 식별할 수 있는 속성 집합 • 후보키(candidate key) • 릴레이션 R(A1, A2, ..., An)에 대한 속성 집합A = { A1, A2, ..., An }, K = { Ai , Aj , ..., Ak }에 대하여, K  A 인 K가 아래 성질을 만족하면 후보키이다. • 유일성(uniqueness) K (= { Ai , Aj , ..., Ak }) 의 값(< Vi , Vj , ..., Vk >)은 유일하다. • 최소성(minimality) K는 튜플을 유일하게 식별하기 위해 필요한 최소의 속성으로 구성 된다.

  14. 기본키 (2) • 슈퍼키 (super key) • 유일성(uniqueness)은 만족하지만 최소성(minimality)을 보장하지는 않는 속성의 집합 • 기본키 (primary key) • 후보키(candidate key)중 데이터베이스 설계자가 선정하는 하나의 키 • 대체키 (alternate key) • 후보키중에 기본키를 제외한 나머지 후보키

  15. 외래키(Foreign key) • 외래키(foreign key) • 릴레이션 R1에 속한 속성 FK가릴레이션 R2의 기본키일 때 FK는 R1의 외래키이다. • (FK의 도메인) = (R2의 기본키의 도메인) • FK의 값은 R2에 존재하는 값이거나 null이다. • R1과 R2가 반드시 다른 릴레이션일 필요는 없다. • R1을 참조 릴레이션(referencing relation), R2를 참조된 릴레이션(referenced relation)이라 한다.

  16. 외래키 (2) • R1 R2인 경우 교수 (교수번호,교수이름,학과번호,직급) 학과 (학과번호,학과이름,학과장교수번호,학생수) PK FK 학생 (학번,이름,학년,학과) 과목 (과목번호,과목이름,학점,학과,담당교수) 등록 (학번,과목번호,성적) FK FK • R1 = R2인 경우 교수1 (교수번호,교수이름,학과번호,학과장교수번호) PK FK

  17. 무결성 제약 • null 값 • 모르는 값(unknown value) • 해당 없음(inapplicable) • 무결성 제약에서는 공백도 null로 해석 • 개체 무결성(entity integrity) • 기본 키는 null값을 가질 수 없다. • 참조 무결성(referential integrity) • 외래키의 값은 참조된 릴레이션의 기본키 값과 같거나 null이다.

  18. 무결성 제약 (2) • 데이터베이스의 상태 (database state) • 어느 시점에 데이터베이스에 저장된 데이터를 의미 • DBMS는 데이터베이스 상태의 변화에도 항상 무결성 제약을 만족 시켜야 한다.

  19. 관계 데이터 연산

  20. 관계 데이터 연산(시스템) • 관계 데이터 언어(사용자) ⅰ. 관계 대수(relational algebra) • 절차식언어 : how, what ⅱ. 관계해석(relational calculus) • 비절차식언어 : what • 튜플 관계해석 • 도메인 관계해석 • 관계 해석과 관계 대수는 표현이나 기능면에서 동등

  21. 관계대수(Relational Algebra) • 릴레이션 조작을 위한 연산의 집합 • 폐쇄성질 (closure property) • 피연산자와 연산 결과가 모두 릴레이션 • 중첩(nested)된 수식의 표현이 가능 • 구성 • 릴레이션 : 튜플의 집합 • 일반 집합 연산자 : 합집합 교집합 차집합 카티션 프로덕트 • 순수 관계 연산자 : 실렉트 프로젝트 조인 디비젼

  22. ▶ 일반 집합 연산자(1) ⅰ. 합집합 (union,∪) R∪S = { t | t∈R ∨ t∈S } |R∪S| ≤ |R| + |S| ⅱ. 교집합 (intersection,∩) R∩S = { t | t∈R ∧ t∈S } |R∩S| ≤ min{ |R|, |S| } ⅲ. 차집합 (difference,-) R­S = { t | t∈R ∧ t  S } |R­S| ≤ |R| ⅳ. 카티션 프로덕트 (cartesian product,×) R×S = { r·s | r∈R ∧ s∈S } |R×S| = |R|×|S| 차수(degree) = R의 차수 + S의 차수 · : 접속(concatenation)

  23. ▶ 일반 집합 연산자(2) • Note • 합병가능(union-compatible)한 릴레이션 • ∪, ∩, - 연산의 피연산자들은 ⅰ. 차수가 같아야 함 ⅱ. 대응 속성별로 도메인이 같아야 함 • ∪, ∩, × 연산은 결합적(associative)임 A∪B∪C = (A∪B)∪C = A∪(B∪C) • ∪, ∩, × 연산은 교환적(commutative)임 A∪B = B∪A

  24. ▶ 순수 관계 연산자 • 릴레이션 : R(X) = R(A1, ... , An) • R의 튜플 : r = <a1, ... , an> ∈ R • 튜플 r에 대한 속성 Ai의 값 • r.Ai 또는 ai • r.Ai= r[Ai] = ai

  25. 실렉트 (SELECT, )(1) • A, B가 릴레이션 R의 속성일 때, Av(R) = { r | r∈R ∧ r.Aθv } AB(R) = { r | r∈R ∧ r.Aθr.B } 조건식(predicate) 단, θ(theta) = { <, >, ≤, ≥, =, ≠ } v : 상수 • 선택 조건을 만족하는 릴레이션의 수평적 부분집합 (horizontal subset)

  26. 실렉트 (2) • example 학과 = '컴퓨터' (학생) 학번 = 300  과목번호='C312'(등록) 중간성적<기말성적(등록) • 조건2(조건1(R)) = 조건1(조건2(R)) = 조건1  조건2 (R)

  27. 프로젝트 (PROJECT, ) • 릴레이션 R(X)에서 Y={B1,B2, … ,Bm}이고 Y⊆X 이면, Y(R)={ <r.B1, ... , r.Bm> | r∈R } • example • 학생(학번,이름,학년,학과)에서 이름,학과(학생) • 릴레이션의 수직적 부분집합(vertical subset) • 생성된 중복 튜플은 제거

  28. 조인 (JOIN, )(1) • 세타조인 (theta-join) R(X), S(Y), A∈X, B∈Y 에 대하여 R AθB S = { r · s | r∈R ∧ s∈S ∧ ( r.Aθs.B) } • 결과 차수 = R의 차수 + S의 차수 • example • 학생 학번=학번 등록 • 동등조인 (equi-join) 세타조인에서 θ가 "="인 경우 R A=BS = { r·s | r∈R ∧ s∈S ∧ ( r.A=s.B ) }

  29. 조인 (2) • 자연조인 (natural join, N) R(X), S(Y)의 조인 속성 Z(=X∩Y)라 하면 R NS = {<r · s>[X∪Y] | r∈R∧s∈S∧r[Z]=s[Z] } = X∪Y(Z=Z (R×S)) = X∪Y(R Z=ZS) • 즉 동등조인의 결과 릴레이션에서 속성의 중복 제거함

  30. 디비젼 (DIVISION, ÷)(1) • 릴레이션 R(X), S(Y) 에 대하여 Y  X이고 X-Y=Z이면 R(X)=R(Z,Y) R÷S ={ t | t∈ Z(R) ∧ t · s∈R for all s∈S }

  31. 학번 (SNO) 과목번호 (CNO) 과목번호 (CNO) 과목번호 (CNO) 과목번호 (CNO) 100 C413 C413 C312 C312 100 E412 C413 C413 200 C123 E412 300 C312 300 C324 300 C413 400 C312 학번 (SNO) 학번 (SNO) 학번 (SNO) 400 C324 100 300 400 C413 400 300 400 400 E412 400 500 C312 디비젼(2) • example 학과목(SC) 과목1(C1) 과목2(C2) 과목3(C3) SC ÷ C1 SC ÷ C2 SC ÷ C3

  32. 작명 연산 (RENAME, ρ) • 중간 결과 릴레이션에 이름을 붙이거나 속성 이름을 변경할 때 사용 • ρS(E) 관계 대수식 E의 결과 릴레이션의 이름을 S로 지정 • ρS(B1,B2, … ,Bm )(E) 관계 대수식 E의 결과 릴레이션의 이름을 S로 하면서 속성 이름을 B1,B2, … ,Bm으로 지정

  33. ▶ 근원 연산과 복합 연산 • 근원연산 (primitive operations) • 합집합, 차집합, 카티션 프로덕트, 프로젝트, 실렉트 • 복합연산 (composite operations) • 교집합, 조인, 디비젼 R∩S = R ­ (R­S) = S ­ (S­R) = (R∪S) ­ ( (R­S) ∪ (S­R) ) R AθB S = AθB (R×S) R(Z,Y)÷S(Y)= R[Z] - ((R[Z]×S) - R)[Z]

  34. ▶ 관계 대수의 확장(1) ⅰ. 세미조인 (Semijoin, ) • R(X), S(Y)의 조인 어트리뷰트를 X∩Y라 하면 R S = R N(X∩Y(S)) =X(R NS) • S와 자연조인을 할 수 있는 R의 튜플 • 특징 • R S ≠ S R • R NS = (R S) NS = (S R) N R

  35. N N N  자연조인과 세미조인 X∩Y(S) R S A B C B C D B C a1 b1 c1 b1 c1 d1 b1 c1 a2 b1 c1 b1 c1 d2 b2 c3 a3 b1 c2 b2 c3 d3 a4 b2 c3 N R S R S A B C D A B C a1 b1 c1 d1 a1 b1 c1 a1 b1 c1 d2 a2 b1 c1 a2 b1 c1 d1 a4 b2 c3 a2 b1 c1 d2 (세미조인) a4 b2 c3 d3 (자연조인)

  36. ▶ 관계대수의 확장(2) ⅱ. 외부조인 (Outerjoin, +) • 조인시 한 릴레이션에 있는 튜플이 조인할 상대 릴레이션에 대응되는 튜플이 없을 경우, 상대를 널(null) 튜플로 만들어 결과 릴레이션에 포함 • 두 조인 릴레이션의 모든 튜플들이 결과 릴레이션에 포함됨

  37. + + R S  자연조인과 외부조인 R S A B C B C D a1 b1 c1 b1 c1 d1 a2 b1 c1 b1 c1 d2 a3 b1 c2 b2 c3 d3 a4 b2 c3 b3 c3 d3 N A B C D R S N a1 b1 c1 d1 A B C D a1 b1 c1 d2 a1 b1 c1 d1 a2 b1 c1 d1 a1 b1 c1 d2 a2 b1 c1 d2 a2 b1 c1 d1 a3 b1 c2 a2 b1 c1 d2 a4 b2 c3 d3 a4 b2 c3 d3 b3 c3 d3 (자연조인) (외부조인)

  38. ▶ 관계대수의 확장(3) ⅲ. 외부 합집합 (Outer-union, ∪+) • 합병가능하지 않은(부분적으로 합병 가능한) 두 릴레이션을 차수를 확장시켜 합집합으로 만듬

  39. + U  외부 합집합 R S A B C B C D a1 b1 c1 b1 c1 d1 a2 b1 c1 b1 c1 d2 a3 b1 c2 b2 c2 d3 a4 b2 c3 A B C D a1 b1 c1 a2 b1 c1 a3 b1 c2 a4 b2 c3 b1 c1 d1 b1 c1 d2 d3 b2 c2

  40. ▶ 관계대수의 확장(4) ⅳ. 집단 연산 • AVG성적(등록) • 등록 릴레이션에 있는 성적 속성 값들에 대해 평균값 계산 • GROUP학년(학생) • 학생 릴레이션의 튜플들을 학년 값에 따라 그룹 짓게 함 • 일반 형식 : GAFB(E) • E : 관계 대수식 • F : 집단 함수 ( SUM, AVG, MAX, MIN, COUNT) • B : 집단 함수의 적용 대상 속성 • A : 그룹 함수가 적용될 속성

  41. ▶ 관계대수의 질의문 표현(1) • 모든 학생의 이름과 학과를 보여라. 이름,학과(학생) • 과목번호가 C413인 과목에 등록한 학생의 이름과 성적은 무엇인가? 이름,성적(과목번호='C413' (학생 N등록)) • ‘파일처리' 과목을 가르치는 교수의 이름은? 담당교수(과목이름=‘파일처리'(과목))

  42. ▶ 관계대수의 질의문 표현(2) • 모든 과목에 수강하고 있는 학생의 학번, 이름은? 학번,이름((학번,과목번호(등록) ÷ 과목번호(과목)) N학생) • 학번이 600, 이름이 '김명호', 학년이 4, 학과가 컴퓨터인 학생을 삽입하라. 학생∪{<600, ‘김명호’, 4, ‘컴퓨터’>} • 과목 '데이터베이스'를 삭제하라. 과목 - (과목이름='데이터베이스'(과목))

  43. 데이터 종속성과 정규화

  44.  데이터의 논리적 표현 • 관계 스키마(relational schema)의 설계 • 관계 모델을 이용하여 어떻게 실세계를 정확히 표현할 것인가? i. 속성, 개체, 관계를 파악 ⅱ. 관련된 속성들을 릴레이션으로 묶음 데이터 종속성 : 속성들간의 관계 효율적인 데이터 조작 데이터의 중복성 iii. 변칙적 성질의 예방 이상(anomaly)

  45. 수강 학번 과목번호 성적 학년 100 C413 A 4 100 E412 A 4 200 C123 B 3 300 C312 A 1 300 C324 C 1 300 C413 A 1 400 C312 A 4 400 C324 A 4 400 C413 B 4 400 C412 C 4 500 C312 B 2 ▶ 이상 (anomaly) • example : 수강 릴레이션 기본키 : 학번, 과목 번호

  46. ▶ 이상(2) • 삭제이상(deletion anomaly) • 200번 학생이 'C123'의 등록을 취소 ⇒ 3학년이라는 정보도 함께 삭제됨 • 연쇄 삭제(triggered deletion)에 의한 정보의 손실(loss of information) • 삽입이상(insertion anomaly) • 600번 학생이 2학년이라는 사실을 삽입 ⇒ 어떤 과목을 등록하지 않는 한 삽입이 불가능 (∵ 과목 번호가 기본 키) • 원하지 않는 정보의 강제 삽입 • 갱신이상(update anomaly) • 400번 학생의 학년을 4에서 3으로 변경 ⇒ 학번이 400인 4개의 튜플 모두를 갱신시켜야 함 • 중복데이터의 일부 갱신으로 정보의 모순성(inconsistency) 발생

  47. ▶이상의 원인과 해결책 • 이상의 원인 • 속성들 간에 존재하는 여러 종속관계를 하나의 릴레이션에 표현 • 이상의 해결 • 속성들 간의 종속관계를 분석하여 여러개의 릴레이션으로 분해(decomposition) ⇒ 정규화(normalization)

  48. ▶ 스키마 설계와 변환 • 스키마 설계 : 데이터베이스의 논리적 설계 ① 속성들과 이들의 제약 조건 (종속성)들을 수집 ② 수집된 결과를 명시된 제약 조건에 따라 여러 개의 릴레이션으로 분할 ⇒ 스키마 변환 (schema transformation) • 스키마 변환의 원리 • ① 정보의 무손실 • ② 데이터의 중복성 감소 • ③ 분리의 원칙

  49.  함수 종속(FD) • 정의 • 어떤 릴레이션 R에서, 속성 X의 값 각각에 대해 속성 Y의 값이 하나만 연관  속성 Y는 속성 X에 함수 종속 X  Y • 속성 X는 Y를 (함수적으로) 결정 즉, X는 Y의 결정자(determinant) • X, Y는 복합 속성일 수 있음

  50. 학년 학번 성적 과목번호 함수 종속 다이어그램 • 수강 릴레이션 ( 기본키: 학번, 과목번호) (학번, 과목번호)  성적 학번  학년

More Related