안녕하세요??
저는 숭의여대 인터넷정보과에 재학중인 학생입니다..
제가 이번에. 관계데이타제약에 관한 설명을 맡게 되었는데요...
담주 수욜에 발표랍니다.ㅠ.ㅠ
근데. 아무리 책을 읽어보고 또 읽어봐도.. 잘 이해가 되질 않아서요..
혹시 제가 이해되기 쉽도록 나온 책이라든지..
어떻게 하면. 다른 친구들에게 쉽게 설명할 수 있을지가 궁금하네여..
뭔가 방법이 있는건가요??
관계데이타제약이라고 하는 것은 relational database constraint 라고 하는 것으로서 테이블간의 상호 관계, 엔터티간의 상호관계, 엔터티 내의 상호 관계를 설정해 주는 것을 의미합니다. 이것은 자료의 무결성을 유지하기 위한 하나의 방법으로 이용되는 것입니다.
너무 어렵고 이상하게 설명한 느낌이 드는데...
간단히 얘기 하면 하나의 필드에 어떤 값을 넣을때 그 값은 반드시 어떤 조건을 만족해야 한다는 등의 자료에 관한 규약을 설정해 주는 것입니다.
예를 들면 다음 테이블을 생각해 봅시다.
create table tt ( a int check (a>10), b int check (b>10) constraint t_const check (a>b) );
이런 경우 table tt 는 두개의 필드를가지게 되지요.
그중 a 라는 필드는 정수 자료형인데 그 값이 10보다 크야 한다는 내용이지요. 여기서 check (a>10) 이라는 부분이 constraint (제약) 이라고 합니다. 값을 입력하되 이 조건을 만족해야 한다는 것이지요. 이것은 column constraint 로서 한 필드에 대한 제약을 정의한 것이죠.
마지막 constraint t_const (a>b) 라는 부분은 필드간 (엔터티간-사이-의 제약을 나타 내는 것으로서 table constraint 라고 부릅니다.
그럼 다음과 같은 SQL 구문을 생각해 봅시다.
pgbash> insert into tt values (5,20);
(-403)ERROR: ExecAppend: rejected due to CHECK constraint t_const
pgbash> insert into tt values (20,5);
(-403)ERROR: ExecAppend: rejected due to CHECK constraint tt_b
pgbash> insert into tt values (11,20);
pgbash> insert into tt values (20,11);
INSERT 101796745 1
여기서 세개의 query 중 제일 마지막을 제외하고 위의 두개의 query 는 실패하고 말았습니다. 원인이 무엇인지 생각해 보시면 constraint 의 의미를 이해할수 있지 않을까 싶군요.