테이블의 속성을 지정할 때 해당 속성에 들어오는 값의 범위나 크기를 제외한 나머지에 대한 조건을 기술하는 것 NOT NULL 제약조건 (필수 입력) : 해당 속성의 값에 NULL값이 들어오면 안 되게끔 하는 조건 형식 : 테이블을 설정할 때 컬럼명 자료형 NOT NULL
데이터 무결성 : 데이터 베이스 내의 데이터에 대한 정확성, 일관성, 유효성, 신뢰성을 보장하기 위해 데이터 변경 혹은 수정 시 여러가지 제한을 두어 데이터의 정확성을 보증하는 것을 말한다. 관계형 괄리시스템(RDBMS)에서는 설계 시 무결성을 고려한 설계로 데이터를 보호할 필요가 있다. **무결 : 결점이나 결함이 없는 상태
--오류순서 자료형 > NOT NULL > CHECK > DEFAULT > PRIMARY
제약조건(CONSTRAINT) 1) 개체 무결성( Entity integrity) => 기본 키(primary key =>UNIQUE+ NOT NULL) **UNIQUE: 중복값x, NULL값o ** NOT NULL : NULL값x, 중복값o - 모든 테이블이 기본 키(primary key)로 선택된 필드(column)를 가져야 한다. - 기본 키로 선택된 필드는고유한 값(Unique-중복된 값을 허용안함)을 가져야 하며,빈값x(null)을 허용하지 않는다. - UNIQUE 제약 조건 또는 PRIMARY KEY 제약 조건 을 설정하여 테이블의 기본 키나 식별자로 사용되는 열의 무결성을 강제하도록 한다.
2) 참조 무결성 (Reference integrity) => 외래 키 (FOREIGN ) **부모-자식, 주종 관계의 테이블이 존재해야 한다. - 참조관계에 있는 두 테이블의 데이터가 항상 일관된 값을 갖도록 유지되는 것을 말한다. - 외래키와 관련있는 무결성. - 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야함. - 즉 릴레이션(=테이블)은 참조할 수 없는 외래키 값을 가질 수 었다.
3) 도메인 무결성 (Domain integrity) : 열에 대한 무결성을 보장하기 위한 것으로 컬럼의 값이 NULL값을 허용하지 않거나, 데이터 타입이 적절한지 올바른 형식의 데이터가 저장되었는지 등을 확인하는 것이다. 자료형 지정, 체크(CHECK), 디폴드(DEFAULT), NOT NULL 등의 제약(CONSTRAINTS) 들로 이러한 도메인 무결성을 보장할 수 있다. 예를 들어, 생일 날짜 컬럼에 알파벳이 입력되는 경우 도메인 무결성을 위반하는 것이라 볼 수 있다. *도메인 : 속성(Column) 하나가 가질 수 있는 모든 값의 집합.
제약조건확인
제약조건에 대한 전반적인 데이터를 가지고 있는 데이터사전(데이터 딕셔너리) 테이블 USER_CONSTRAINTS **데이터 딕셔너리 : 메타데이터(데이터를 위한 데이터)를 가지고 있는 테이블
P : PRIMARY KEY (UNIQUE + NOT NULL) R : FOREIGN KEY (REFERENCES) U : UNIQUE C : NOT NULL, CHECK
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'EMP02'; SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME FROM USER_CONSTRAINTS; DESC USER_CONSTRAINTS;
- 해당 속성(컬럼)에 아무런 데이터를 넣지 않는 경우 - 기본값을 설정할 수 있는 조건 - 형식 : 컬럼명 자료형 DEFAULT 해당 자료형에 맞는 값 ex) 컬럼명 자료형 DEFAULT 0 컬럼명 자료형 DEFAULT '가' 컬럼명 자료형 DEFAULT SYSDATE **조건 : 반드시 제약조건 중 가장 처음에 기술해야 한다. UNIQUE NOT NULL or NOT NULL UNIQUE
2) 후보 키 (Candidate key) - 후보 키는 이름에서도 나타나듯이 기본 키가 될 수 있는 후보. 테이블에 존재하는 전체 필드의 부분집합으로써, 유일성(uniqueness)과 최소성(irreducibility)을 만족해야 한다. 유일성은 모든 레코드에서 해당 필드에 중복된 값이 나타나지 않는다는 속성이며, 최소성은 최소한의 필드로 레코드를 유일하게 구별할 수 있어야 한다는 속성이다.
3) 기본 키 (Primary key) - 테이블에서 특정 레코드를 구별하기 위해 후보 키 중에서 선택된 고유한 식별자 - 후보키와 같이 유일성과 최소성에 대한 속성을 가져야 하며 NULL값을 가질 수 없다 . - 기본 키를 설정할 때는 아래와 같은 두 가지 사항을 고려하는 것이 좋다. --값이 자주 변경되지 않는 것을 선택 : 기본 키로 선택된 필드는 값이 변경될 때마다 해당 값이 유일한지, NULL값은 아닌지를 검사해야 하기 때문에 값이 자주 변경되지 않는 필드를 기본 키로 설정하는 것이 바람직 하다. --값이 단순한 것을 선택 : 기본키로 선택된 필드에 저장되는 데이터가 많은 자릿수를 갖는 정수거나 많은 문자를 포함하는 문자열이라면, 기본 키를 비교할 때 그만큼 많은 비용이 소모될 것이다. 그러므로, 짧고 단순한 형식의 데이터를 저장하는 필드를 기본 키로 설정하는 것이 DBMS의 성능 측면에서 유리하다.
4) 대체 키 (Alternate key) - 후보 키 중에서 기본 키로 선택된 것들을 제외한 모든 키
5) 복합 키 (Composite key) - 두 개 이상의 필드를 포함하는 키 - 앞에서 예를 들은 { id, dept_id }와 같은 키는 복합키의 한 예시이다.
6) 외래 키 (Foreign key) - 한 테이블의 키 중에서 다른 테이블의 레코드를 유일하게 식별할 수 있는 키 - 한 테이블의 레코드에서 다른 테이블의 레코드를 참조하기 위해 이용
하나의 필드 또는 전체 필드의 부분집합으로 구성된다. 중복된 값과 NULL값을 가질 수 있다. 반드시 참조되는 테이블에서 유일한 값을 갖는 필드를 참조해야한다. 예를 들어, 외래키는 참조되는 테이블의 기본 키를 참조할 수도 있다. 참조되는 테이블에 존재하는 값만을 가져야 한다. NULL값은 실제로 존재하는 값은 아니지만, 많은 데이터베이스에서 NULL값은 예외로 한다.