데이터베이스

SQL_조작연산_무결성 제약 조건, 도메인, 키, 기본키 엔티티 무결성, 외래키, 참조 무결성 제약조건, ON DELETE UPDATE CASCADE RESTRICT SET NULL DEFAULT

스윙스윙 2021. 10. 1. 15:15

▣ SQL_조작연산_무결성 제약 조건, 도메인, 키, 기본키 엔티티 무결성, 외래키, 참조 무결성 제약조건

구분 설명
도메인 제약조건
도메인 무결성
(Domain Constraint)
각 애트릐뷰트 값 -> 원자값
데이터형식을 통한 값 제한(정수형, 실수형, 문자형 등)
디폴트값 지정으로 범위 제한
NOT NULL 구문으로 값 존재 보장
키 제약조건
(Key constraint)
애트리뷰트에 중복된 값 존재 불가
릴레이션을 정의할 때 기본키, UNIQUE 명시한 애트리뷰트 중복X
기본키와 엔티티 무결성 제약조건
개체 무결성
(Entity Integrity Constraint)
두 개 이상의 투플이 동일한 기본키 값X
기본키는 NULL값 및 중복값을 가질수 없음
외래키와 참조 무결성 제약조건
(Referential Integrity Constraint)
외래키의 값 = 참조 릴레이션의 어떤 투플의 기본 값
외래키는 자신을 포함하고 있는 릴레이션의 기본키 or NULL

■ 외래키 옵션

1) On Delete

 Cascade : 부모 데이터 삭제 시 자식 데이터도 삭제 

 Set null : 부모 데이터 삭제 시 자식 테이블의 참조 컬럼을 Null로 업데이트

 Set default : 부모 데이터 삭제 시 자식 테이블의 참조 컬럼을 Default 값으로 업데이트

 Restrict : 자식 테이블이 참조하고 있을 경우, 데이터 삭제 불가

 No Action : Restrict와 동일, 옵션을 지정하지 않았을 경우 자동으로 선택된다.

 
2) On Update

 Cascade : 부모 데이터 업데이트 시 자식 데이터도 업데이트 

 Set null : 부모 데이터 업데이트 시 자식 테이블의 참조 컬럼을 Null로 업데이트

 Set default : 부모 데이터 업데이트 시 자식 테이블의 참조 컬럼을 Default 값으로 업데이트

 Restrict : 자식 테이블이 참조하고 있을 경우, 업데이트 불가

 No Action : Restrict와 동일, 옵션을 지정하지 않았을 경우 자동으로 선택된다.


2019년 51번

정답 : 2번, 3번

하위테이블(R)의 튜플 삽입 연산은 참조 무결성 제약조건의 영향을 받으므로 1)번은 틀렸음

상위 테이블(S)의 튜플 삽입 연산은 참조 무결성 제약조건의 영향을 받지 않으므로 2)번은 옳은 설명임

UPDATE CASCADE는 상위 테이블(S)의 식별자 S.C가 갱신될 때 참조되는 외래키 R.C는

파급해서 변경됨으로 3)번은 옳은 설명임

DELETE SET NULL은 상위 테이블(S)가 삭제될 때 참조되는 R.C는 NULL값으로 변경됨으로 4)번은 틀렸음


2020년 55번

정답 : 4번

참조 무결성 제약조건으로 하위 테이블에 대한 삽입 규칙과 상위 테이블에 대한 삭제/갱신규칙이 있음

Students, Enrolled는 1:M관계로 하위 테이블 Enrolled에 외래키 제약조건을 생성해야 함

따라서, 보기 1, 2번은 Students 릴레이션 생성이므로 틀림

 

상위테이블의 데이터가 삭제될 때 하위 테이블의 참조 데이터도 함께 삭제해야 하므로, 테이블 Enrolled의 외래키(FK) sid에 대한 참조 무결성 옵션은 "DELETE CASCADE"를 부여해야 함

 


 

2021년 65번

정답 : 2번

상사직원이 삭제되면 ON DELETE SET NULL에 따라서 NULL 값으로 갱신된다.

 


2012년 65번

정답 : 1번, 2번, 3번

무결성 제약은 개체 무결성, 키 무결성, 도메인 무결성, 참조 무결성, 속성 무결성, 사용자의 무결성이 있음

정규화는 속성간의 종속관계 제거를 위한 릴레이션의 무손실 분해 과정을 의미하며 제약조건이 아님

 


2012년 72번

정답 : 2번

SELECT COUNT(직원번호) FROM 직원; -> 3건 조회됨

DELETE FROM 부서 WHERE 부서번호 = '20'; -> ON DELETE CASCASE에 의해 직원테이블에서 2건이 삭제됨

SELECT COUNT(직원번호) FROM 직원; -> 1건 조회됨, '10'영업과 1건만 남음

 


2012년 74번

정답 : 4번

SCHOOL 릴레이션 기본키 sid (단과대학)

FACULTY 릴레이션 기본키 fid (교수)

CENTER 릴레이션 기본키 : 센터이름, 단과대학

외래키 1 : 단과대학(SCHOOL의 sid참조)

외래키 2 : 센터장번호(FACULTY의 fid참조)

 

1) CENTER릴레이션의 기본키에 교수가 포함되어 있지 않으므로 교수는 여러개의 센터의 센터장이 될 수 있음

2) SCHOOL의 sid만 위배하지 않으면 되므로 2개 이상의 센터를 갖을 수 있음

3) PK가 센터이름, 단과대학의 복합키로 구성되어 있으므로 단과대학에 소속되지 않은 센터가 있을 수 없음

4) 센터이름으로만 PK가 구성되어 있지 않으므로 단과대학 이름만 다르다면 이름이 같은 센터가 존재할 수 있음

 


2013년 64번

정답 : 2번