오라클 - 제약사항 (190611)
1. primary key는 unique key + not null -> 데이터가 반드시 존재해야 한다
주민번호 ?
예를 들어 성인 웹 사이트에서 주민번호는 대표성을 지니므로 primary key가 될 수 있음
Primary key도 unique index가 자동으로 생성된다.
Primary key VS Unique key
가장 큰 차이점은 테이블에 Primary key는 하나만 정의할 수 있음.
공공기관 ? 주민번호가 대표성을 지닐 수 있음.
반면 네이버나 페이스북은 이메일, ID가 대표성을 지님.
즉, Business Rule ( 도메인의 영역 ) 에 따라 Primary key 가 결정된다.
2. unique key 데이터의 고유성을 보장하면서 null을 허용 (포털 사이트의 회원가입)
unique key의 예로는 핸드폰 번호 등이 있음
unique index를 자동으로 생성 ? Quick Search
PWD VARCHAR2(8) CONSTRAINT CUSTOMER_PWD_NN - > 제약사항에 이름을 줄 수 있음!
제약사항에 이름을 지어주지 않으면 SYS_CN으로 DBMS가 자동으로 해줌.
그런데 하는게 좋음
제약사항은 SELECT와 관련이 없다. → DML (INSERT, DELETE, UPDATE) 과 관련된 것이다
CHECK 제약 사항이 NULL을 체크 못하므로 M 또는 F 일지라도 NULL이 삽입된다
해결책은 DEFAULT !
COMMIT을 하지 않아도 에러시 전체 롤백 - STATEMENT LEVEL ROLLBACK
왜 유니크를 정의하면 유니크 인덱스가 만들어질까?
INDEX의 역할 : QUICK SEARCH
7번의 INSERT가 왜 안돼? UNIQUE 속성
DBMS가 INSERT 하기 전에 유니크 인덱스로 찾아보고 삽입 여부를 결정함.
(인덱스를 통해 데이터 무결성을 보장한다)