블로그 이미지
'무른모'란 부드럽다라는 뜻을 가진 '무르다'라는 말과 도구, 연장을 뜻하는 '연모'라는 순 우리말의 합성어로 소프트웨어를 말합니다. seanhigher

카테고리

분류 전체보기 (161)
Blog srart (16)
Dev Center (94)
Real Life (13)
Mac life (21)
Naver life (17)
Total657,251
Today60
Yesterday89
데이터베이스는 수많은 데이터를 다루게 된다. 그렇기 때문에 꼭 지켜져야 할 조건이 있는데, 그중 가장 중요한 조건은 데이터의 무결성을 유지해야 한다는 것이다.



데이터의 무결성.
데이터 무결성의 사전적인 의미는 저장된 데이터값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성이라고 할 수 있다. 무결성에는 널 , 무결성, 참조, 도메인, 키, 관계, 개체 무결성 이 있다. 이런 데이터 무결성은 테이블에서 제약조건을 선언함으로써 지켜질 수 있다.


제약조건.
제약조건은 각 컬럼에서 데이터들이 갖을 수 있는 특징을 표현하게 된다. 제약조건으로 표현되는 것에는, 기본키 조건, 외래키, 유니크, 낫 널, 체크 조건을 줄 수 있다. 제약조건을 명시하는 방법에는 컬럼 옆에 조건을 표시하는 컬럼레벨 방식과, 따로 조건을 명시하는 테이블 레벨의 방식으로 나뉠 수 있다. 기본키 조건인 PRIMARY KEY 조건은 다른 레코드와 중복이 있으면 안되며, 테이블 안에서 레코드를 구분짓는 유일한 조건이 된다. 외래키 조건인 FOREIGN KEY 조건은 다른 테이블의 기본키를 참조하여 다른 테이블과의 관계를 형성하는 조건이 된다. UNIQUE 조건은 동일한 테이블 내에서 중복이 있지 않도록 한다. 아이디 같은 경우 키본키는 아니지만, 중복이 있지 않도록 할 수 있다. NOT NULL 은 해당 컬럼에 널값이 들어가지 않도록 한다. 회원 정보를 입력할때, 회원의 이름은 꼭 포함되어야 한다. CHECK는 특정한 데이터만 입력되도록 한다. 성별을 입력할 경우 남성과 여성에 대해서만 데이터를 입력받게 되고 그 이외의 데이터에 대해서는 입력이 허용되지 않게 조건을 줄 수 있다.


테이블에 제약조건 주기.
테이블을 생성하면서 제약조건을 포함할 수 있다.

CREATE TABLE member_table (
member_id VARCHAR2(10) PRIMARY KEY,
member_name VARCHAR2(20) UNIQUE NOT NULL,
member_gender VARCHAR2(1),
member_group VARCHAR2(10) REFERENCES group(group_id)
);

위의 방식은 컬럼레벨 방식으로 제약조건을 선언하는 것이다. 한개의 컬럼에 여러개의 제약조건이 있을경우복합적으로 표현하는 것이 가능하다. 하지만, 컬럼레벨 방식에서는 CHECK 조건과, 두개이상을 기본키로 설정하는 복합키를 선언하는 것이 불가능하다. 이것은 테이블레벨 방식을 사용해서만 선언이 가능하다.

CREATE TABLE member_table (
member_id VARCHAR2(10),
member_name VARCHAR2(20) NOT NULL,
member_gender VARCHAR2(1),
member_group VARCHAR2(10) REFERENCE group(group_id),

CONSTRAINT MEMBER_ID_PK PRIMARY KEY(member_id),
CONSTRAINT MEMBER_NAME_UN UNIQUE(member_name),
CONSTRAINT MEMBER_GENDER_CH CHECK(member_gender IN('F', 'M')),
CONSTRAINT MEMBER_GROUP_FK FOREIGN KEY(member_group) REFERENCES group(group_id)
);

테이블 레벨방식에서 제약조건을 선언하기 위해서는 CONSTRAINT를 사용해야 한다. 또 CONSTRAINT를 사용하면 제약조건에 이름을 선언할 수 있다. 이름을 선언하게 되면 제약조건을 수정하는 것이 가능하다. 한가지 NOT NULL 제약조건은 컬럼레벨 방식에서만 선언이 가능하고, CHECK 와 복합키는 테이블 레벨 방식에서만 선언이 가능하다는 것을 기억해야 한다. 그리고 컬럼레벨 방식에서도 CONSTRAINT 를 사용하여 이름을 지정하는 것이 가능하다.

member_id VARCHAR2(10) CONSTRAINT MEMBER_ID_PK PRIMARY KEY


제약조건 수정, 추가, 삭제.
제약조건을 수정하는것도 가능하다. 하지만, 제약조건에 맞는 이름을 알고 있어야 한다. 제약조건은 수정하기 위해서는 이름을 통해서 접근이 가능하기 때문이다. 혹시 제약조건의 이름을 기억하지 못한다면 제약조건 테이블을 통해서 알 수 있다.

SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, R_CONSTRAINT_NAME
FROM USER_CONSTRAINTS WHERE TABLE_NAME = 테이블명;

제약조건을 수정하는 방법은 컬럼을 수정하는 방법과 거의 비슷하다.

ALTER TABLE 테이블명 ADD 제약조건(컬럼);
ALTER TABLE 테이블명 MODIFY 컬럼 제약조건;
ALTER TABLE 테이블명 DROP 제약조건이름;

제약조건은 데이터베이스에 있어서 꼭 있어야 하는 요소중의 하나이다. 이제약조건을 제대로 명시하지 않고, 지키지 않는다면, 데이터베이스로의 기능을 상실하게 될 것이다.
Posted by seanhigher

댓글을 달아 주세요

최근에 달린 댓글

글 보관함