4. 관계 데이터 모델
4.1 관계 데이타 모델(1) 관계 데이타 모델(relational data model)의 탄생 관계 데이타 모델의 특성 1970년대 IBM의 E. F. Codd에 의해 제안 관계 데이타 모델의 특성 릴레이션(relation)과 수학적인 이론에 기초 일반 사용자는 테이블 형태로 생각 통상적인 테이블의 개념과는 다름 관계 데이타 모델의 직관적인 이해에 도움 테이블의 열(column) = 필드(field) 혹은 아이템(item) ≒ 관계 데이타 모델의 애트리뷰트(attribute) 테이블의 행(row) = 레코드(record) ≒ 관계 데이타 모델의 투플(tuple) 금오공과대학 컴퓨터공학부 컴퓨터공학전공
관계 데이타 모델(2) 학생(STUDENT) 테이블 : 릴레이션 학번 (Sno) 이름 (Sname) 학년 (Year) 학과 (Dept) 100 나 수 영 4 컴퓨터 200 이 찬 수 3 전기 300 정 기 태 1 컴퓨터 400 송 병 길 4 컴퓨터 500 박 종 화 2 산공 금오공과대학 컴퓨터공학부 컴퓨터공학전공
애트리뷰트와 도메인 테이블 ≒ 릴레이션 도메인(domain) 애트리뷰트(attribute) 애트리뷰트가 취할 수 있는 값(value)들의 집합 애트리뷰트(attribute) 도메인의 역할 이름 애트리뷰트 이름들은 모두 달라야 함 단순 도메인 (simple domain) → 단순 애트리뷰트 : 원자값 복합 도메인 (composite domain) → 복합 애트리뷰트 : 복합값 연, 월, 일 ⇒ 날짜:<연,월,일> ☞ Note 애트리뷰트 이름과 도메인 이름은 같을 수도 있음 금오공과대학 컴퓨터공학부 컴퓨터공학전공
릴레이션의 개념 릴레이션 학생(STUDENT)의 정의 도메인 명세가 생략된 릴레이션 STUDENT의 정의 DCL DOMAIN DSNO INTEGER; DCL DOMAIN NAME CHAR(10); DCL DOMAIN DYEAR INTEGER; DCL DOMAIN DEPT CHAR(6); DCL RELATION STUDENT (Sno DOMAIN DSNO, Sname DOMAIN NAME, Year DOMAIN DYEAR, Dept DOMAIN DEPT); DCL RELATION STUDENT (Sno INTEGER, Sname CHAR(10), Year INTEGER, Dept CHAR(6)); 금오공과대학 컴퓨터공학부 컴퓨터공학전공
▶ 릴레이션의 예 학번 (Sno) 이름 (Sname) 학년 (Year) 학과 (Dept) 100 나 수 영 4 컴퓨터 200 INTEGER . . DSNO CHAR(10) . . NAME INTEGER . . DYEAR CHAR(6) . . DEPT 도메인 애트리뷰트 학생 (STUDENT) 릴레이션 스킴 학번 (Sno) 이름 (Sname) 학년 (Year) 학과 (Dept) 학생 (STUDENT) 릴레이션 100 나 수 영 4 컴퓨터 200 이 찬 수 3 전기 투플 인스턴스 300 정 기 태 1 컴퓨터 400 송 병 길 4 컴퓨터 500 박 종 화 2 산공 금오공과대학 컴퓨터공학부 컴퓨터공학전공
4.2 릴레이션의 개념 릴레이션 스킴 (relation scheme) 릴레이션 내포 (relation intension) 또는 릴레이션 스키마라고도 함 릴레이션 이름 + 애트리뷰트 이름으로 표현 R(A1, A2, ... , An), Ai ⇔ Di 정적 성질 시간에 무관 릴레이션 타입 금오공과대학 컴퓨터공학부 컴퓨터공학전공
▶ 릴레이션 인스턴스 (relation instance) 릴레이션 외연 (relation extension)이라고도 함 릴레이션 R의 릴레이션 인스턴스 어느 한 시점에 릴레이션 R이 포함하고 있는 투플들의 집합 {< V1, V2, ... , Vn >} Vi ∈ Di 릴레이션의 내용, 상태 {(attr1=V1, attr2=V2, ··· , attrn=Vn)} 동적 성질 삽입, 삭제, 갱신으로 시간에 따라 변함 릴레이션 값(보통 릴레이션) 금오공과대학 컴퓨터공학부 컴퓨터공학전공
ⅰ. 수학적 정의 ⅱ. 개념적 정의 ▶ 릴레이션(Relation) R 릴레이션 R : 카티션 프로덕트(cartesian product)의 부분집합 R ⊆ D1 × D2 × ... × Dn 즉 n-투플 <d1, d2, ... , dn>의 집합 단 Di : i번째 도메인 di ∈ Di, i = 1,2, ... ,n n : R의 차수(degree :일차, 이차, 삼차, ... , n차) 투플의 수 : 카디널리티(cardinality) ⅱ. 개념적 정의 릴레이션 스킴 + 릴레이션 인스턴스 100 200 C412 C123 C312 <100,C412> <100,C123> <100,C312> <200,C412> <200,C123> <200,C312> 학번 (Sno) 과목번호 (Cno) 학번 ⅹ과목번호 (Sno ⅹ Cno) 금오공과대학 컴퓨터공학부 컴퓨터공학전공
4.3 릴레이션의 특성 (1) ⅰ. 투플의 유일성 ⅱ. 투플의 무순서성 ⅲ. 애트리뷰트의 무순서성 4.3 릴레이션의 특성 (1) ⅰ. 투플의 유일성 릴레이션 = 서로 다른 투플들의 "집합" ⅱ. 투플의 무순서성 릴레이션 : 추상적 개념 투플들의 집합 테이블 : 구체적 개념 ⅲ. 애트리뷰트의 무순서성 릴레이션 스킴 → 애트리뷰트들의 "집합" 투플 : <attr:value>쌍의 집합 금오공과대학 컴퓨터공학부 컴퓨터공학전공
릴레이션의 특성 (2) ⅳ. 애트리뷰트의 원자성 애트리뷰트 값 = 원자 값(atomic value) 논리적으로 분해 불가능 도메인 단순 도메인 복합 도메인 : 값을 하나의 단위로 취급 정규화 릴레이션 (normalized relation) 반복그룹을 어트리뷰트로 사용하지 않는 릴레이션 비정규화 릴레이션은 분해로 정규화 동등한 의미 유지 널 값(null value) = 원자 값 unknown, inapplicable 금오공과대학 컴퓨터공학부 컴퓨터공학전공
▶ 릴레이션의 정규화 학번 (Sno) 과목성적 (Cgrade) 과목번호 (Cno) 성적 (Grade) 100 C413 A 등록1 (ENROL1) 등록 (ENROL) 학번 (Sno) 과목성적 (Cgrade) 과목번호 (Cno) 성적 (Grade) 100 C413 A E412 200 C123 B 300 C312 C324 C 400 500 학번 (Sno) 과목번호 (Cno) 성적 (Grade) 100 C413 A E412 200 C123 B 300 C312 C324 C 400 500 (a) 비정규 릴레이션 (b) 정규 릴레이션 금오공과대학 컴퓨터공학부 컴퓨터공학전공
관계 데이타베이스 스키마 = {릴레이션 스킴} + 무결성 제약조건 관계 데이타베이스 관계 데이타베이스 데이타베이스를 시간에 따라 그 내용(상태)이 변할 수 있는 테이블 형태로 표현 관계 데이타베이스 스키마 = {릴레이션 스킴} + 무결성 제약조건 관계 데이타 모델 ⇔ 프로그래밍 시스템 릴레이션 ⇔ 화일 투플 ⇔ 레코드 (레코드 어커런스) 애트리뷰트 ⇔ 필드(필드 타입) 금오공과대학 컴퓨터공학부 컴퓨터공학전공
대학(University) 관계 데이타베이스 example 대학(University) 관계 데이타베이스 학번 (Sno) 이름 (Sname) 학년 (Year) 학과 (Dept) 100 나 수 영 4 컴퓨터 200 이 찬 수 3 전기 300 정 기 태 1 400 송 병 길 500 박 종 화 2 산공 학생 (STUDENT) 과목번호 (Cno) 과목이름 (Cname) 학점 (Credit) 학과 (Dept) C123 프로그래밍 3 컴퓨터 C312 자료 구조 C324 화일 구조 C413 데이타베이스 E412 반 도 체 전자 담당교수 (PRname) 김성국 황수관 이규찬 이일로 홍봉진 과목 (COURSE) 금오공과대학 컴퓨터공학부 컴퓨터공학전공
대학(University) 관계 데이타베이스(cont’d) example 대학(University) 관계 데이타베이스(cont’d) 학번 (Sno) 100 200 300 400 500 과목번호 (Cno) C413 E412 C123 C312 C324 성적 (Grade) A B C 중간성적 (Midterm) 90 95 85 75 80 65 기말성적 (Final) 등록 (ENROL) 금오공과대학 컴퓨터공학부 컴퓨터공학전공
4.3 기본 키(Primary key) 키(key) 후보 키(candidate key) 투플을 유일하게 식별할 수 있는 애트리뷰트 집합 후보 키(candidate key) 릴레이션 R(A1, A2, ..., An)에 대한 애트리뷰트 집합 K = { Ai , Aj , ..., Ak }로서 아래 성질을 만족하면 후보키 ① 유일성(uniqueness) 각 투플의 K (= { Ai , Aj , ... , Ak }) 의 값(< vi , vj , ... , vk >)은 유일 ② 최소성(minimality) K는 투플을 유일하게 식별하기 위해 필요한 애트리뷰트로만 구성 금오공과대학 컴퓨터공학부 컴퓨터공학전공
기본 키 (2) 슈퍼 키 (super key) 기본 키 (primary key) 대체 키 (alternate key) 유일성(uniqueness)은 만족하지만 최소성(minimality)이 만족되는 않는 애트리뷰트의 집합 기본 키 (primary key) 후보 키(candidate key) 중에서 데이타베이스 설계자가 지정한 하나의 키 각 투플에 대한 기본 키 값은 항상 유효(no null value) 대체 키 (alternate key) 후보 키 중에 기본 키를 제외한 나머지 후보 키 금오공과대학 컴퓨터공학부 컴퓨터공학전공
대학(University) 관계 데이타베이스 example 대학(University) 관계 데이타베이스 학번 (Sno) 이름 (Sname) 학년 (Year) 학과 (Dept) 100 나 수 영 4 컴퓨터 200 이 찬 수 3 전기 300 정 기 태 1 400 송 병 길 500 박 종 화 2 산공 학생 (STUDENT) 과목번호 (Cno) 과목이름 (Cname) 학점 (Credit) 학과 (Dept) C123 프로그래밍 3 컴퓨터 C312 자료 구조 C324 화일 구조 C413 데이타베이스 E412 반 도 체 전자 담당교수 (PRname) 김성국 황수관 이규찬 이일로 홍봉진 과목 (COURSE) 금오공과대학 컴퓨터공학부 컴퓨터공학전공
대학(University) 관계 데이타베이스(cont’d) example 대학(University) 관계 데이타베이스(cont’d) 학번 (Sno) 100 200 300 400 500 과목번호 (Cno) C413 E412 C123 C312 C324 성적 (Grade) A B C 중간성적 (Midterm) 90 95 85 75 80 65 기말성적 (Final) 등록 (ENROL) 금오공과대학 컴퓨터공학부 컴퓨터공학전공
외래 키(Foreign key) 외래 키(foreign key) 릴레이션 R에 속한 애트리뷰트 집합 FK가 릴레이션 S의 기본 키일 때 FK는 R의 외래 키이다. (FK의 도메인) = (S의 기본 키의 도메인) FK의 값은 S에 존재하는 값이거나 null R과 S가 반드시 다른 릴레이션일 필요는 없음 R을 참조 릴레이션(referencing relation), S를 피참조 릴레이션(referenced relation)이라 함 금오공과대학 컴퓨터공학부 컴퓨터공학전공
외래 키 (2) R S인 경우 R = S인 경우 교수 (교수번호, 교수이름, 학과번호, 직급) 학과 (학과번호, 학과이름, 학과장교수번호, 학생수) PK FK 학생 (학번, 이름, 학년, 학과) 과목 (과목번호, 과목이름, 학점, 학과, 담당교수) 등록 (학번, 과목번호, 성적) FK FK R = S인 경우 교수1 (교수번호, 교수이름, 학과번호, 학장교수번호) PK FK 금오공과대학 컴퓨터공학부 컴퓨터공학전공
4.6 무결성 제약(Integrity Constraint) 데이타베이스 상태(database state)가 항상 만족시켜야 됨 개체 무결성(entity integrity) 기본 키 값은 언제 어느 때고 null값을 가질 수 없다. ☞ Notes : null 값 정보 부재를 명시적으로 표현하는 특수한 데이타 값 ① 알려지지 않은 값(unknown value) ② 해당 없음(inapplicable) 참조 무결성(referential integrity) 외래 키의 값은 참조된 릴레이션의 기본 키 값이거나 null이다. 금오공과대학 컴퓨터공학부 컴퓨터공학전공
무결성 제약(Integrity Constraint)(2) 데이타베이스 상태 (database state) 어느 한 시점에 데이타베이스에 저장된 데이타 값 데이타베이스 인스턴스들 데이타베이스 상태 변화: 삽입, 삭제, 변경 연산 DBMS는 데이타베이스 상태의 변화에도 항상 무결성 제약을 만족시키도록 해야 함 금오공과대학 컴퓨터공학부 컴퓨터공학전공