Difference between r1.1 and the current
@@ -1,4 +1,14 @@
[[무결성제약조건integrity_constraint]]
Sub: // 이거 tree not sure, chk.
[[무결성제약조건integrity_constraint]]
[[개체무결성제약조건entity_integrity_constraint]]
[[참조무결성제약조건referential_integrity_constraint]]
[[도메인무결성제약조건domain_integrity_constraint]]
[[키제약조건key_constraint]]
[[유일성제약조건uniqueness_constraint]]
'''제약조건'''이 저장되는 곳은 [[시스템카탈로그system_catalog]]. // or [[시스템카탈로그,system_catalog]]?
<<tableofcontents>>
= 제약조건에 해당하는 SQL 키워드 =
||제약조건 ||SQL 명령어 키워드 ||rel. ||
@@ -7,3 +17,60 @@
||[[도메인무결성제약조건domain_integrity_constraint]] ||CHECK, DEFAULT, NULL/NOT NULL, 열 유형([[타입type]]) ||[[도메인domain]] ||
||[[유일성제약조건uniqueness_constraint]] ||UNIQUE ||[[유일성uniqueness]] ||
[* http://www.kocw.net/home/cview.do?cid=fc3d162212c224f5 변시우 5-3 20:10]
||[[유일성제약조건uniqueness_constraint]] ||UNIQUE ||[[유일성uniqueness]] ||
[* http://www.kocw.net/home/cview.do?cid=fc3d162212c224f5 변시우 5-3 20:10]
= Assertion으로 constraint를 지정하기 =
SQL2에서 employee의 봉급이 manager의 봉급보다 높지 않게 하기 위한 assertion[* KU황인준 2022-03-30 slides 중에서]
{{{
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]] A,,i,,의 값은 atomic(not divisible into components)하고 [[도메인domain]] dom(A,,i,,)에서 온다.
key_constraint
SK가 R의 superkey이면, r(R)의 서로 다른 두 tuple t,,1,,과 t,,2,,에 대해, t,,1,,[SK]≠t,,2,,[SK]
ex. 학생(학번, 이름, 전공) 이면
(학번, 전공)은 superkey가 될 수 있다. 하지만 minimal하지는 않다. 즉 minimal superkey가 아니다. 학번만으로 서로 다른 게 보장이 되므로... - chk
mklink : [[수퍼키super_key]] [[minimal_superkey]]...
[* KU황인준 2022-04-04 19m]
= relational constraints (2) =
[[후보키candidate_key]] : [[릴레이션스키마relation_schema]]의 모든 가능한 [[키key]].
[[기본키primary_key]] : 후보키 중 하나. [[튜플tuple]]을 식별하기 위해 쓰임.
[[null_constraint]] : [[널null]] 값이 허용되는지 아닌지 specify.
대상은 [[속성attribute]]. NOT NULL 제약조건을 가지면 non-null value를 가져야 함.
[* KU황인준 2022-04-04 25m]
= Participation Constraint[* KU황인준 2022-04-20 p36] =
participation_constraint
번역은? 참여제약조건?
total_participation (existence_dependency):
entities의 total set 안의 모든 [[개체entity]]가, 한 entity에 relate되어야 함... (? rechk)
ex. EMP - WORKS_FOR - DEPT
partial_participation
ex. EMP - MANAGES - DEPT
그림으로 보면
https://i.imgur.com/J6vUKZwl.png
== ER diagram에서, partial/total participation 기호 ==
partial participation : 마름모와 직사각형을 연결하는 선이, 단일 선으로.
total participation : 마름모와 직사각형을 연결하는 선이, 이중 선으로.
----
[[database]]
Sub: // 이거 tree not sure, chk.
무결성제약조건integrity_constraint
유일성제약조건uniqueness_constraint
제약조건이 저장되는 곳은 시스템카탈로그system_catalog. // or 시스템카탈로그,system_catalog?개체무결성제약조건entity_integrity_constraint
참조무결성제약조건referential_integrity_constraint
도메인무결성제약조건domain_integrity_constraint
키제약조건key_constraint참조무결성제약조건referential_integrity_constraint
도메인무결성제약조건domain_integrity_constraint
유일성제약조건uniqueness_constraint
1. 제약조건에 해당하는 SQL 키워드 ¶
제약조건 | SQL 명령어 키워드 | rel. |
개체무결성제약조건entity_integrity_constraint | PRIMARY KEY | 기본키primary_key |
참조무결성제약조건referential_integrity_constraint | FOREIGN KEY | 외래키foreign_key |
도메인무결성제약조건domain_integrity_constraint | CHECK, DEFAULT, NULL/NOT NULL, 열 유형(타입type) | 도메인domain |
유일성제약조건uniqueness_constraint | UNIQUE | 유일성uniqueness |
2. 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));
3. relational constraints (1) ¶
domain_constraint
key_constraint
key_constraint
SK가 R의 superkey이면, r(R)의 서로 다른 두 tuple t1과 t2에 대해, t1[SK]≠t2[SK]
ex. 학생(학번, 이름, 전공) 이면
[3]ex. 학생(학번, 이름, 전공) 이면
(학번, 전공)은 superkey가 될 수 있다. 하지만 minimal하지는 않다. 즉 minimal superkey가 아니다. 학번만으로 서로 다른 게 보장이 되므로... - chk
mklink : 수퍼키super_key minimal_superkey...4. relational constraints (2) ¶
null_constraint : 널null 값이 허용되는지 아닌지 specify.
대상은 속성attribute. NOT NULL 제약조건을 가지면 non-null value를 가져야 함.
대상은 속성attribute. NOT NULL 제약조건을 가지면 non-null value를 가져야 함.
5. Participation Constraint[5] ¶
participation_constraint
번역은? 참여제약조건?
번역은? 참여제약조건?
total_participation (existence_dependency):
partial_participation
partial_participation
ex. EMP - MANAGES - DEPT
그림으로 보면