• 뷰의 갱신에 대한 요약
– 하나의 기본 릴레이션을 사용해서 정의된 뷰가 기본 릴레이션 의 기본 키를 포함하면, 뷰의 각 투플을 기본 릴레이션의 한 투플과 정확하게 대응하므로 뷰의 갱신이 가능함
– 일반적으로 다수의 테이블을 조인하여 정의한 뷰는 뷰의 투플 과 기본 테이블의 투플간에 대응 관계를 찾기가 어려우므로 갱신할 수 없음 (모호함 발생)
뷰의 구현과 갱신(cont.)
갱신할 수 없음 (모호함 발생)
– 그룹화와 집단함수를 사용하여 정의된 뷰도 베이스 테이블에 대한 갱신으로 매핑하는데 모호성이 있으므로 갱신할 수 없 음
• 제약조건
• 권한관리
기타 기능들
• SQL2에서는 선언적 주장으로 확장된 제약조건을 명시할 수 있음
– 선언적 주장은 DDL의 CREATE ASSERTION문을 이용함
– 각 주장문은 제약조건 이름을 가지며, SQL 질의의 WHERE 절과 유 사한 조건 형태로 지정됨
예) "종업원 봉급이 부서 관리자 봉급보다 많으면 안된다."라는 제약 CREATE ASSERTION SALARY_CONSTRAINT
CHECK (NOT EXISTS (SELECT * FROM EMPLOYEE E,
주장(Assertion)으로 추가적인 제약조건 명시
CHECK (NOT EXISTS (SELECT * FROM EMPLOYEE E, EMPLOYEE M, DEPARTMENT D WHERE E.SALARY>M.SALARY AND E.DNO=D.DNUMBER AND
D.MGRSSN=M.SSN)) ;
– 제약조건 이름 SALARY_CONSTRAINT 다음에 키워드 CHECK가 오며, 그 다음의 조건을 데이터베이스 상태가 만족하면 참이 됨
– CHECK 키워드 다음에는 어떠한 WHERE 절도 사 용될 수 있지만 대부분의 경우 EXISTS나 NOT EXISTS를 사용해서 명시함
– 초기의 SQL 버전에서 제약조건 선언문은 ASSERT문과 TRIGGER 문을 사용하였음
주장(Assertion)으로 추가적인 제약조건 명시 (cont.)
ASSERT문과 TRIGGER 문을 사용하였음
– ASSERT 문은 구문상의 차이가 있을 뿐 SQL2의 CREATE ASSERTION 문과 유사함
– TRIGGER는 조건과 그 조건이 만족되는 경우에
취할 행동을 명시함 (21장에서 자세하게 설명 )
예) 어떤 부서에 있는 종업원이 그 부서의 관리자보다 봉급이 많다면 그 부서의 관리자를 표시하는 트리거는 다음과 같이 지정된다.
DEFINE TRIGGER SALARY_TRIGGER
ON EMPLOYEE E, EMPLOYEE M, DEPARTMENT D :
E.SALARY>M.SALARY AND E.DNO=D.DNUMBER AND D.MGRSSN=M.SSN
ACTION_PROCEDURE INFORM_MANAGER (D.MGRSSN) ;
• 설명
– 위의 트리거는 트리거 조건이 발생할 때마다 INFORM_
MANAGER를 실행할 수 있도록 지정함
ASSERT문은 주장조건을 위반하는 갱신을 금지시키는 반
주장(Assertion)으로 추가적인 제약조건 명시 (cont.)
MANAGER를 실행할 수 있도록 지정함
– ASSERT문은 주장조건을 위반하는 갱신을 금지시키는 반 면에, TRIGGER문은 갱신을 수행하고 나서 트리거 조건이 발생하면 ACTION_PROCEDURE를 실행한다는 점에서 차이 가 있음
– 트리거는 무결성 제약조건을 구현하기 위해 선언적 접근과
절차적 접근을 결합한 것으로 볼 수 있음; 트리거의 조건은
선언적인 반면에, 이들의 행동은 절차적임
• 권한 기능
– SQL은 데이타베이스 사용자에게 권한을 부여하고 취소하는 기 능을 제공함
– GRANT/REVORK
• 호스트 언어와 결합되어 사용
– SQL은 C, C++, COBOL, JAVA, PASCAL 등과 같은 범용 프로그래 밍 언어 내에서 사용될 수 있음
SQL의 부가적인 기능들
밍 언어 내에서 사용될 수 있음
– Embedded SQL/C, C++, COBOL, JAVA, PASCAL
• 트랜잭션 기능
– SQL은 트랜잭션 제어 명령문을 가짐
• 기타 유용한 명령어
– 상용 DBMS는 SQL 명령 이외에도 물리적 데이터베이스 설계 매 개변수와 릴레이션들을 위한 파일 구조, 그리고 인덱스와 같은 접근경로를 명시하기 위한 명령어의 집합을 가지고 있음
• SQL2에서 데이터 정의어, 제약조건 및 스키마 변경
• SQL에서의 기본질의
– Select/From/Where 절의 사용
• 더 복잡한 SQL 질의들
요 약
– 중첩질의, 집단함수, 집합과 널, 그루핑 연산, Select/From/Where 절의 사용
• SQL에서 삽입, 삭제, 갱신 구문
• SQL 뷰
• 주장으로 추가적인 제약조건 명시