사용자가 지정한 제약조건에 대한 정보는 user_constraints 뷰를 사용하여 확인할 수 있다.
릴레이션을 갖는 TABLE을 구성하는데 행(RECORD: ROW: TUPLE)을 구성하는 데이터 값들에 의해 식별되는데, 이처럼 각 행을 식별할 수 있는 속성(attribute)을 릴레이션(relation)의 KEY라 한다.
constraint | 설명 |
---|---|
PRIMARY KEY(PK) | 해당 컬럼 값은 반드시 존재해야 하며, 유일해야 함 (NOT NULL과 UNIQUE 제약조건을 결합한 형태) |
FOREIGN KEY(FK) | 해당 컬럼 값은 참조되는 테이블의 컬럼 값 중의 하나와 일치하거나 NULL을 가짐 |
UNIQUE KEY(UK) | 테이블내에서 해당 컬럼 값은 항상 유일해야 함 |
NOT NULL | 컬럼은 NULL 값을 포함할 수 없다. |
CHECK(CK) | 해당 컬럼에 저장 가능한 데이터 값의 범위나 조건 지정 |
다음의 예를 보자.
학번 | 이름 | 학년 | 학과 |
---|---|---|---|
100 | 김씨 | 4 | 정보통신 |
200 | 이씨 | 3 | 전파공학 |
300 | 박씨 | 1 | 정보통신 |
400 | 조씨 | 4 | 전파공학 |
500 | 임씨 | 2 | 컴퓨터공학 |
위의 학생 테이블은 속성(A={학번,이름,학년,학과}) 집합으로 구성된 테이블이다.
이 테이블에서 어떤 속성 집합(K)가 속성집합(A)의 부분 집합이면서 유일성과 최소성을 만족하는 경우 속성집합(K)을 후보키(candidate key)라 한다.
즉, 학생 테이블에서 학번 속성은 테이블 내의 모든 행마다 서로 다르고 행을 유일하게 식별하는데 사용할 수 있으므로 이 학번은 학생 테이블의 후보키이다. 또한 이름 속성도 유일성을 가지므로 후보키이다.
또 이름 속성과 학과 속성을 조합해서 학생 테이블을 유일하게 식별하는 것이 가능하다면, 이 두 속성의 집합 {이름,학과} 역시 테이블의 후보키가 된다.
테이블에서 하나 이상의 후보키를 가질 수 있다. 그러나 관계형 모델에서는 테이블에서 하나의 키를 선정하여 이 키를 기본키(primary key)라 하고 기본키를 제외한 나머지 후보키를 대체키(alternate key)라 한다
예를 들어, 학생 테이블에서 학번 속성이나 이름 속성은 테이블 내의 행을 유일하게 식별할 수 있으므로 기본키로 사용될 수 있다.
하나 이상의 테이블을 연결하여 사용하는 경우 필요한 키로, 외래키(foreign key)가 있다. 외래키는 한 테이블의 속성들의 집합으로 그 값이 다른 테이블의 기본키와 일치하거나 null 값인 키를 의미한다.
관계형 데이터베이스 내의 릴레이션은 이들을 연결할 수 있는 공통의 속성을 공유할 수 있다. 다음 두 릴레이션(테이블)을 살펴보자.
외래키가 릴레이션 간의 연결을 보장하기 위해서는 반드시 다음 조건을 충족시켜야 한다.
1) 외래키의 값이 반드시 다른 릴레이션의 기본키이어야 한다.
2) 외래키는 null값을 가질 수 없다.
릴레이션 사이에 이러한 두 조건을 충족하는 경우 이 릴레이션들은 참조 무결성(referential integrity)을 나타낸다고 말한다.
무결성에는 다음과 같은 종류가 있다.
1) 개체 무결성(entity integrity) :
기본키로 사용하는 속성은 null 값을 가질 수 없다. 이는 관계 데이터 모델에서의 릴레이션이 현실의 개체를 나타내므로 이 개체들을 식별할 수 있는 식별자가 반드시 존재해야 하기 때문이다. 그러므로 이러한 속성을 개체 무결성이라 한다.
2) 참조 무결성(referential integrity) :
릴레이션은 참조할 수 없는 외래키의 값을 가져서는 안된는데, 참조할 수 없는 외래키란 null이 아니면서 참조된 릴레이션의 어떤 기본키의 값과도 일치하지 않음을 의미한다.
3) 범위 무결성:
도메인 무결성 규칙은 속성에서 허용 가능한 값의 범위를 지정하기 위한 제약조건이다 . 도메인 무결성 규칙에서는 속성의 데이터 타입, 길이, 기본 키, 유일성, null 허용, 허용 값의 범위와 같은 다양한 제약조건을 지정할 수 있다.
SQL> select constraint_name,constraint_type,
2 table_name,r_constraint_name
3 from user_constraints;
CONSTRAINT_NAME C TABLE_NAME R_CONSTRAINT_NAME
-------------------- - ---------- --------------------
FK_DEPTNO R EMP PK_DEPT
PK_DEPT P DEPT
PK_EMP P EMP
SQL>
'정보기술의 샘터........о♡ > 시스템분석&디자인' 카테고리의 다른 글
프로세스 모델링 (0) | 2008.12.02 |
---|---|
데이터모델링과 프로세스모델링 (0) | 2008.12.02 |
[스크랩] [안영회의 UML 강좌1] - 모델링과 모델링 언어(1) (0) | 2008.12.01 |
Usecase Diagram (0) | 2008.11.12 |
System-on-a-chip (0) | 2008.10.07 |