무결성과 보안은 서로 다른 개념이다. 무결성은 권한이 있는 사용자라도 잘못된 데이터를 입력하지 못하도록 방지하는 '내부적 오류 방지'이고, 보안(Security)은 권한이 없는 외부자나 불법적인 사용자가 데이터베이스에 접근하거나 데이터를 변조하지 못하도록 보호하는 '외부적 침입 방지'다. '무결성=권한 있는 사용자로부터의 오류 방지, 보안=권한 없는 사용자로부터의 보호'로 대비된다.
무결성 규칙은 크게 세 가지로 나뉜다. 개체 무결성(Entity Integrity)은 기본키를 구성하는 어떠한 속성 값도 널(NULL) 값이나 중복 값을 가질 수 없다는 조건이다. 기본키는 각 행(튜플)을 고유하게 식별하는 열이므로, 널이면 식별할 수 없고 중복이면 두 행을 구별할 수 없기 때문이다. 도메인 무결성은 각 열(속성)의 값이 그 속성이 정의된 데이터 타입이나 허용 범위(도메인)에 맞아야 한다는 규칙이다. 여기서 규정하는 것은 '열(속성)의 값'이지 튜플 전체의 값이 아니므로, '주어진 튜플의 값이 도메인에 속해야 한다'는 표현은 부정확한 설명으로 나온다.
참조 무결성(Referential Integrity)은 한 릴레이션에 저장된 튜플이 다른 릴레이션의 튜플을 참조하려면 참조되는 튜플이 반드시 그 릴레이션에 존재해야 한다는 규칙이다. 외래키가 참조하는 기본키의 값이 실제로 존재해야 하며, 외래키를 변경하면 이를 참조하고 있는 기본키도 함께 변경해야 참조 관계가 유지된다. 무결성 규정에는 이름, 검사 시기, 제약 조건 등이 명시되며, 트리거(Trigger)는 특정 조건이 만족될 때 실행될 동작을 정의하는 객체로 무결성 규칙과는 구분된다.
예제
'기본키를 구성하는 속성 값도 널이나 중복을 가질 수 없다'는 문장이 나오면 개체 무결성을 답한다. '참조되는 튜플이 반드시 존재해야 한다', '외래키와 기본키의 관계'라는 키워드는 참조 무결성으로 연결된다. 무결성과 보안의 차이를 묻는 문제에서는 '권한 있는 사용자로부터의 오류 방지=무결성', '권한 없는 사용자로부터의 접근 차단=보안'이라는 보기를 찾으면 된다. 도메인 무결성 문제는 '튜플의 값'이라는 표현을 섞어 놓고 옳지 않은 것을 고르게 하는 꼴로 나온다.
대표 기출 3문항
릴레이션 R1에 저장된 튜플이 릴레이션 R2에 있는 튜플을 참조하려면 참조되는 튜플이 반드시 R2에 존재해야 한다는 데이터 무결성 규칙은?
개체 무결성 규칙(Entity Integrity Rule)
참조 무결성 규칙(Referential Integrity Rule)
영역 무결성 규칙(Domain Integrity Rule)
트리거 규칙(Trigger Rule)
정답과 해설 보기
정답 ② · 외래키로 다른 릴레이션의 튜플을 참조할 때 참조 대상이 반드시 존재해야 하는 무결성 규칙을 묻는 문제이다. 참조 무결성 규칙은 릴레이션 R1의 외래키가 R2의 튜플을 참조할 경우 그 튜플이 R2에 반드시 존재해야 함을 보장하는 규칙이다.
참조 무결성은 외래키가 참조하는 기본키의 값을 반드시 가져야 하며, 참조 대상이 존재해야 한다.
어떤 릴레이션 R1의 기본키의 값들과 일치함을 요구하는 다른 릴레이션 R2의 한 속성을 무엇이라 하는가?
참조제약(referential constraint
외래키(foreign key)
기본키(primary key)
참조무결성(referential integrity)
정답과 해설 보기
정답 ② · 다른 릴레이션의 기본키 값과 일치하도록 요구되는 속성의 명칭을 묻는 문제이다. 외래키(Foreign Key)는 한 릴레이션 R2의 속성으로서 다른 릴레이션 R1의 기본키 값을 참조하여 두 릴레이션 간의 관계를 표현하고 참조 무결성을 유지하게 한다.
다른 테이블의 기본키를 참조하여 무결성을 보장하는 속성을 외래키라 한다.
데이터베이스 무결성과 보안의 차이점에 대한 설명 중 옳은 것은?
무결성은 권한이 있는 사용자로부터 데이터베이스를 보호하는 것이고, 보안은 권한이 없는 사용자로부터 데이터베이스를 보호하는 것이다.
무결성은 권한이 없는 사용자로부터 데이터베이스를 보호하는 것이고, 보안은 권한이 있는 사용자로부터 데이터베이스를 보호하는 것이다.
무결성과 보안은 모두 권한이 있는 사용자로부터 데이터베이스를 보호하는 것이지만, 보안은 사용자 계정과 비밀번호를 관리한다.
무결성과 보안은 모두 권한이 없는 사용자로부터 데이터베이스를 보호하는 것이지만, 무결성은 DBMS가 자동적으로 보장해 준다.
정답과 해설 보기
정답 ① · 문제는 무결성(integrity)과 보안(security)의 차이를 묻고 있다. 무결성은 권한 있는 사용자의 실수나 잘못된 입력으로부터 데이터의 정확성과 일관성을 보호하는 것을 의미하고, 보안은 권한이 없는 사용자의 불법적 접근으로부터 데이터베이스를 보호하는 것을 의미한다.
무결성은 권한 있는 사용자로부터의 오류 방지, 보안은 권한 없는 사용자로부터의 보호이므로 ①이 옳다.