oracle/12장_데이터무결성제약조건

DATABASE - 12장 연습문제

usop 2022. 12. 9. 17:19

문제 1) 무결성 제약조건의 종류, 의미를 간략하게 쓰시오

 

1) 무결성 제약조건의 종류

- NOT NULL : 해당 칼럼 값은 NULL을 포함할 수 없음

- 고유 키 : 테이블내에서 해당 칼럼 값은 항상 유일해야 함 (NULL값을 허용함)

- 기본 키 : 해당 칼럼 값은 반드시 존재해야 하며, 유일해야함 (고유키, NOT NULL 제약조건을 결합한 형태)

- 참조 : 해당 칼럼 값은 참조되는 테이블의 칼럼 값 중의 하나와 일치하거나 NULL을 가짐

- CHECK : 해당 칼럼에 저장 가능한 데이터 값의 범위나 조건 지정 (데이터 입력이나 수정시 실수 예방)

 

2) 무결성 제약조건의 의미

데이터베이스의 정확성과 일관성을 보장하기 위해 저장, 삭제, 수정 등을 제약하기 위한 조건

 

문제 2) 회원테이블 인스턴스를 참고해서 제약조건을 추가하시오(MEMBER)

 

문제 2)

 alter table member
 add constraint memeber_userid_pk PRIMARY KEY(userid);
 
 alter table member
 modify (username constraint member_username_nn NOT NULL,
         passwd constraint member_passwd_nn NOT NULL);
         
 alter table member
  add constraint member_idnum_uk unique(idnum);

 

문제 3) 웹 게시판 테이블 인스턴스(BOARD) 아래를 참조하여 테이블과 무결성 제약조건을 생성하시오

문제 3)

 

1) 테이블 생성

create table board(
 no number(5) constraint board_no_pk PRIMARY KEY,
 subject varchar2(15) constraint board_subject_nn NOT NULL,
 content varchar2(50),
 rdate date,
 userid varchar2(10) 
           constraint board_userid_fk references member(userid));

 

2) 설명 추가

comment on column board.no is '게시불 번호';
comment on column board.subject is '제목';
comment on column board.content is '내용';
comment on column board.rdate is '작성일자';
comment on column board.userid is '글쓴이';

 

 

문제 4) 3번 테이블(회원/게시판 테이블을 참조하여 무결성 제약조건을 위반하지 않게 데이터를 1건 입력하시오

문제 4) 이길순 추가 하기

insert into member
values ('gilsunLee', '이길순', 'g1111', '9007011120200', '02)222-2123', '서울', 
        to_date('08/30/2017','MM/DD/YYYY'), '컴퓨터');
        
select * from member;

 

문제 5) 4번에 입력한 데이터를 재입력해서 오류를 확인하시오.

pk, unique key 오류

ORA -00001 : PK ,UNIQUE KEY 오류 , 중복되면 안 되는 값이 들어왔다

 

 

문제 6) 4번에 입력한 데이터를 재입력할 수 있도록 비활성화 조치를 하세요.

 

pk,uk 를 비활성화 한 후 재입력 

 

alter table member
disable constraint memeber_userid_pk;

alter table member
disable constraint member_idnum_uk;

insert into member
values ('gilsunLee', '이길순', 'g1111', '9007011120200', '02)222-2123', '서울', 
        to_date('08/30/2017','MM/DD/YYYY'), '컴퓨터');