데이터베이스 (Database) 과관계데이터베이스제약조건 문양세강원대학교 IT특성화대학컴퓨터과학전공
강의내용. 관계모델의개념 관계모델제약조건과관계형데이터베이스스키마 갱신연산과제약조건의위반처리 Page 2
& 관계데이터베이스 1970 년 IBM 연구소의 Ted Codd 가처음으로소개 대표적관계 DMBS IBM의 DB2 Informix 의 Dynamic Server e Oracle의 Oracle, Rdb Microsoft의 SQL Server, Access Legacy 시스템 새롭게구축되는시스템과구별하여이전부터사용되어온시스템을지칭하는용어 Page 3
관계모델의개념 (1/3) 테이블 릴레이션 행 투플 열 애트리뷰트 Page 4
관계모델의개념 (2/3) 관계모델용어 행 투플 열 애트리뷰트 테이블 릴레이션 관계모델의구성 관계모델에서데이터베이스는릴레이션 ( 테이블 ) 들의모임으로표현됨 릴레이션은투플 ( 행, 레코드 ) 들의집합으로표현됨 투플은애트리뷰트 ( 컬럼, 필드, 혹은속성 ) 들로구성됨 ER 모델과의비교 ( 일반적으로 ER 모델링이후에관계모델로변환 ) 테이블 : 엔티티타입 ( 혹은다치애트리뷰트또는관계타입 ) 행 : 엔티티혹은관계에해당하는사실을표현함 열 : 애트리뷰트들을표시함 Page 5
관계모델의개념 (3/3) Page 6
관계모델의용어 (1/3) 도메인 (domain) ( 애트리뷰트가가질수있는 ) 원자값 (atomic value) 들의집합 도메인의예 USA_phone_numbers: 미국에서사용하는 10 자리전화번호들의집합 Names: 개인의이름들의집합 Employee_ages: 15~80 사이의사원들의나이 각도메인을위해데이터타입또는포맷을명시하기도함 ( 예 : USA_phone_numbers 도메인을위한데이터타입은 (ddd)ddd-dddd로명시 ) 데이터타입 도메인은실제데이터타입으로명시함 데이터타입의예 : string, integer, real 포맷이나범위를명시하는예 : USA_phone_numbers: (ddd) ddd-dddd, 여기서 d 는한자리숫자 Employee_ages: 15 와 80 사이의정수 Page 7
관계모델의용어 (2/3) 릴레이션스키마 (relation schema) 릴레이션이름 R 과애트리뷰트 A i 들의집합으로 R(A 1, A 2,..., A n ) 로표기함 릴레이션의차수 (degree): 릴레이션의애트리뷰트갯수 예 : STUDENT(Name, SSN, BirthDate, Address) 릴레이션의차수 = 4 도메인의표현 : dom(a i ) = integer, dom(name) = Names 릴레이션스키마 R(A 1, A 2,..., A n ) 의투플 t n- 투플 (n 개의애트리뷰트로구성된투플 ) 이라부름 n- 투플 t: 값들의 ( 순서화된 ) 집합 t = <v 1, v 2,..., v n >, 값 v i 는 dom(a i ) 의한원소임 Page 8
관계모델의용어 (3/3) 릴레이션스키마 R 에대한릴레이션혹은릴레이션인스턴스 (relation instance) r 또는 r(r) 투플의집합 ; r = r(r) = {t 1, t 2,..., t m } r(r) 은 R 을정의하는 m 개의도메인들에대한카티션프로덕트의부분집합 r(r) dom(a 1 ) dom(a 2 )... dom(a n ) 최대가능투플수 : dom(a 1 ) dom(a 2 )... dom(a n ) r(r) 은실세계의특정상태를반영 Page 9
실제예를통한관계모델의용어 Page 10
릴레이션의특성들 (1/4) 릴레이션에서투플의순서 릴레이션은투플들의집합으로정의됨 집합에서원소의순서가무의미한것과마찬가지로투플의순서역시의미가없음 Basic Property of Sets (from Discrete Mathematics) Sets are inherently unordered: ( 순서가중요치않다!) No matter what objects a, b, and c denote, {a, b, c} = {a, c, b} = {b, a, c} = {b, c, a} = {c, a, b} = {c, b, a}. All elements are distinct (unequal); multiple listings make no difference! ( 중복은의미가없다!) If a=b, then {a, b, c} = {a, c} = {b, c} = {a, a, b, a, b, c, c, c, c}. This set contains at most two elements! Page 11
릴레이션의특성들 (2/4) 투플의순서상이 동일한릴레이션 Page 12
릴레이션의특성들 (3/4) 투플내에서값들의순서와릴레이션의또다른정의 n- 투플은 n 개값의순서리스트 (ordered list) 이며, 한투플내에서값들의순서는중요함 ( 리스트에서원소의순서는중요한의미를가짐 ) 앞으로이정의를이용 반면에, 각애트리뷰트와값이서로대응될수있다면애트리뷰트값들의순서는중요하 지않을수있음 하나의투플을 (< 애트리뷰트 >, < 값 >) 쌍들의집합으로간주하면애트리뷰트와값은서 로대응될수있으며, 값의순서는중요하지않음 보다일반적인투플의정의 Page 13
릴레이션의특성들 (4/4) 투플내에서의값들과널 투플내의각값은더이상나눌수없는원자값 (atomic value) 들임 ER 모델에서의다치애트리뷰트나복합애트리뷰트는관계모델에서는허용되지않음 다치애트리뷰트나복합애트리뷰트는별도의릴레이션으로표현되어야함 값을알수없거나해당되는값이없을때에는 null 이라는특수값을사용함 릴레이션의해석 ( 의미 ) 릴레이션스키마는일종의선언 (declaration) 또는주장 (assertion) 으로해석할수있음 : STUDENT 스키마는일반적으로학생개체가 Name, SSN, Home-Phone, Address,... 을갖는다고주장 릴레이션내각투플은선언 / 주장에대한사실또는인스턴스로해석할수있음 : 다음투플은이름이 Benjamin Bayer, SSN이 305-61-2435 등등의사실을나타냄 Page 14
관계모델의표기법 (1/2) 차수가 n 인릴레이션스키마 R 은 R(A 1, A 2,..., A n ) 으로표기 릴레이션 r(r) 의 n- 투플 t 는 t = <v 1, v 2,..., v n > 으로표기, 여기서 v i 는애트리뷰트 A i 의값 t[a i ] 와 ta t.a i 는 t 에서애트리뷰트 A i 의값 v i 를나타냄, 투플 t 의구성요소값 (component value) 을 t[a i ] = v i ( 투플 t 에대한애트리뷰트 A i 의값 ) 로표기 t[a u, A v,..., A w ] 는애트리뷰트 A u, A v,..., A w 의값을포함하는부 (sub)- 투플을가리킴 대문자 Q, R, S 등은릴레이션스키마를나타냄 소문자 q, r, s 등은 (Q, R, S 등에대응하는 ) 릴레이션상태를나타냄 소문자 t, u, v 등은투플을나타냄 Page 15
관계모델의표기법 (2/2) 일반적으로, STUDENT 처럼릴레이션스키마의이름은릴레이션의현재투플들 의집합, 즉현재의릴레이션상태를가리키고, 반면에 STUDENT(Name, SSN,...) 는릴레이션스키마를가리킴 서로다른릴레이션에서동일한이름의애트리뷰트를사용할수있으며, 이경우 애트리뷰트이름앞에릴레이션이름을붙여서서로를구분함 STUDENTName STUDENT.Name, Faculty.Name, Employee.Name Page 16
강의내용. 관계모델의개념 관계모델제약조건과관계형데이터베이스스키마 갱신연산과제약조건의위반처리 Page 17
관계모델제약조건 (constraint) 제약조건은모든릴레이션인스턴스들이만족해야하는조건임 스키마기반제약조건 : 데이터모델스키마에서 DDL을통해직접표현가능한조건 (1) 도메인제약조건 (domain constraints) (2) 키제약조건 (key constraints) (3) 널에대한제약조건 (constraints t on nulls) (4) 엔티티무결성제약조건 (entity integrity constraints) (5) 참조무결성제약조건 (referential integrity constraints) Page 18
도메인제약조건 도메인제약조건 -1 각애트리뷰트 A 의값은반드시 A 의도메인 dom(a) 에속하는원자값이어야함 도메인과관련된데이터타입 정수, 실수와같은표준숫자형 문자, 고정길이문자열, 가변길이문자열 날짜, 시간 타임스탬프 화폐단위등 Page 19
키제약조건과널에대한제약조건 (1/3) 키제약조건 -2 릴레이션은투플의집합으로정의되므로, 모든원소는중복되어서는안됨 어떤두투플도릴레이션의모든애트리뷰트에대해같은값들의조합을가질수없음 R 의슈퍼키 (superkey) ey) R 의애트리뷰트집합 SK 로서다음의성질을만족해야함 모든유효한릴레이션인스턴스 r(r) 에서어떠한두투플도동일한 SK 값을갖지않아야함 즉, r(r) 내의임의의서로다른두투플 t1 과 t2 에대해 t1[sk] t2[sk] 이어야함 R 의키 (key) 최소 슈퍼키 즉, 슈퍼키들중에서슈퍼키 K를구성하는어느한애트리뷰트라도빠지면슈퍼키가될수없는슈퍼키 K를의미함 키애트리뷰트의값은릴레이션내각투플을유일하게식별하는데이용할수있음 Page 20
키제약조건과널에대한제약조건 (2/3) 최소슈퍼키 키 슈퍼키 슈퍼키 Page 21
키제약조건과널에대한제약조건 (3/3) 기본키 (primary key) 일반적으로릴레이션은여러키를가질수있는데, 이들을후보키 (candidate key) 라함 릴레이션이여러후보키를가지면이중하나를임의로선택하여기본키로지정함 기본키를구성하는애트리뷰트는밑줄로표시함 ( 기본키에대해서는물리적인덱스등을구성하여, 접근속도를향상시킴 ) 후보키 & 기본키 후보키 널에대한제약조건 -3 애트리뷰트값으로널을허용하지않는경우, 애트리뷰트는널을가질수없음 예 : STUDENT 테이블의 Name 필드는 NOT NULL 로제한함 Page 22
관계데이터베이스와스키마 (1/3) 관계데이터베이스스키마 = S + IC (Schema + Integrity Constraint) 데이터베이스에속하는릴레이션스키마들의집합 S 와무결성제약조건 IC(Integrity Constraint) 의집합으로정의됨 S = {R 1, R 2,..., R n } + IC 데이터베이스스키마 S 의관계데이터베이스상태 ( 혹은인스턴스 ) 릴레이션상태집합 DB 를데이터베이스상태라고정의함 DB = {r 1, r 2,..., r n } 여기서 r i 는 IC 를만족함 서로다른릴레이션에서동일한이름의애트리뷰트를사용할수있으며, 이경우애트리뷰트이름앞에릴레이션이름을붙여서서로를구분함 STUDENTName STUDENT.Name, Faculty.Name, Employee.Name 데이터정의어 관계스키마를정의하기위한언어 : DDL(Data Definition Language) Page 23
관계데이터베이스와스키마 (2/3) Company = {Employee, Department, Dept_locations, Projects, Works_On, Dependent} 관계데이터베이스스키마 릴레이션스키마 Page 24
관계데이터베이스와스키마 (3/3) COMPANY 관계데이터베이스스키마에대응하는관계데이터베이스상태 PK 참조무결성제약조건 FK 릴레이션상태 Page 25
무결성제약조건이뭐야? 관계데이터베이스스키마 = S(Schema) + IC(Integrity Constraint) 라는데, 도대체무결성제약조건이뭐야? 앞서의세가지제약조건 + 엔티티무결성제약조건 + 참조무결성제약조건 Page 26
엔티티무결성과참조무결성제약조건 (1/2) 엔티티무결성제약조건 -4 기본키가각투플들을식별하는데이용되기때문에어떠한기본키값도널값을가질수없다는제약조건임, 기본키 릴레이션의속성을정의할때 not null임을명시 기본키에속하지않는애트리뷰트들도 null 값을가질수없도록제한할수있음 참조무결성제약조건 -5 한릴레이션에있는투플이다른릴레이션에있는투플을참조하려면반드시참조되는 투플이그릴레이션내에존재해야함 하나의릴레이션 R 에서속성 F 의값으로다른릴레이션 S 의기본키 P 값을참조하는경 우에 R 과 S 는참조무결성제약조건을가진다고함 (F 는 null 을가질수있음 ) t 1 [F] = t 2 [P] 이면 R의투플 t 1 이S의투플t 2 를참조 (reference) 한다고하며, F를외래키 (foreign key) 라고부름 R 을참조한 (referencing) 릴레이션, S 를참조된 (referenced) 릴레이션이라고부름 다른제약조건과달리참조무결성은두릴레이션에대한제약조건임 Page 27
엔티티무결성과참조무결성제약조건 (2/2) 외래키는동일한릴레이션의애트리뷰트를참조할수도있음 관계형데이터베이스스키마에서참조무결성제약조건은 R 1.FK에서 R 2.PK로의화살표로표시함 두릴레이션의 JOIN 시이용 Page 28
강의내용. 관계모델의개념 관계모델제약조건과관계형데이터베이스스키마 갱신연산과제약조건의위반처리 Page 29
관계모델의갱신연산 관계모델의연산의종류 추출 (retrieval) Read 갱신 (update) - Write 릴레이션에대한기본갱신연산 삽입 : 새로운투플의삽입 삭제 : 기존투플의삭제 수정 : 기존투플의애트리뷰트값의변경 갱신 ( 삽입, 삭제, 수정 ) 연산을실행하는경우스키마에정의된 ( 무결성 ) 제약조건을위반하지않아야함 Page 30
삽입연산 삽입연산 네가지종류의제약조건을위반할수있음 도메인제약조건 : 삽입되는투플 t 에서애트리뷰트의값이도메인에없는경우 키제약조건 : t 에서기본키의값이다른투플에서이미존재하는경우 엔티티제약조건 :t 에서기본키의값이널인경우 참조무결성제약조건 : t에서외래키의값이참조되는릴레이션의기본키값으로존재하지않는경우 널에대한제약조건 엔티티제약조건에포함된다고볼수있음 제약조건을위반하면그삽입을거부하거나, 그위반사실을사용자에 게알려정정하도록해야함 Page 31
삭제연산 삭제연산 참조제약조건 : 삭제하려는투플을다른투플에서참조하고있는경우 참조제약조건의유지 : 투플이삭제되는경우다른투플에서참조하고있는지검사하여그렇지않는경우에만삭제함 삭제연산이참조무결성제약조건을위반하는경우취할수있는세가지옵션 삭제를거부 삭제되는투플을참조하는투플들까지모두삭제 ( 연쇄삭제 ) 삭제되는투플을참조하는투플에서외래키값을널로바꾸거나다른유효한투플을참조하도록변경 위의세가지옵션중사용자가응용의특성에적합한것을선택하도록하는것이바람직함 Page 32
수정연산 수정연산 수정연산은기본적으로 삭제후삽입 연산으로간주할수있으므로삽입과삭제시의 문제점이모두나타남 기본키나외래키가아닌애트리뷰트값의변경은큰문제가없음 도메인제약조건의위반여부만을확인하면됨 Page 33
요약 관계모델의개념 용어정의 ( 릴레이션, 투플, 애트리뷰트등 ) 관계제약조건과관계형데이타베이스스키마 도메인제약조건, 키제약조건, 엔티티무결성제약조건, 참조무결성제약조건 스키마는릴레이션의집합과 ( 무결성 ) 제약조건집합으로구성됨 갱신연산과제약조건의위반처리 릴레이션에투플을삽입하거나삭제변경할때제약조건을만족하는지검사 Page 34