제약조건constraint

제약조건constraint (rev. 1.6)


Assertion으로 constraint를 지정하기

SQL2에서 employee의 봉급이 manager의 봉급보다 높지 않게 하기 위한 assertion[2]
CREATE ASSERTION SALARY_CONSTRAINT
 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));

relational constraints (1)

domain_constraint
속성attribute Ai의 값은 atomic(not divisible into components)하고 도메인domain dom(Ai)에서 온다.

key_constraint
SK가 R의 superkey이면, r(R)의 서로 다른 두 tuple t1과 t2에 대해, t1[SK]≠t2[SK]
ex. 학생(학번, 이름, 전공) 이면
(학번, 전공)은 superkey가 될 수 있다. 하지만 minimal하지는 않다. 즉 minimal superkey가 아니다. 학번만으로 서로 다른 게 보장이 되므로... - chk
mklink : 수퍼키super_key minimal_superkey...

[3]

relational constraints (2)



기본키primary_key : 후보키 중 하나. 튜플tuple을 식별하기 위해 쓰임.

null_constraint : 널null 값이 허용되는지 아닌지 specify.
대상은 속성attribute. NOT NULL 제약조건을 가지면 non-null value를 가져야 함.



----