논리적 독립성 = 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 |