데이터베이스 2: 릴레이션과 키, 관계 대수
21 Jul 2024 #cs
관계형 데이터베이스와 릴레이션
관계형 데이터베이스 (Relational DataBase)
데이터를 테이블 형태로 저장하고 관리하는 DB 시스템.
- 각 테이블은 데이터 구조와 데이터 저장 방식에 대해 정의된 고정된 스키마를 따름.
- SQL(Structured Query Language)을 사용하여 데이터의 삽입, 수정, 삭제, 조회 등의 작업을 수행.
릴레이션 (Relation)
관계형 데이터베이스에서 사용하는 기본 구조로, 흔히 테이블(table)이라고 함.
- 행과 열로 구성되며, 각 행은 하나의 데이터 항목(tuple, record)을, 각 열은 데이터 속성(attribute, field)을 나타냄.
- 수학적 개념의 관계(relation)에서 유래하며, 집합론에서의 관계와 비슷한 개념.
릴레이션의 구조
- 릴레이션 스키마 (Relation Schema): 릴레이션의 구조.
- 릴레이션 인스턴스 (Relation Instance): 속성의 데이터 타입에 맞게 구체적인 데이터 값을 가진 데이터 개체.
- 튜플 (Tuple): 릴레이션을 구성하는 각각의 행. 속성의 모임.
- 카디널리티 (Cardinality; 기수, 대응수): 튜플의 수.
- 속성 (Attribute): DB를 구성하는 가장 작은 논리적 단위. 개체의 특성을 기술.
- 데이터 항목 또는 데이터 필드에 해당함.
- 디그리 (Degree; 차수): 속성의 수.
- 도메인 (Domain): 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합.
- 시스템이 속성값의 합법 여부를 검사하는 데 사용. (e.g. ‘Gender’의 도메인은 ‘Male’, ‘Female’로 그 외 값은 입력할 수 없다.)
키 (Key)
DB에서 조건에 맞는 튜플을 찾거나 정렬할 때 기준이 되는 속성.
유일성과 최소성
- 유일성 (Unique): 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있는 성질.
- 최소성 (Minimality): 튜플을 식별하는 데 필요한 최소한의 속성으로 구성된 것.
키의 종류
- 후보키 (Candidate Key): 속성 중 튜플을 유일하게 식별하기 위해 사용되는 속성의 집합.
- 기본키의 후보가 되는 속성.
- 조건: 유일성과 최소성을 모두 만족함.
- 기본키 (Primary Key; 주키 (Main Key)): 후보키 중 특별히 선정된 키.
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성.
- 조건: 중복된 값을 가질 수 없음, NULL값을 가질 수 없음.
- 외래키로 참조될 수 있음.
- 대체키 (Alternate Key; 보조키): 기본키를 제외한 나머지 후보키.
- 슈퍼키 (Super Key): 속성의 집합으로 구성된 키.
- 릴레이션 내 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타나지 않음.
- 조건: 유일성은 만족, 최소성은 만족하지 않음.
- 외래키 (Foreign Key): 다른 릴레이션으 기본키를 참조하는 속성 또는 속성의 집합.
- 조건: 참조 릴레이션의 기본키에 없는 값은 외래키가 될 수 없음.
무결성 (Integrity)
DB에 저장된 데이터 값과 현실 세계의 실제 값이 일치하는 정확성.
- 개체 무결성: 기본키를 구성하는 어떤 속성도 NULL이나 중복값을 가질 수 없다는 규정.
- 참조 무결성: 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다는 규정. 외래키의 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 함.
인덱스 (Index)
데이터 레코드(튜플)에 빠르게 접근하기 위해 <키, 포인터> 쌍으로 구성된 데이터 구조.
- 레코드가 저장된 물리적 구조에 접근하는 방법을 제공. 빠른 액세스 가능.
- 기본키 인덱스: 기본키를 위한 인덱스. 대부분의 관계형 DBMS에서는 모든 기본키에 대해 기본키 인덱스를 자동 생성함.
- 트리 기반, 함수 기반, 비트맵, 비트맵 조인 인덱스 등이 있음.
관계 대수와 관계 해석
관계 대수 (Relational Algebra)
관계형 DB에서 원하는 정보와 그것을 어떻게 유도하는지를 기술하는 절차적 언어. 릴레이션 조작을 위한 연산의 집합.
- 릴레이션 처리를 위한 연산자와 연산 규칙을 제공. 피연산자와 연산 결과가 모두 릴레이션.
- 해를 구하기 위한 연산의 순서를 명시.
순수 관계 연산자
- Select: 튜플 중 선택 조건을 만족하는 튜플의 부분집합을 구해 새로운 릴레이션을 만드는 연산.
- 튜플을 구하는 것이므로 ‘수평 연산자’라고도 함.
- 기호: $\sigma$
- Project: 속성 리스트(Attribute list)에 제시된 속성만을 추출해 새로운 릴레이션을 만드는 연산.
- 속성을 추출하는 것이므로 ‘수직 연산자’라고도 함.
- 기호: $\pi$
- Join: 공통 속성을 중심으로 두 릴레이션을 합쳐 새로운 릴레이션을 만드는 연산.
- Cartesian Product(교차곱) → Select 수행과 결과가 같음.
- 기호: $\Join$
- Division: $X\supset Y$인 두 릴레이션 $R(X)$와 $S(Y)$가 있을 때, S의 속성값을 모두 가진 R의 속성에서 S의 속성을 제외한 속성만 반환하는 연산.
- 기호: $\div$
일반 집합 연산자
- Union: 두 릴레이션 내 튜플의 합집함을 구하되, 중복되는 튜플은 제거하는 연산.
- 합집합의 카디널리티는 두 릴레이션의 카디널리티 합보다 작거나 같다.
- 기호: $\cup$
- Intersection: 두 릴레이션 내 튜플의 교집합을 구하는 연산.
- 교집합의 카디널리티는 두 릴레이션의 카디널리티 중 작은 값보다 크지 않다.
- 기호: $\cap$
- Difference: 두 릴레이션 내 튜플의 차집합을 구하는 연산 ($R-S$).
- 차집합의 카디널리티는 $R$의 카디널리티보다 크지 않다.
- 기호: $-$
- Cartesian Product: 두 릴레이션 내 튜플의 순서쌍을 구하는 연산.
- 교차곱의 디그리는 두 릴레이션의 디그리를 더한 것과 같다.
- 교차곱의 카디널리티는 두 릴레이션의 카디널리티를 곱한 것과 같다.
- 기호: $\time$
관계 해석 (Relational Calculus)
관계 데이터의 연산을 표현하는 방법. 관계 데이터 모델을 제안한 E. F. Codd가 수학의 술어 해석(Predicate Caculus)에 기반을 두고 관계 DB를 위해 제안함.
- 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 가지며, 원하는 정보를 정의할 때는 수식을 사용함.
- 튜플 관계 해석과 도메인 관계 해석으로 구분됨.