관계 모델
Table ≒ Relation
관계 모델의 용어를 보면 행은 튜플, 열은 애트리뷰트, 테이블은 릴레이션이라고 불린다. 따라서 관계모델에서 데이터베이스는 릴레이션(테이블)들의 모임으로 표현되고 릴레이션은 투플(행, 레코드)들의 집합으로 표현되고 투플은 애트리뷰트(컬럼, 필드, 혹은 속성)들로 구성된다.
일반적으로 ER 모델링 이후에 관계 모델로 변환을 하는 방식으로 DB구성이 이루어진다.
Relation의 특성
우선 릴레이션은 튜플들의 집합으로 정의되는데 집합에서 원소의 순서가 무의미한 것과 마찬가지로 투플의 순서 역시 의미가 없다.
애트리뷰트 값들의 순서도 중요하지 않다. 이를 보다 일반적인 튜플의 정의라고 볼 수 있다.
애트리뷰트의 원자성이라는 특징도 있다. 투플 내의 각 값은 더 이상 나눌 수 없는 원자값(atomic value)들로 ER 모델에서의 다치 애트리뷰트나 복합 애트리뷰트는 관계모델에서는 허용되지 않는다. 다치 애트리뷰트나 복합 애트리뷰트는 별도의 릴레이션으로 표현되어야 한다. 값을 알 수 없거나 해당되는 값이 없을 때에는 null 이라는 특수 값을 사용한다. null도 atomic으로 취급한다.
이때 null은 두가지의 의미가 있다. 첫번째는 ‘적용할 수 없음(inapplicable)’이라는 의미로 예를들어 Apartment_number는 단독 주택에 적용되지 않음이나 College_degree는 대학 미 졸업자에게는 적용되지 않음과 같은 상황이다. 다음은 ‘알려지지 않음(unknown)’의 의미로 예를 들어 John Smith(는 핸드폰이 있으나) 핸드폰 번호는 알지 못해서 null로 처리가 되는 경우이다.
Constraint
제약조건(constraint)는 모든 릴레이션 인스턴스들이 만족해야 하는 조건이다.
스키마 기반 제약조건: 데이터 모델 스키마에서 DDL을 통해 직접 표현 가능한 조건
(1) 도메인 제약 조건(domain constraints)
각 애트리뷰트 A의 값은 반드시 A의 도메인 dom(A)에 속하는 원자값이어야 한다. 예를들어 VARCHAR형으로 선언된 Name이라는 변수에는 정수형 Integer 값이 올 수 없는 경우를 의미한다.
(2) 키 제약조건(key constraints)
릴레이션은 투플의 집합으로 정의되므로, 모든 원소는 중복되어서는 안된다. 어떤 두 투플도 릴레이션의 모든 애트리뷰트에 대해 같은 값들의 조합을 가질 수 없다.
ㅇ키(key)
- 투플을 유일하게 식별할 수 있는 애트리뷰트 집합
ㅇ후보 키(candidate key)
- 릴레이션 R(A1 , A2 , ..., An )에 대한 애트리뷰트 집합 K = { Ai , Aj , ..., Ak }로서 아래 성질을만족하면 후보키
① 유일성(uniqueness) : 각 투플은 유일해야 함
② 최소성(minimality) : K는 투플을 유일하게 식별하기 위해 필요한 애트리뷰트로만 구성
ㅇ슈퍼 키 (super key)
- 유일성(uniqueness)은 만족하지만 최소성(minimality)이 만족되는 않는 애트리뷰트의 집합
- 키(key)를 포함하는 모든 속성의 집합
ㅇ기본 키 (primary key)
- 후보 키(candidate key) 중에서 데이타베이스 설계자가 지정한 하나의 키
- 각 투플에 대한 기본 키 값은 항상 유효(no null value)
ㅇ대체 키 (alternate key) - 후보 키 중에 기본 키를 제외한 나머지 후보 키
슈퍼키(superkey), 후보키(candidate key), 기본키(PK, primary key)
- 튜플을 식별할 수 있으면 모두 슈퍼키가 될 수 있음
(3) 널에 대한 제약조건(constraints on nulls)
애트리뷰트 값으로 널을 허용하지 않는 경우, 애트리뷰트는 널을 가질 수 없다. 예를들어 DEPARTMENT 테이블의 Name 필드는 NOT NULL로 제한한다.
(4) 엔티티 무결성 제약조건(entity integrity constraints)
- 삽입: 기본키 값이 같으면 삽입이 금지됨
- 수정: 기본키 값이 같거나 NULL로도 수정이 금지됨
- 삭제: 특별한 확인이 필요하지 않으며 즉시 수행함
(5) 참조 무결성 제약조건(referential integrity constraints)
한 릴레이션에 있는 투플이 다른 릴레이션에 있는 투플을 참조하려면 반드시 참조되는 투플이그릴레이션 내에 존재해야 한다. 하나의 릴레이션 R에서 속성 F의 값으로 다른 릴레이션 S의 기본키 P값을 참조하는 경우에 R과S는 참조 무결성 제약 조건을 가진다고 한다. (F는 null을 가질 수 있음) t1 [F] = t2 [P]이면 R의 투플 t1이 S의 투플 t2를 참조(reference)한다고 하며, F를 외래키(foreign key)라고 부른다. -> R을 참조한(referencing) 릴레이션, S를 참조된(referenced) 릴레이션이라고 부른다.
다른 제약조건과 달리 참조 무결성은 두 릴레이션에 대한 제약조건이다.
- 부모릴레이션에 삽입 => 정상적으로 진행됨
- 자식릴레이션에 삽입 => 참조받는 테이블에 외래키 값이 없으므 로 삽입 금지
- 부모릴레이션의 삭제 => 참조하는 테이블을 같이 삭제할 수 있어 서 금지하거나 추가작업이 필요
- 자식릴레이션의 삭제 => 바로 삭제 가능함
- 수정 => 삭제와 삽입의 연속 수행으로 각 삭제와 삽입의 제약을 고려하여 진행됨
'Quality control (Univ. Study) > Database Design' 카테고리의 다른 글
SQL 실습(1) (1) | 2023.10.20 |
---|---|
SQL기초 (1) | 2023.10.20 |
MySQL Express upgrade (1) | 2023.10.05 |
Univ. DB upgrade (0) | 2023.10.05 |
EER (0) | 2023.09.26 |