Relational data structures and constraints, Database system, 6주차
관계 데이터 구조, 관계 데이터 제약
Study date: 04/Apr/2024
Goals:
관계데이터 구조(relation data structures)를 이해하고 관계모델(relational Model)을 정의(define)할 수 있다.
관계모델에서 적용되는 제약조건(constraints)을 이해하고 릴레이션 설계(relation lay out)에 적용할 수 있다.
1) 관계데이터구조
관계모델은 데이터를 논리적으로 설계하고 관계를 정의하는데 중점을 둔다. 한편, 관계데이터 구조는 이러한 논리적 설계를 실제로 구현하여 데이터를 효율적으로 저장하는 방법을 다룬다.
2) 관계모델
(관계형) 데이터베이스를 릴레이션(테이블)의 집합이라고 한다.
관계모델 용어 설명
릴레이션(relation): 행과 열로 구성된 테이블
속성(Attribute): 세로 값으로 열(Column)이라고도 한다.
튜플(Tuple): 가로 값으로 행(Row)이라고도 한다.
차수(degree): 릴레이션에서의 속성의 수
카디날리티(cardinality): 릴레이션을 구성하는 튜플의 수
도메인(domain): 속성이 가질 수 있는 값의 범위 또는 집합
스키마: 릴레이션이 어떻게 구성되는지, 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의(첫 행의 헤더)
릴레이션의 특징
집합이론(set theory)에 기초한다.
한 릴레이션에 포함된 듀플들은 모두 상이하다.(서로가 다르다)
두 개의 똑같은 듀플은 한 릴레이션에 포함될 수 없다.
하나의 집합에는 똑같은 원소가 중복해서 포함될 수 없다.
모든 애트리뷰트 값은 원자값(atomic value)이다.
듀플 내의 각 값은 하나(원자값)이다.
개념적 모델의 복합값 속성과 다중값 속성은 허용되지 않는다.
한 릴레이션을 구성하는 튜플과 애트리뷰트 사이에는 순서가 없다(no order).
릴레이션 스키마 = 애트리뷰트 들의 집합(Relation schema = Set of attributes)
수학적으로 집합의 원소들 사이에는 순서가 없으므로, 릴레이션 스키마에서도 애트리뷰트 들은 특정 순서를 갖지 않는다.
카티션 프로덕트(Cartesian Product)

- 연산에 참여하는 두 집합의 모든 원소들을 상대방의 원소와 연결시킨 후, 각 집합의 원소의 쌍을 원소로 하는 새로운 집합을 생성시키는 연산
3) 관계 데이터 제약(relational data constraints)
키 제약 조건(key constraint)
릴레이션에서 튜플을 다른 튜플과 구별할 수 있는 속성
- 애트리뷰트 집합이 유일성, 최소성을 만족한다면 이를 후보키(candidate key)라고 한다
Q: 키 제약 조건 문제

학생 - 학번/휴대전화: 유일성 충족, 이름/성별/학과: 유일성 불충족
과목 - 과목번호/과목명: 유일성 충족, 학점/이수구분/담당교수: 유일성 불충족
등록 - 학번/과목번호/성적: 유일성 불충족 하지만 (학번, 과목번호) 이렇게는 가능, "복합키(complex key)"라고 한다.
키의 종류(type of key)
후보키(candidate key)
학생 릴레이션의 후보키: 학번,휴대전화
과목 릴레이션의 후보키: 과목번호/과목명
등록 릴레이션의 후보키: 학번/과목번호
기본키(primary key): 후보 키 중 하나, 데이터베이스 설계자가 선정한다. 예를들어, 학생 테이블에서는 각 학생을 고유하게 식별하는 학번이 기본 키일 수 있다.
대체키(alternate key): 후보키 중 기본키를 제외한 나머지 키
슈퍼키(super key): 후보키를 포함하는 모든 애트리뷰트의 집합
복합키(complex key): 두 개 이상의 애트리뷰트가 합쳐져 후보키의 역항를 하는 경우
중요 외래키(foreign key): 한 테이블의 기본 키(primary key)가 다른 테이블의 특정 열과 연결된 열이다. 이를 통해 테이블 간의 관계를 설정한다.
학번 애트리뷰트: 등록 릴레이션의 기본키 = 학생 릴레이션의 기본키
과목번호 애트리뷰트: 과목 릴레이션 기본키 = 등록 릴레이션 외래키
같은 릴레이션 끼리도 외래키 설정이 가능하다.
무결성 제약조건(Integrity Constraint)
중요 개체 무결성(entity integrity) 제약조건
* 특정 속성의 집합이 항상 값을 가져야 한다는 규칙입니다. 이는 테이블의 각 듀플이 고유한 값을 가지도록 보장하는 데 사용된다. 간단하게 설명하자면, 개체 무결성은 다음과 같은 규칙을 강제화한다
1. 기본 키 값의 존재: 개체 무결성은 기본 키(primary key) 열의 모든 값이 NULL이 아니어야 한다는 규칙이다. 각 행은 기본 키 값으로 고유하게 식별되어야 한다.
2. 중복된 값의 방지: 개체 무결성은 기본 키(primary key)가 중복되지 않아야 한다는 규칙이다. 즉, 테이블 내에서 기본 키 값은 서로 다른 값이어야 한다.
간단히 말해, 개체 무결성은 각 행이 고유하게 식별되고 중복이 없도록 보장하여 데이터의 일관성을 유지하는 데 사용된다. 이는 데이터베이스에 데이터를 입력하거나 수정할 때 검사되며, 데이터베이스 시스템이 적절한 값을 가지도록 한다.
참조 무결성(referential integrity) 제약조건:
테이블 간의 관계를 유지하고 데이터의 일관성을 보장하는 데 사용되는 규칙입니다. 이를 이해하기 위해 예시를 통해 설명해보겠습니다.
가정해 봅시다. 우리에게는 "주문(Order)"과 "고객(Customer)"이라는 두 개의 테이블이 있습니다. 각 테이블은 다음과 같이 생겼습니다:
학생(student) 테이블:
학번 외래키
이름
성별
등록(registration) 테이블:
학번 기본키
과목번호
성적
무결성 보장: 참조 무결성 제약조건은 "학번" 테이블의 "학생" 열이 "등록" 테이블의 기본 키를 참조하는지 확인한다. 즉, "학생" 테이블에 있는 모든 "학번" 값은 "등록" 테이블에 있는 기존의 "학번"과 일치해야 한다.
무결성 유지: 참조 무결성 제약조건은 "학생" 테이블에서 특정 "학번" 값을 변경할 때 해당 값이 "등록" 테이블에 있는지 검사한다. 만약 해당 값이 "등록" 테이블에 없다면 이러한 변경은 거부될 것이다.
결론적으로, 참조 무결성 제약조건은 관련된 테이블 간의 관계를 유지하고 데이터의 일관성을 보장한다. 이를 통해 데이터베이스 시스템이 적절한 값을 갖도록 한다. NULL값을 가질 수 있다.
도메인 무결성(domain integrity) 제약조건:
해당 애트리뷰트의 값이 그 애트리뷰트가 정의한 도매인 내에서 속한 값이어야 함
데이터의 변경이 발생할 때 마다 DBMS에 의해서 체크됨

추가 내용
데이터 모델링 이후에 관계데이터 구조 작업이 진행된다. 데이터 모델링은 일반적으로 데이터베이스 설계 과정의 초기 단계 중 하나이다.
원자값(Atomic value)이란? 더 이상 분해되거나 나눌 수 없는 가장 작은 단위의 데이터 값을 의미한다. 데이터베이스에서 원자값의 중요성은 데이터의 일관성과 무결성을 유지하는 데 있다. 원자값은 더 이상 분해되지 않으므로 데이터의 일부분을 수정하거나 변경할 때 다른 부분에 영향을 주지 않는다. 이는 데이터베이스의 원자성(ACID 속성 중 하나)을 보장하는 데 중요하다. 따라서 데이터베이스 설계 및 관리에서 원자값을 사용하는 것은 데이터의 일관성과 무결성을 유지하기 위한 핵심 원칙 중 하나이다.
개념적 모델에서의 복합값 속성(Composite Attribute)이란? 둘 이상의 하위 속성으로 구성된 속성을 의미한다. 이는 속성이 하나 이상의 서브 속성(하위 속성)으로 구성되어 있음을 나타내는데 예를 들어, '주소'라는 속성은 '도시', '도', '거리'와 같은 하위 속성으로 구성될 수 있다.
개념적 모델에서의 다중값 속성(Multivalued Attribute)이란? 하나의 엔터티에 여러 개의 값을 가질 수 있는 속성을 의미한다. 이는 속성이 여러 개의 값을 가질 수 있음을 나타내는데, 예를 들어 '전화번호'라는 속성은 한 명의 고객이 여러 개의 전화번호를 가질 수 있으므로 다중값 속성으로 간주 될 수 있다.
유일성(uniqueness)이란?: 키로 표현되는 듀플은 모두 다르고 유일하다.
최소성(minimality)이란?: 꼭 필요한 애트리뷰트로만 구성된다
무결성(Integrity)이란?: 데이터의 정확성, 일관성, 유효성을 보장하는 것을 의미한다. 따라서 데이터베이스에서의 "무결성(Integrity)"은 데이터의 높은 품질과 신뢰성을 유지하기 위해 데이터의 정확성과 일관성을 유지하는 것을 의미한다.


