TIL-Database

정경훈·2021년 9월 30일
1

1. 데이터베이스(Database)란 무엇인가?

데이터란 컴퓨터 안에 기록되어 있는 숫자를 의미하며, 이런 데이터의 집합을 데이터베이스라고 한다.
일반적으로 데이터베이스의 개념은 특정 데이터를 확인하고 싶을 때 간단하게 찾을 수 있도록 정리된 집합을 말한다.
통상 Database(데이터가 저장된 저장장치)와 DBMS(데이터를 효율적으로 관리하는 시스템)을 같이 묶어 말한다.

1-1. 사용자 측면의 데이터베이스

마켓컬리 홈페이지에서 캡쳐를 해온 신상품 화면이다. 사용자들에게 차돌박이 영양부추무침 외 다양한 상품들의 정보를 전달하고 있다. 여기서 차돌박이 영양부추무침을 클릭해보자.(이미지출처 : 마켓컬리 공식홈페이지)

상품의 정보(이미지, 판매단위, 중량, 배송구분, 포장타입, 알레르기정보 등)을 전달하는데 이는 상품의 정보들이 데이터베이스에 저장이 되어 있어야 가능하다.(이미지출처 : 마켓컬리 공식홈페이지)

1-2. 개발자 측면의 데이터베이스

위의 그림과 같이 고객이 정보를 확인하기 위한 한 사이클을 보며 개발자 측면의 데이터베이스에서를 확인할 수 있다.
웹클라이언트 중간에서 웹어플리케이션 서버가 존재하는 이유는 무엇인가? 다양한 이유가 존재하지만, 브라우저에서 데이터베이스를 바로 호출할 수 없고(통신규약의 문제) 프론트엔드에서 표현하기 위한 다양한 정보들이 요청 목적에 맞게 가공될 수 있게 하기 위해서이다.

1-3. DBMS(Database Management System)

데이터베이스를 효율적으로 관리하는 소프트웨어를 말한다. (저장장치 내 저장된 데이터의 집합인 데이터베이스는 다른 개념이다.)

1-4. 데이터베이스와 DBMS를 사용하는 이유는 ?

  • 생산성과 기능의 향상 그리고 신뢰성을 확보하기 위해서
    - 생산성 : 시스템 개발과정에서의 생산성 향상(데이터 검색, 추가, 삭제, 갱신 등)
    - 기능성 : 데이터베이스를 다루는 고급 기능 제공( 복수의 유저 요청 대응, 대용량 데이터 저장, 고속검색, 기능확장의 유연성)
    - 신뢰성 : 하드웨어를 여러 대로 구성하여 신뢰성을 높이는 동시에 성능향상 도모(확장성, 부하 분산, 데이터 추출, 데이터 리스토어)
  • 데이터의 보존 및 체계적 관리를 위해서

2. 관계형 데이터베이스와 비관계형 데이터베이스

  • 비관계형 데이터베이스 : 데이터들을 저장하기 전에 사전에 처리할 작업 없이 데이터를 저장하기만 하는 동작을 한다. 이러한 성격때문에 데이터들이 체계적으로 위치하지 못한다.

  • 관계형 데이터베이스(RDBMS)
    - 행과 열을 가지고 표 형식 데이터를 저장하는 형태의 데이터베이스를 가리킨다.
    - 2차원 데이터를 말하며, 가로방향은 "열" 세로방향은 "행"을 나열한다.
    - 각각의 테이블에 이름을 붙여서 관리한다.
    - SQL을 사용할 수 있는 데이터베이스이다.

2-1. 관계형 데이터베이스가 사용되는 시스템

웹 시스템과 연동하여 사용하는 경우, 대규모 예약시스템(비행기, 전철, 숙소) 등 대규모 예약시스템부터 작은 병원의 예약시스템까지 다양한 분야에서 사용된다. 관계형 데이터베이스의 소프트웨어로는 MySQL,Oracle등이 있다.

2-2. 관계형 데이터베이스 활용방법

  • 모든 데이터들은 2차원 테이블로 표현할 수 있다.
    - 열(column) : 테이블의 각 항목을 의미한다.(id, 상품명, 판매처, 가격)
    - 행(Row) : 각 항목의 실제 값들을 의미한다.(코카콜라 제로, 코카콜라, 2,500)

  • 테이블의 각 행(row)은 고유키(Primary Key)가 있다.
    - 각 행(row)는 다른 행(row)와 겹치지 않는, 하나만 정확하게 저장할 수 있는 고유한 번호를 가져야 한다.(고유키를 이용하여 특정 로우를 찾거나 인용할 수 있다.
    -> 고유키로 관리하는 이유는 ? 행의 데이터 내용에서 오타등 다양한 이유로 잘 못 입력되는 경우가 생길 수 있기 때문에 데이터의 완전성을 위해 고유키로 관리하고 고유키를 검색하여 데이터를 찾아낸다. (예) 코카콜라제로를 찾기 위해 고유키(PK)를 사용하여 id 1번을 찾으면 코카콜라제로의 데이터를 찾을 수 있다.

  • 각각의 테이블들은 서로 상호 관련성을 가지고 연결될 수 있다.
    - 관계형 데이터 베이스라는 의미는 DB를 구성하고 있는 테이블들이 서로 상화관련성을 가지고 연결되어 있다.
    - 각 테이블들이 완전히 독립적이지 않고, 테이블 A와 B가 서로 연관된 사이라는 뜻이다.
    - 관계유형 : 일대일 관계(One to One), 일대다 관계(One to Many), 다대다 관계(Many to Many)

2-3. 관계형데이터베이스의 관계유형

  • 일대일 관계(One to One) : 하나의 A테이블 데이터는 오로지 하나의 B테이블 데이터와 연결된다.

    세션에서는 유저와 주민등록번호를 테이블로 만들어 예를 들었지만 나도 생각을 해보기 위해서 예시를 한번 만들어보았다. 판매처 테이블의 음료_id는 음료명 테이블의 PK(고유키)를 참조한 것이다. 이를 FK(Forign Key)라고 부른다.
  • 일대다 관계(One to Many) : 하나의 A테이블 데이터는 B테이블의 여러 데이터와 연결된다.

    세션에서는 사람과 애완동물의 관계를 통해 설명을 해주셨고, 나는 내가 한번 제조사 테이블의 데이터로 음료수 테이블의 여러 데이터를 연결시켜 보았다.
  • 다대다 관계(Many to Many) : 하나의 A테이블 데이터는 B테이블의 여러 데이터와 연결될 수 있다.(반대도 가능)

    저자(A테이블)와 책(B테이블)은 서로 여러데이터와 연결될 수 있는데 위 예시는 A테이블의 데이터를 B테이블의 여러데이터와 비교한 것으로, 책에 공동 저자가 있을 수 있는 경우를 표현한 것이다. '시인 그 자체' 라는 책은 각각 '김시인'과 '정작가'가 집필을 했고, 이를 알 수 있는 방법은 중간테이블의 책_id를 보고 저자_id를 확인하면 확인이 가능하다.
  • 간단 회고

    1주차에 배웠던 데이터베이스를 다시 공부할겸 세션의 내용을 보고 조심스레 정리를 해보았다. 아직 내가 정확히 데이터베이스에 대한 모든 내용을 알고 있다고 생각하지 않지만, 이제 데이터베이스에 대해서 실눈정도 뜬것 같다. 꾸준히 열심히 하자. 화이팅.

profile
발전하고 싶은 프론트엔드 개발자 입니다 :)

0개의 댓글