비전공자 공부일기/:: DB - SQL

[한기교] SQL 활용 필기(2) - 데이터모델, 제약조건

와니_ 2020. 5. 2. 17:12

< 데이터 모델 >

모델 D = <S, O, C>

 

Structure 구조 : 데이터의 구조

- 정적 성질, 개체 타입과 이들 간의 관계를 명세함

 

Operation 연산 : 데이터의 성질

- 개체 인스턴스를 처리하는 작업에 대한 명세

- 데이터 조작 기법

 

Constraint 제약조건 : 데이터의 논리적 제약

- 구조로부터 파생, 의미적 제약

- 데이터 조작의 한계를 표현한 규정

 

ㅁ 데이터 모델의 예

- '정수' 데이터의 모델을 살펴보면,

구조: ..., -2, -1, 0, 1, 2, ...

연산: 사칙연산(+, -, x, /)

제약조건: 정수의 세계로 한정함

- 정수/정수 --> 정의할 수 없는 경우가 있음

 

< 관계형 데이터 모델의 구조와 연산 >

ㅁ 관계형 데이터 모델을 사용하는 이유

- 모델의 구조가 단순함

- 집합이론(Set Theory)이라는 수학적 이론에 기반하기 때문에 모델이 강건(Sound)함

- SQL이라는 간단한 비절차적 언어로 접근하므로 사용하기 쉬움

 

ㅁ 관계형 데이터 모델

- 구조: Relation(또는 Table)

- 연산: 관계대수(Relational Algebra)

- 제약조건: 무결성 제약 조건

 

ㅁ 관계형 데이터 모델의 구조

- 릴레이션

- 2차원 테이블 형태

- 테이블의 행(Row) => 튜플

- 테이블의 열(Column) => 속성 (Attribute)

--- 도메인(Domain): 속성이 가질 수 있는 값의 범위

 

* 릴레이션은 튜플들의 집합이다! (기억하기)

 

ㅁ 릴레이션의 특징

1) 튜플의 유일성

- 릴레이션은 튜플의 집합임

- 집합은 중복을 허용하지 않음

 

2) 튜플의 무순서성

- 릴레이션은 튜플의 집합임

- 집합에서 원소들 간의 순서는 없음

 

3) 속성의 무순서성

- 릴레이션 스키마는 속성들의 집합임 --> 순서가 없다!

 

4) 속성의 원자성 (Atomicity)

- 속성의 값은 원자값임

- 즉, 논리적으로 더 분해할 수 없음

 

ㅁ 관계형 데이터 모델의 연산

- SQL: 사용자 위주

- 관계 대수(Relational Algebra): 시스템 관점

--- 수학적인 연산자들을 이용해 컴퓨터가 질의문 해석

 

ㅁ 일반 집합 연산자

- 합집합(UNION, ∪)

- 교집합(INTERSECT, ∩)

- 차집합(DIFFERENCE, -)

- 카티션 프로덕트(CARTESIAN PRODUCT, ×)

 

ㅁ 합병호환성

: 합집합, 교집합, 차집합 연산의 피연산자(Relation)들이 지켜야 할 제약조건

--- 1) 차수(Degree: 속성의 수)가 같아야 함

--- 2) 대응되는 속성(Attribute) 쌍 별로 타입(또는 도메인)이 같아야 함

--- 3) 대응되는 속성(Attribute) 쌍 별로 의미(Semantic)가 같아야 함 >> 사람의 판단 영역

ㅁ 순수 관계 연산자

: 릴레이션이 2차원 구조이기 때문에 유도되는 연산자

- 셀렉트(SELECT, σ)

- 프로젝트(PROJECT, Π)

- 조인(JOIN, ▷◁)

- 디비전(DIVISION, ÷)

 

-이게 뭔소린고

 

 

 

< 관계형 데이터 모델의 제약조건 >

ㅁ 키(Key)

: 하나의 테이블 내에서 각 튜플의 유일하게 식별할 수 있는 속성들의 집합

 

ㅁ 실생활의 키 --> 오직 하나!

- 하나의 자물쇠를 열 수 있는 열쇠(키)는 오직 하나임

- 생활의 편리성을 위하여 키를 복제하여 쓰지만, 논리적으로는 하나임

 

ㅁ 후보키(Candidate Key)

: 한 릴레이션 R(A1, ..., An)에 대한 속성의 집합 K = {Ai, ..., Aj}으로 다음과 같은 성질을 만족함

 

- 유일성(Uniqueness) : 서로 다른 두 튜플의 속성집합 K의 값은 같지 않음

- 최소성(Minimality) : K는 서로 다른 두 튜플을 식별하기 위한 최소한의 속성들로만 이루어져 있음

 

- 릴레이션의 특징 : 튜플의 유일성

- 후보키 : 튜플의 유일성을 유지시키는 최소 속성 집합

 

ㅁ 슈퍼키(Super Key)

- 유일성을 만족하는 속성 집합

- 최소성을 만족하지 않아도 됨

- 일반적으로 후보키는 수퍼키의 부분 집합임 <--> 수퍼키는 후보키를 포함함

 

ㅁ 기본키(Primary Key)

- 하나의 릴레이션에는 후보키가 여러개 있을 수 있음

- 여러 개의 후보키 중 DBA가 지정한 하나의 키임

 

ㅁ 대체키(Alternative Key)

- 후보키 중 기본키를 제외한 나머지 후보키

 

 

ㅁ 외래키(Foreign Key)

- 한 릴레이션 R1의 튜플과 다른 릴레이션 R2의 하나의 튜플과의 연관 관계를 표시하기 위하여 사용

- R1의 속성집합 FK의 도메인이 R2의 기본키일 때, FK를 R1의 외래키라 함

- R1을 참조 릴레이션, R2를 피참조 릴레이션이라고 함

(R1과 R2가 다른 릴레이션일 필요는 없음)

 

 

< 무결성 제약조건 >

ㅁ 개체 무결성

: 서로 다른 두 튜플은 같을 수 없음

: 기본키 값은 언제나 어느때나 NULL일 수 없다!!!!!

 

ㅁ 참조 무결성

- 외래키 값은 피참조 릴레이션의 기본키 값 or NULL

- but, 제약조건을 추가로 지정하여 NULL을 가질 수 없도록 제약 가능

 

ㅁ 도메인 무결성

- 속성 값은 해당 속성 도메인에 속한 값들 중 하나이어야 함

- DBMS는 데이터베이스의 상태 변화(삽입, 갱신, 삭제)에도 항상 무결성 제약조건을 검사하고 유지시킴