CS/DB

[DB] 무결성 제약 조건

goliot 2023. 9. 5. 14:45
반응형

논리적 독립성 = conceptual schema가 바뀌어도 external schema에 영향을 주지 않음

-> internal schema는 바뀌어도 되고 안바뀌어도 됨 -> 독립성과 관계 없음

 

즉, 논리적 데이터 독립성 = ES - CS간 독립성

물리적 데이터 독립성 = CS - IS간 독립성 -> IS가 아무리 바뀌어도 CS, ES에 영향 없음(CS, ES의 변화는 IS변화와 상관 없음.)

 

위에서 아래로의 영향은 받아도되고 안받아도되고(ES - CS - IS 순서로 내려감)

 

IS(DB 물리적 구조) -물리적 구조 사상-> CS(DB 논리적 구조) -논리적 구조 사상-> ES(프로그램 데이터 구조)

 

#진도 시작

* {a, b, c}와 {b, a, c} -> 집합이라면 둘은 같은것, 

* 행 = tuple / columns, 열 = attribute / rows

* relation = 튜플들의 집합 즉, 1행, 2행이 순서가 바뀐다고 해서 다른 집합이 되지 않음

    > 집합이므로 같은 원소가 두 개 이상 있을 수 없음

* identifier -> 해당 테이블에서 동일한 값을 가진 다른 튜플이 있을 수 없음(ex. 주민등록번호)

* Key의 조건(key constraints): Uniquness, minimality

 

#Entity integrity(개체 무결성 제약 조건)

- 개체가 결함이 없는 성질을 지키기 위한 것

- Primary key에 관련된 제약임(기본 키를 위한 제약)

    > 기본 키를 식별해야 하므로 Null값을 절대 가질 수 없음

- 참조 무결성 제약 조건(referential constraints)

    > 참조시에 해당 값이 존재해야 함

 

#Foreign Key

- 포인터 변수같은 개념, 데이터 무결성 유지, 관계 설정

1. 참조 무결성

2. 외래 키 관계

3. 데이터 무결성 유지

4. 관계 정의

*Supper_ssn이 Ssn을 참조하고 있음 -> Super도 FK, Ssn은 PK

*무언가를 참조 하면 FK, 참조 당하면 PK

*사실상 FK는 키가 아니라 포인터

*FK = Referential integrity constraints -> relationship 정의하는데 중요한 개념

*PK = Entity integrity constraints

 

#Update operations and dealing with constraint violations

- 결함이 생길 수도 있는 경우

1. INSERT a tuple

2. DELETE a tuple

3. MODIFY(or UPDATE) a tuple

*MODIFY = 데이터베이스 구조 변경, UPDATE = 데이터베이스에서 저장된 데이터 값을 변경

- 결함시 액션

1. 거부

2. 수행은 하지만 위반을 유저에게 알림

3. 추가적인 작업을 수행(CASCADE - 수정사항 따라가기, SET NULL - 널로 설정 option)

 = trigger additional updates -> 잘못하면 의도치 않은 데이터까지 모두 지워질 수 있어서 주의해야함

4. 사용자가 지정한 에러 수정 루틴 수행

반응형

'CS > DB' 카테고리의 다른 글

[DB] WITH, CASE, RECURSIVE, JOIN vs NESTED  (0) 2023.09.26
[DB] 기본 Query  (0) 2023.09.12
[DB] DB의 특징  (0) 2023.08.29