728x90

데이터의 무결성

테이블엔 정확한 구조의 정보만이 들어가야함

무결성을 위해서 무결성 제약조건(IC : Integrity Constraint)을 사용한다.

 

선언위치에 따라 무결성제약조건은

 

 컬럼수준(테이블선언시)

어떤 제약조건도 선언가능

 

create table table3(
 mid varchar(10) constraint table3_mid_pk primary key,
 mname varchar(20)
)

 

create table table5(
 mid varchar(10) not null,
 mname varchar(10)
)

 

테이블수준(컬럼선언후 나중에따로)

여러 컬럼에 적용되는 제약조건 선언가능

NOT NULL 선언 불가

 

create table table4(
 mid varchar(10),
 mname varchar(20),
 constraint table4_mid_pk primary key (mid)
)

 

create table table6(
 ssn1 varchar(6),
 ssn1 varchar(7),
 mname varchar(10),
 constraint table6_ssn1_ssn2_pk primary key (ssn1,ssn2)
)

 

제약조건의 이름을 안줄경우 오라클은 SYS_XXXXXXXX와 같은 구조로 이름을 만든다.

 

UNIQUE PK공통점

 -> 값의 중복이 되면 안된다.자동으로 UNIQUE INDEX(속도향상)가 만들어진다.

 -> 컬럼 여러개를 묶어서 복합키로 만들 수 도 있다.

차이점

 -> PK null불가, UNIQUE는 가능

 -> PK는 테이블당 하나만 가능 UNIQUE는 여러개 가능

 

constraint명명 규칙 => 테이블명_컬럼n_제약조건

 

foreign key

- FK가 있는 테이블을 child table이라 부른다.

 또한 참조되는 테이블은 parent table이라 부른다.

 부모와 자식테이블이 같은 경우도 있다.

 

 

PK의 삭제에 대비해 FK를 지정하며 지정하는 주요 옵션

destrict - 삭제시 삭제되지않는다.(default)

cascade - 삭제시 연쇄삭제.

set to null - 삭제시 널로 변환

 

 create table table12(
  mid varchar(10) primary key,
  ssn1 varchar(6),
  ssn2 varchar(7),
  constraint table12_ssn1_ssn2_un unique (ssn1,ssn2)
 );
 
  create table tabl13(
   mid varchar(10) references table12(mid) on delete cascade,
   ssn1 varchar(6),
   ssn2 varchar(7),
   constraint table13_ssn1_ssn2_fk foreign key (ssn1,ssn2) references table12(ssn1,

   ssn2)
  );

 

create table table14(
 mid varchar(10) primary key,
 mname varchar(10)
);
insert into table14 values('fall','
이가을'); 
 
create table table15(
 mid varchar(10) references table14(mid) on delete cascade,
 mtel varchar(50)
);

insert into table15 values('fall','011-9878-7231');

delete from table14 where mid = 'fall'; 

 


create table table16(
 mid varchar(10) references table14(mid) on delete set null,
 mtel varchar(50)
 );
 insert into table16 values ('fall', '34234234234');
 delete from table14 where mid = 'fall';

 

Check constraint

오라클의 세가지 무결성 : 객체 무결성, 참조 무결성, 영역 무결성

어떠한 영역에 속하는 값이 들어간다.

 

영역 무결성 :

create table table17(
 co1 number(1) constraint table17_co1_ck check (co1 in (1,2,3)),
 co2 number(3) check (co2>0 and co2<10),
 co3 number(1),
 constraint table17_co3_ck check(co3>co1)

--이경우 반드시 테이블 수준으로 부여한다.

--컬럼 수준에선 다른 컬럼을 참조하지 못한다.
 );
insert into table17 values (2,5,3);

 

728x90

'DB' 카테고리의 다른 글

빅데이터(BIG DATA)  (0) 2014.10.17
빅데이터 3V  (0) 2014.10.17
mysql latin1 에서 euckr 변환  (0) 2014.08.06
mssql, mysql, oracle null 값 변경하기  (0) 2014.07.06
mssql not in not exists  (1) 2014.06.28

+ Recent posts