무결성제약조건integrity_constraint

Difference between r1.2 and the current

@@ -1,18 +1,21 @@
'''''see [[키key#s-6]]'''''
 
[[관계데이터모델]]에서 정의하는 기본적인 제약은 키와 관련한 '''[[무결성제약조건integrity_constraint]]'''이다.
[[관계데이터모델]]에서 정의하는 기본적인 제약constraint[[key]]와 관련한 '''무결성제약조건integrity_constraint'''이다.

[[무결성integrity]]은
data에 결함이 없는,
먼저 [[무결성integrity]]은
[[데이터data]]에 결함이 없는,
정확하고 유효하게 유지하는
것이다.

DB의 상태가 변하더라도 '''무결성 제약조건'''은 반드시 지켜져야 한다.

보안과의 비교
보안security: 권한이 없는 사용자로부터 data를 보호하는 것
무결성integrity: 권한이 있는 사용자의 잘못된 요구에 의해 data가 부정확해지는 것을 방지하는 것
보안과 무결성의 비교
[[보안security]]: 권한이 없는 사용자로부터 data를 보호하는 것
[[무결성integrity]]: 권한이 있는 사용자의 잘못된 요구에 의해 data가 부정확해지는 것을 방지하는 것

Sub:
[[개체무결성제약조건entity_integrity_constraint]]
[[참조무결성제약조건referential_integrity_constraint]]
 
= from DB개론 =
[[개체무결성제약조건entity_integrity_constraint]]
{
[[기본키primary_key]]를 구성하는 모든 [[속성attribute]]은 null 값을 가질 수 없다. 가지면 안 된다. 는 규칙.
@@ -34,18 +37,79 @@

외래키는 자신이 참조하는 릴레이션에 [[기본키primary_key]] 값으로 존재하는 값, 즉 참조 가능한 값만 가져야 함.

참조'하는' relation에서 삭제를 하면 여기에 위배되지 않는데,
참조'되는' relation에서 삭제를 하면 문제가 생길 수 있다. [* http://kocw.net/home/search/kemView.do?kemId=1257746 지정희 3. 29m]

[[https://terms.naver.com/entry.naver?docId=3431155&cid=58430&categoryId=58430&expCategoryId=58430 DB개론: 참조 무결성 제약조건]] (링크의 example 참조.)
}

= 황인준 =
''From Slide 22/82: Integrity Constraint Review''
 
도메인제약조건 domain_constraint
모든 [[튜플tuple]] [[값value]]은 [[속성attribute]] [[도메인domain]]에 맞아야.
 
널제약조건 null_constraint
null이 허용되는지 or 안되는지를 specify.
 
키제약조건 key_constraint
모든 tuple은 key attribute를 위해 unique value를 가져야 한다.
 
[[개체무결성제약조건entity_integrity_constraint]]
[[기본키primary_key]] value should not be null.
 
[[참조무결성제약조건referential_integrity_constraint]]
 
= 변시우 =
[[개체무결성제약조건entity_integrity_constraint]]
* [[기본키primary_key]]로 지정한 모든 [[속성attribute]]은 [[널null]] 값을 가질 수 없고 [[릴레이션relation]] 안에서 중복되지 않는 유일한 값을 가져야 한다는 제약 사항.
(i.e. PK는 null을 가질 수 없고 유일하다)
* [[기본키제약조건primary_key_constraint]]
* 개체의 [[유일성uniqueness]]을 선언하는 제약 조건.
* DBMS에게 기본키를 선언함으로써 즉시 적용됨.
 
[[참조무결성제약조건referential_integrity_constraint]]
* [[외래키foreign_key]]로 지정한 속성은 참조하는 릴레이션의 [[기본키primary_key]] 속성 값과 일치하는 값이나 널 값만을 가져야 한다는 제약 사항.
* [[외래키제약조건foreign_key_constraint]]
* [[개체entity]]의 참조 관계를 선언하는 제약 조건.
* DBMS에게 외래키를 선언함으로써 즉시 적용됨.
* 의미적으로 연관된 두 릴레이션 [[튜플tuple]] 사이의 일관성 유지를 위해 사용함.
 
[* http://www.kocw.net/home/cview.do?cid=fc3d162212c224f5 변시우 5-3 7:38]
 
추가적인 제약조건
{
[[도메인무결성제약조건domain_integrity_constant]]
[[튜플tuple]]의 모든 [[속성attribute]] 값이 각 속성의 [[도메인domain]]에 속한 값만을 취해야 한다는 제약 사항.
SQL의 CREATE TABLE 명령 작성 시,
* 각 [[열column]]의 [[타입type]]
* NULL / NOT NULL - [[널null]] 값 허용 여부
* DEFAULT - 기본값
* CHECK - 값 범위 체크 조건
등의 키워드 설정을 통해 DBMS에게 지시함.
 
[[유일성제약조건uniqueness_constraint]]
[[유일성uniqueness]]
모든 키 속성 값이 중복되지 않고 유일해야 한다는 제약 사항.
[[대체키alternate_key]]와 밀접.
키 제약 조건(key_constraint)이라고도 함.
SQL의 CREATE TABLE 명령 작성 시, UNIQUE(유일 조건) 키워드 설정을 통해 DBMS에게 지시.
/// ''QQQ 이건 이름에 무결성이 없는데 위의 세가지와 따로 분류해야 하는지?''
}
----
||개체무결성 ||참조무결성 ||
||개체무결성제약조건 ||참조무결성제약조건 ||
||기본키에 대한 규칙:[[br]]각 relation마다 적용됨 ||외래키에 대한 규칙:[[br]] 연관된 relation들에 적용됨 ||
||
||[[기본키primary_key]]를 구성하는 모든 [[속성attribute]]은 [[널null]]값을 가질 수 없다. ||[[외래키foreign_key]]는 참조할 수 없는 값을 가질 수 없다. ||

----
Ref.
[[https://terms.naver.com/entry.naver?docId=3431153&cid=58430&categoryId=58430&expCategoryId=58430 DB개론: 관계 데이터 모델의 제약]]

'''''see also [[키key#s-6]]''''' <- merge from there
 
----
Up: [[database]]
https://everything2.com/title/Integrity+Constraints
 
Up: [[database]] [[무결성integrity]] [[제약조건constraint]]



관계데이터모델에서 정의하는 기본적인 제약constraint은 키key와 관련한 무결성제약조건integrity_constraint이다.

먼저 무결성integrity
데이터data에 결함이 없는,
정확하고 유효하게 유지하는
것이다.

DB의 상태가 변하더라도 무결성 제약조건은 반드시 지켜져야 한다.

보안과 무결성의 비교
보안security: 권한이 없는 사용자로부터 data를 보호하는 것
무결성integrity: 권한이 있는 사용자의 잘못된 요구에 의해 data가 부정확해지는 것을 방지하는 것

Sub:
개체무결성제약조건entity_integrity_constraint
참조무결성제약조건referential_integrity_constraint

from DB개론

개체무결성제약조건entity_integrity_constraint
{
기본키primary_key를 구성하는 모든 속성attribute은 null 값을 가질 수 없다. 가지면 안 된다. 는 규칙.

관계데이터모델에선, 릴레이션relation에 포함된 tuple들을 유일하게 구별할 수 있도록 각 relation마다 기본키를 정의한다. 그런데 기본키를 구성하는 속성attribute 전체나 일부가 null 값이 되면 tuple의 유일성을 판단할 수 없으므로 기본키의 목적을 상실하게 된다.

이 조건을 만족시키려면,
  • 새 tuple 삽입 연산
  • 기존 tuple의 기본키 속성 값을 변경하는 연산
이 발생할 때, 기본키에 null 값이 포함되면 연산 수행을 거부해야 한다. (DBMS가 자동으로 수행함.)


참조무결성제약조건referential_integrity_constraint
{
외래키foreign_key는 참조할 수 없는 값을 가질 수 없다. 는 규칙.

외래키는 자신이 참조하는 릴레이션에 기본키primary_key 값으로 존재하는 값, 즉 참조 가능한 값만 가져야 함.

참조'하는' relation에서 삭제를 하면 여기에 위배되지 않는데,
참조'되는' relation에서 삭제를 하면 문제가 생길 수 있다. [1]

[https]DB개론: 참조 무결성 제약조건 (링크의 example 참조.)
}

황인준

From Slide 22/82: Integrity Constraint Review

도메인제약조건 domain_constraint
널제약조건 null_constraint
null이 허용되는지 or 안되는지를 specify.

키제약조건 key_constraint
모든 tuple은 key attribute를 위해 unique value를 가져야 한다.

개체무결성제약조건entity_integrity_constraint
기본키primary_key value should not be null.

참조무결성제약조건referential_integrity_constraint

변시우

개체무결성제약조건entity_integrity_constraint
참조무결성제약조건referential_integrity_constraint
[2]

추가적인 제약조건
{
도메인무결성제약조건domain_integrity_constant
튜플tuple의 모든 속성attribute 값이 각 속성의 도메인domain에 속한 값만을 취해야 한다는 제약 사항.
SQL의 CREATE TABLE 명령 작성 시,
등의 키워드 설정을 통해 DBMS에게 지시함.

유일성제약조건uniqueness_constraint
유일성uniqueness
모든 키 속성 값이 중복되지 않고 유일해야 한다는 제약 사항.
대체키alternate_key와 밀접.
키 제약 조건(key_constraint)이라고도 함.
SQL의 CREATE TABLE 명령 작성 시, UNIQUE(유일 조건) 키워드 설정을 통해 DBMS에게 지시.
/// QQQ 이건 이름에 무결성이 없는데 위의 세가지와 따로 분류해야 하는지?
}


개체무결성제약조건 참조무결성제약조건
기본키에 대한 규칙:
각 relation마다 적용됨
외래키에 대한 규칙:
연관된 relation들에 적용됨
기본키primary_key를 구성하는 모든 속성attribute널null값을 가질 수 없다. 외래키foreign_key는 참조할 수 없는 값을 가질 수 없다.



see also 키key#s-6 <- merge from there