이번 블로깅에 대해선 데이터 베이스 단원을 들어가기 전에 기본이 되는 데이터베이스의 기본 에 대해 넓고 얕게 알아보자.

들어가기 전

데이터베이스란 무엇일까?

  • 데이터 베이스란?

    데이터베이스(DB, DataBase)는 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되어 있는 데이터 모음이다.

해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS(Data Management System) 이라고 한다.
데이터 베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 조희 등을 수행한다.

위의 그림처럼 데이터베이스가 있고 그 위에 DBMS가 있어서 이를 통해 응용 프로그램이 DBMS에 접근하게 된다.



엔터티

1. 엔터티란?

엔터티 란, 사람, 장소, 사진 개념 등 여러 개의 속성을 지닌 명사를 의미한다. 예를 들어 회원이라는 엔터티 안에 이름, 아이디, 주소, 전화번호 등 많은 속성을 가질 것이다. 이를 대표하는 명사가 엔터티이다.


2. 약한 엔터티와 강한 엔터티

엔터티는 두 종류로 나뉘는데, 약한 엔터티강한 엔터티 둘로 나뉜다.
약한 엔터티는 혼자서 존재하지 못하고 어떤 것에 종속된 엔터티를 말한다. 그에 비해 강한 엔터티는 종속되지 않고 혼자서도 존재할 수 있는 엔터티를 말한다.

만약 건물과 방이 있을때, 건물이 있어야 방이 있는 것이다.
이때 방은 건물에 종속된 것으로 약한 엔터티, 건물은 강한 엔터티가 된다.



릴레이션

1. 릴레이션 이란?

릴리이션(relation) 은 데이터베이스에서 정보를 구분하여 저장하는 기본 단위이다. 엔터티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아 저정하여 관리하는 구조이다.

앞에 예시를 보면 회원 안에 이름, 아이디, 주소, 전화번호 등등의 속성 값이 있는데 이를 한꺼번에 묶어서 릴레이션 안에 저장해둔다.
이 릴레이션은 부르는 말이 조금씩 다른데, 관계형 데이터베이스에서는 테이블 이라고 하며, NoSQL 데이터 베이스에서는 컬렉션 이라고 불린다.

2. 테이블과 컬렉션

데이터베이스의 종류에는 관계형 데이터베이스와 NoSQL데이터베이스로 나눌 수 있다. 둘의 구조는 각각 아래와 같다.

  1. 관계형 데이터베이스
    구조: 레코드 - 테이블 - 데이터 베이스
    관계형 데이터 베이스는 아래 그림처럼 레코드가 쌓여서 테이블이 되고, 테이블이 쌓여서 데이터 베이스가 된다.

  2. NoSQL 데이터베이스
    구조: 도큐먼드 - 컬렉션 - 데이터 베이스



속성

속성은 HashMap을 예시로 들면 value에 해당한다.

속성은 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보를 말한다.

라는 엔터티가 있을때, 차 넘버, 차 바퀴, 차 색깔 등 이러한 정보들이 있는데 이것을 속성 으로 생각할 수 있다.



도메인

도메인은 릴레이션에 포함된 각각의 속성 정보가 가질 수 있는 값들을 모아둔 집합이다.

예를 들어 성별에 남녀라고 있을때 남,녀의 집합이 도메인이 될 수 있다.



필드와 레코드

앞에서 설명한 것들을 기반으로 데이터베이스에서 필드와 레코드로 구성된 테이블을 만들 수 있다.

위의 표를 자세히 봐보자.
회원이란 엔터티member라는 테이블을 가지고 있다.
속성인 이름, 아이디 등을 가지고 있으며 거기에 상응하는 name, ID, address 등 필드를 가지고 있다.
그리고 이때 테이블에 쌓이는 한 행을 레코드라고 한다. 이 레코드를 튜플이라고 부르기도 한다.

필드 타입이란?

필드는 타입을 가진다. 예를 들어 이름은 문자열이고, 나이는 숫자일 것이다. 이러한 타입은 DBMS가 무엇이냐에 따라 다르다.

데이터 베이스를 구성할때, DBMS에 따라 각각에 맞는 필드 타입을 선언해주는 것이 중요하다.



관계

데이터베이스에 테이블은 하나만 있는 것이 아니다. 여러개의 테이블이 있고, 이러한 테이블의 관계가 정해져있다. 이러한 관계를 관계화살표로 나타낸다.


1. 1:1 관계

이는 예를 들어보면 유저 당 이메일은 한개 있을 것이다. 이러한 경우 1:1이 되는데 이러한 관계를 말한다.

1대1 관계는 테이블을 두 개의 테이블로 나눠 테이블의 구조를 더 이해하기 쉽게 만들어준다.


2. 1:N 관계

예를 들어 쇼핑몰에서 한 유저당 여러 개의 상품을 장바구니에 넣을 수 있다. 이때 1:N의 경우가 된다.

위의 예시처럼 한 개체가 여러개의 개체를 포함하는 경우를 말한다.


3. N:M 관계

이 관계는 학생과 강의와의 관계로 예시를 들어보겠다.
학새도 강의를 많이 들을 수 있고, 강의도 여러 명의 학생을 포함할 수 있다. 이 경우 N:M인 것이다.

이 경우는 위의 그럼처럼 N:M을 한번에 연결하는 것이 아니라 중간에 학생_강의 라는 테이블을 끼어넣는다. 그래서 결국은 N:M을 한꺼번에 연결하는 것이 아니라, N:1, M:1이라는 관계를 가지게 된다. 이처럼 N:M 관계는 두 개로 나눠서 설정한다.



  • 키란?

    테이블 간의 관계를 조금 더 명확하게 하고 테이블 자체의 인덱스를 위해 설정된 장치로 기본키, 외래키, 후보키, 슈퍼키, 대체키가 있다.

앞에서 말했던 키들은 위의 그림처럼 관계를 가진다. 슈퍼키는 유일성이 있고, 그 안에 포함된 후보키는 최소성까지 갖춘 키이다.
이때 유일성은 중복되는 값은 없는 것을 의미하며, 최소성은 필드를 조합하지 않고 최소 필드만 써서 키를 형성할 수 있는 것을 말한다.

이제 키들에 대해 각각 알아보자

1. 기본키

기본키는 줄여 PK(Primary Key)라고 한다.
유일성과 최소성을 만족하는 키이다.

만약 테이블의 데이터 중 고유하게 존재하는 속성을 결정을 하는데, 기본키에 해당하는 데이터가 중복되서는 안된다.
위의 그림을 보면 PDT-002가 중복이 된다. 이는 기본키가 될 수 없다.

만약 모두 다르고 최소성을 만족한다면 기본키가 될 수 있다.

  • 자연키 VS 인조키
    기본키는 설정할때 두개 중에 골라 설정하게 된다.
  1. 자연키란?
    자연키는 중복되지 않은 값을 제외하여 남는 키를 자연키라고 한다. 이는 언젠가는 변할 수 있다는 속성을 가지고 있다.
  2. 인조키란?
    인조키는 위와 다르게 사람이 key값을 직접 지정해주는 것을 말한다.

2. 외래키

외래키는 FK(Foreign Key)라고도 불린다. 다른 테이블의 기본키를 그대로 참조하는 값으로 개체와의 관계를 식별하는데 사용한다.
왜래키는 기본키와 다르게 중복되어도 된다.

3. 후보키

후보키는 기본키가 될 수 있는 후보들이며, 유일성과 최소성을 동시에 만족하는 키이다.

4. 대체키

대체키는 후보키가 두 개 이상일 경우 어느 하나를 기본키로 지저하고 남은 후보키를 말한다.

5. 슈퍼키

슈퍼키는 각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키이다.




마무리

이번 블로깅에선 데이터베이스의 기본에 대해 알아보았다. 이 블로깅의 목적은 깊게 배우는 것이 아니라 개발자 대회에 낄 정도의 넒고 얕은 지식을 목표로 하고 있다. 이 블로깅을 통해서 전체적인 데이터베이스의 기본 에 대해 잡았으면 좋겠다. 그리고 감을 잡았고 좀 더 깊게 배우고 싶다면 이 블로깅의 키워드를 길로 잡아서 하나씩 공부해 나간다면 매우 도움이 될 것이라고 생각한다.

profile
집돌이 FE개발자의 노트

0개의 댓글