본문 바로가기
공부-Data Engineer/데이터베이스

[쉽게 설명한] 관계형 데이터베이스

by ChanKim0718 2020. 6. 4.
반응형

관계형 데이터베이스

정형 데이터가 저장되는 데이터베이스이다.

 

관계형 데이터베이스 용어

위 그림처럼 데이터베이스에서는 행, 열을 부르는 용어가 있는데 몇 개 없으니 외우자.

그리고 행과 열이 이루는 표를 테이블 또는 릴레이션이라고 부른다. 

앞으로는 표가 아니라 테이블, 행을 row 열을 column이라고 부르겠다.

(※ 행은 row, Tuple 말고 record라는 파일 시스템 용어도 잘 사용함)

 

그럼 관계형이라는 말은 왜 붙을까?

<물품 테이블>

위 그림 <물품 테이블>은 3가지(물품번호, 물품이름, 수량) 속성 이름이 있는데

이 속성이름 하나하나를 스키마(Schema)라고 부른다.

여기서 물품번호는 {1,2,3}

물품이름은 {축구공, 농구공, 야구공}

수량은 {2, 2, 5}라는

원소를 가지고 있다.

이러한 스키마의 원소집합은 인스턴스(Instance)라고 부른다.

 

각 스키마에서 인스턴스가 하나씩 선택되어

3가지 원소(1, 축구공, 2)가 서로 관계를 맺고

이 관계가 모여 테이블(Table, Relation)이 된다.

그래서 관계형 데이터베이스라고 부르는 것이다.

 

그러면 관계형 데이터베이스를 왜 사용할까?

그 이유 중 중요한 5가지만 살펴보자!

 

1. 쿼리(Query)를 사용해 데이터베이스를 쉽게 사용할 수 있다.

쿼리는 한국어로 질문(질의)과 같은 말이다.

데이터베이스에게 특정 질문(명령어)을 해서

원하는 것을 요청한다고 보면 된다. 

모든 데이터베이스 관리 시스템(database management system, DBMS)에는

사용자가 데이터베이스와 상호작용(읽기, 수정, 삭제 등)할 수 있는 명령어가 있다.

 SQL(Structured Query Language)이라고 부르는데 이 명령어로

원하는 데이터를 불러오거나 삽입하거나 삭제, 수정하는 등

데이터베이스에서 요구사항을 처리할 수 있다.

 

2. Join 기능이 있다.

관계형 데이터베이스에는 키(key) 값(value) 개념이 있다.

별거 아니다. 키(key)는 테이블에서 각 row을 고유하게 식별할 수 있는 데이터이다.

값(value)은 키에 관계된 데이터이다.

 

아래 그림 <물품 테이블>에서 각 row를 유일하게 식별할 수 있는 값은 물품번호다.

왜냐하면 물품이름은 동일한 물품이름이 있을 수 있고 수량도 마찬가지다.

물품이 더 추가되더라도 물품번호는 다음 번호를 매기면 되기 때문에 고유한 식별 값(키)이 된다.

여기서 자기 테이블의 고유 식별데이터를 기본키라고 하고

남의 테이블(담당자 테이블)에서 필요에 의해 내(물품 테이블) 기본키를 가져다 쓰는 것을 외래키라 한다.

Join은 이렇게 연결된 키(기본키-외래키)를 가지고 테이블을 합치는(Join) 기능이다.

손흥민은 어떤 물품을 가져와야 하는가?라는 질문에

컴퓨터는 두 테이블에 연결된 키(기본키-외래키)를 기준으로

테이블을 합친(Join) 다음 결과를 찾아 알려준다.

 

이렇게 Join은 관계가 있는 여러 테이블을 합쳐 원하는 결과를 알 수 있는 기능이다.

Join의 종류는 여러 가지가 있는데 다음번에 다루겠다.

(※ 키도 슈퍼키, 후보키 등 종류가 많은데 기본키, 외래키 정도면 공부하는데 문제없다.)

 

3. 집계 및 분석 기능이 있다.

엑셀을 사용해 본 적 있다면 집계 기능이 무엇인지 알 것이다.

쉽게 말하면 테이블에 있는 숫자를 세거나(count) 더하는(sum) 기능이다

<물품 테이블>의 총 물품 수량은?이라는 질문에

SQL의 groupby와 sum기능을 사용해 엑셀처럼 집계를 할 수 있다.

또 정렬 기능인 orderby를 사용해 분석에 이용할 수 있다.

 

4. 인덱스를 추가하여 빠른 검색이 가능하다.

데이터가 아주 많다고 가정하면 필요한 데이터를 검색할 때

시간이 많이 소모될 수 있다.

<담당자 테이블>에 소속번호(인덱스)를 추가하여

필요한 소속만 검색하면 편리하고 시간이 적게 소모된다.

5. ACID 트랜잭션(처리) 기능이 있다.

A(Atomicity, 원자성) : 작업이 일부만 실행되다가 중단되지 않도록 보장.

C(Consistency, 일관성) : 데이터베이스의 일관성 유지. 문제가 생기면 전체 중단.

I(Isolation, 독립성) : 연산작업 시 다른 연산작업이 끼어들지 못하도록 보장.

D(Durability, 지속성) : 성공적으로 수행된 작업은 영원히 유지.

 

사실 이것이 관계형 데이터베이스에서 가장 중요한 내용이다.

ACID 트랜젝션은 데이터베이스 시스템의 무결성을 보장해준다.

우리가 사용하는 데이터베이스에 저장된 데이터가 오류 없이 정확하다는 뜻이다.

 

ACID 트랜잭션은 은행거래를 예로 많이 든다.

내가 친구한테 1만 원을 송금했다고 가정하자.

그런데 송금 도중 시스템 오류가 발생해 내 통장에서는 1만 원이 나갔는데

친구 통장에는 아무것도 들어오지 않았다. 

이런 경우 모든 처리가 취소된다. 다시 송금보내기 전으로 돌아간다는 뜻이다.

즉, 모든 처리작업이 발생하거나 아무 작업도 발생하지 않는다.

 

이 기능은 데이터베이스에 데이터를 저장하다가

어떤 시스템 오류가 일어나더라도 일관성을 유지해주는

아주 중요한 기능이다.


관계형 데이터베이스를 사용하는 이유를 알아야

내가 가진 데이터 또는 내가 필요한 데이터에 맞게 데이터베이스를 사용할 수 있다!

 

반응형