데이터베이스 소개

    목차

해당 글은 공부한 내용을 바탕으로 적는 글입니다. 틀린 내용이 있을 수 있으니 피드백 주시면 감사하겠습니다.

용어?

우선 기본적으로 용어에 대해서 알아볼 필요가 있을 것 같습니다.

컴퓨터 공부를 처음 시작하면서 제일 힘들었던 것이 용어입니다. 용어에 대한 명확한 설명?을 찾기가 매우 힘들었던 것 같아요.

그도 그럴 것이 용어에 대해서 다들 적당히 misuse? 하면서 사용해도 대충 알아듣기 때문이지 않나 싶습니다.

누가 간단히라도 정의 내려줬으면 좋겠는데 아무리 찾아봐도 '그래서 도대체 이게 뭔데?' 이런 생각밖에 들지 않았어요.

잡소리는 각설하고 DB 용어에 대해서 알아봅시다.

데이터

의미를 가지면서 기록될 수 있는 사실을 의미합니다.

그러면 어떤 것이 데이터라고 할 수 있을까?

'170' 얘는 데이터다. 170이라는 숫자 데이터. 하지만 우리가 관심이 있는 것은 의미를 가진다는 것이에요.

그냥 170은 숫자긴 숫자인데 뭐가 170인데? 라고 할 수 있지만, 이 170이 키를 의미하는 것이라면 "아 키 170이구나" 라고 알 수 있습니다.

데이터베이스

데이터베이스는 관련있는 데이터의 모임입니다.

어떤 것을 데이터베이스라고 할 수 있을까?

학생들의 학점? -> 얘는 데이터에요. 위에서 설명한 것처럼 얘는 쉽게 이해가 될 것 같습니다.

고객 정보? -> 얘는 데이터베이스에요.

고객 정보에는 여러 관련있는 데이터가 있을 것입니다.. 전화번호, 이름, 성별, 주소, ... 등 고객과 관련된 여러 데이터들의 모임인 것이죠.

하지만 우리가 말하는 데이터베이스는 전사적인 규모, 큰 규모의 데이터베이스를 말합니다.

대학교 데이터베이스를 생각해봅시다.

대학교 데이터베이스에는 학생 정보, 교수 정보, 수업 정보, 도서관 정보 등이 있겠죠. 이처럼 우리는 큰 규모의 데이터베이스를 만드는 것에 관심이 있는 것입니다.

데이터베이스 관리 시스템(DBMS)

DBMS가 뭘까? 우리가 아는 MySQL, Oracle, MongoDB 등이 DBMS입니다.

데이터베이스의 생성과 관리를 담당하는 소프트웨어를 의미합니다.

관계(Relation)형 DBMS

DBMS는 그럼 알겠는데 관계형은 도대체 뭘까요?

학교에서 집합 배울 때 관계에 대해서 배웠다고 합니다.

실제로 배웠지만 기억이 안 나는 것 같아요 ㅋㅋㅋ.

수학 시간은 아니니 간단히 검색해서 알아봅시다.

두 집합 A, B가 있다면 A, B에서 정의된 관계는 A의 원소와 B의 원소로 이루어진 순서쌍의 집합을 의미합니다.

그래서 관계 R은 A와 B의 데카르트 곱의 부분 집합이 됩니다.

집합 A의 원소가 a, B의 원소가 b라면 (a,b) ∈ R 이 되는 것이죠.

왜 이런 이야기를 할까요? 관계형 데이터베이스에서 이야기하는 관계가 이것을 의미하기 때문입니다.

우리가 흔히 관계형 데이터베이스에서 정보를 볼 때 보고 사용하는 것, 테이블입니다. 관계를 표 형태(테이블로) 표현하고 있는 것이죠.

그럼 다시 살펴봅시다.

쉽게 학생이라는 것에 대해서 생각해보면, 학생은 이름, 학번, 전공 등의 정보가 있을 것이다.

이름, 학번, 전공을 각 집합이라고 생각하고

이름 = {홍길동, 신짱구, 신짱아}

학번 = {1, 2, 3}

전공 = {컴공, 수학, 기계공학}

이름, 학번, 전공에서 정의된 관계를 학생이라고 할 때

(홍길동, 1, 컴공), (신짱구, 2, 컴공), (신짱아, 3, 수학) 각 순서쌍은 관계(학생)의 원소가 되는 것입니다.

그래서 관계형 데이터베이스란, 이렇게 데이터베이스를 관계형 모델을 이용해서 표현하는 데이터베이스라는 의미입니다.

엔티티 타입, 엔티티(인스턴스), 관계(Relationship), 속성(Attribute)

엔티티 타입은 쉽게 설명하면 Java에서의 class라고 볼 수 있을 것 같아요. 실제로는 그냥 엔티티라고 표현하는 경우가 많은 것 같습니다. 여기서도 그냥 엔티티라고 표현하겠습니다!
구체적으로 설명하자면 IT 시스템을 통해 저장 및 관리해야 하는 집합적인 어떤 것입니다.

엔티티는 Java에서의 인스턴스라고 볼 수 있습니다(실제로 DB에서도 인스턴스, 튜플이라고 부릅니다).
엔티티는 여러 인스턴스를 가질 수 있으니까 엔티티는 인스턴스의 집합이라고 할 수 있습니다.

관계(Relationship)는 엔티티간의 관계라고 볼 수 있습니다. 대학교DB를 생각해보면 대표적으로 학생, 수업이라는 엔티티가 있을 것이고 '학생은 수업을 듣는다' 라는 관계를 가지고 있습니다.

속성 은 엔티티 타입이 가지는 성격이라고 볼 수 있습니다. 위에서 설명한 것처럼 학생은 이름, 학번, 전공이라는 성격을 가지고 있는 것이죠! 속성은 인스턴스에서 관리하고자 하는 더 이상 분리되지 않는 최소의 데이터 단위입니다.
더 이상 쪼개지지 않는다는 것이 포인트에요!

엔티티와 인스턴스, 속성의 관계

속성은 엔티티에 대한 자세하고 구체적인 정보를 나타내고, 각 속성은 구체적인 값을 갖습니다.
학생은 이름, 학번, 전공 등의 속성을 가지고 이 속성은 학생을 설명할 수 있는 정보들이죠.
(이름, 학번, 전공) 각 속성은 (홍길동, ...), (1, ...), (컴공, ...)의 속성값들을 갖는 것이죠.

마치며

지금까지 DB 용어에 대해서 알아봤습니다. 감사합니다!