데이터베이스 기초 - 관계형 모델
데이터베이스에 대해 공부한 내용을 이해하고 정리한 글입니다. 첫 공부이므로 기초적인 내용을 다루며 추후 자세한 정보로 업데이트를 예정하고 있습니다.
릴레이션
데이터베이스에서는 표를 릴레이션이라 부른다.
릴레이션의 구성
- 스키마 : 열에 대한 의미를 담고 있는 공간, 표머리
- 레코드/투플 : 행(값)
- 컬럼/속성/필드 : 열
- 컬럼값 : 특정 행과 열에 해당하는 값, 데이터란 값에 메타데이터가 2개 붙어 있는 것이므로, 릴레이션은 DB 데이터를 표현하기에 이상적인 구조
- 인스턴스 : 특정 시점에서의 레코드가 들어가있는 상태, 모드 레코드들
릴레이션의 특징
- 레코드의 유일성 : 중복된 레코드의 존재가 불가능
- 레코드의 무순서성 : 레코드의 순서는 의미가 없음
- 컬럼의 무순서성 : 컬럼은 순서가 없고, 이름과 값의 쌍
- 컬럼의 원자성 : 모든 값들은 나눌 수 없는, 단 하나의 의미
키의 종류 및 속성
- 키의 속성 : 유일성(Uniqueness), 최소성(모든 군더더기를 제거, Irreducibility)
- 키의 종류
- 슈퍼키(super key) : 유일성 만족
- 후보키(candidate key) : 유일성, 최소성 만족
- 기본키(PK:primary key) : 레코드의 구분을 위해 선택된 후보키
- 외래키(FK:foreign key) : 참조된 다른 릴레이션의 기본키
관계형 모델의 제약조건
- 영역 제약조건 : 컬럼에 정의된 영역(domain)에 속한 값으로만 컬럼값이 결정
- 키 제약조건 : 키는 레코드를 고유하게 구별하는 값으로 구성
- 개체 무결성 제약조건 : 어떠한 기본 값도 널(null:모른다는 의미)이 될 수 없음
- 참조 무결성 제약조건 : 반드시 존재하는 레코드의 기본키만 참조 가능
널(NULL)의 개념
모른다, ‘없음’ 또는 0이 아닌 미지의 값에 대한 표현, 입력된 적이 없는 값을 의미
ER다이어그램의 변환
-
일대일(1:1) 관계에서는 양쪽 모두 외래키로서 참조가 가능. 선택적인 부분이지만, 레코드의 갯수가 적은 쪽으로 가게 하는 것을 권장
-
약한 개체집합에 대해서는 참조 되는 기본키가 그 테이블의 기본키가 된다.
-
일대일(1:1)과 일대다(1:N) 및 다대일(N:1)관계에서는 새로운 릴레이션이 만들어지지 않음
-
다대다(N:N)관계집합에 대해서만 해당 관계 집합을 릴레이션화
-
다대다 관계에서는 관계 집합이 하나의 릴레이션으로 만들어짐
-
만들어지는 릴레이션은 각각의 개체 집합으로 만들어지는 양쪽 릴레이션의 기본키가 참조되어서 기본키이자 외래키로 사용됨
-
‘관계집합의 속성’은 외래키가 위치한 곳을 따라감
관계형 모델로 변환 방법
- 개체 집합 : 개체 집합은 릴레이션으로 변환
- 약한 개체 집합 : 강한 개체 집합의 키 속성을 약한 개체 집합의 릴레이션에 포함
- 일대일 관계 : 두 릴레이션 중에서 한 릴레이션의 기본키를 다른 릴레이션에서 외래키로 참조
- 일대다 혹은 다대일 관계 : ‘일’쪽의 기본키를 ‘다’쪽 릴레이 션에서 외래키로 참조
- 다대다 관계 : 관계 릴레이션을 생성하고, 두 릴레이션의 기본키를 각각 참조하는 외래키를 복합키 형태의 컬럼으 로 구성
- 다중값 속성 : 릴레이션의 기본키를 참조하는 외래키와 다중 값 속성으로 별도의 릴레이션으로 구성
- 관계 집합의 속성 : 외래키가 위치한 릴레이션의 컬럼으로 삽입
관계 연산
- 의미 : 관계형 모델을 기반으로 구성된 릴레이션을 사용하여 새로운 릴레이션을 생성하는 표현
- 관계 대수(relational algebra) : 관계 연산을 정의하는 방법
- 관계 대수 연산자는 새로운 임시 릴레이션을 생성, 주어진 릴레이션에서 필요한 릴레이션을 만드는 연산자(∪, ∩, -, σ, π, x, ⋈, ÷, 집계함수 등)로 구성
셀렉트 연산
σ 조건(R)
- 주어진 릴레이션에서 조건을 만족하는 레코드를 갖는 릴레이션을 생성
-
조건 : aΘb 또는 aΘv a, b 속성 이름 v 상수값 Θ 비교자 {=, ≠, <, >, ≤, ≥} R 릴레이션 - 조건의 결합: ∧(and), ∨(or)
- 예시 : σ 소속학과=‘컴퓨터과학과’(교수)
프로젝트 연산
π<컬럼리스트>(R)
- <컬럼리스트>: A1, A2, …, An와 같이 R에 존재하는 컬럼을 ,(콤마)로 분리하여 기술
- 예시 : π학생이름,수강과목(학생)
카티시언 프로덕트 연산
R × S
- 두 릴레이션에 포함된 레코드 간의 모든 조합을 생성하는 이항 연산자
- R과 S의 행 a와 b, 열 m과 n일 때, R X S = a x b, m + n 이 됨
조인 연산
R ⋈ AθB S
-> σ AθB(R × S)
- 두 릴레이션에서 조건을 만족하는 레코드를 결합한 레코드로 구성된 릴레이션을 생성
- 예시1 : σ 과목.교수번호=교수.교수번호(과목 × 교수)
- 예시2 : 과목 ⋈ 과목.교수번호=교수.교수번호 교수
집계 함수 연산
Gx(A)(R)
- 집계 함수를 값들의 집합 또는 레코드의 집합에 적용 하는 연산
- x( ) : AVG, SUM, MIN, MAX, COUNT등의 집계 함수
- A : 집계 연산을 적용할 컬럼
-
예시 : Gcount(과목명)(과목) count(과목명) 15
B Gx(A)(R)
- B : 그룹의 기준이 되는 컬럼
- x( ) : 집계 함수
- A : 집계 연산을 적용할 컬럼
- R : 릴레이션
-
예시 : 소속학과G소속학과,count(*)(교수) 소속학과 count(*) 국어국문학과 1 법학과 2 생활과학과 1 유아교육과 2