ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [데이터베이스] 2. 관계형 데이터베이스(Relational Database)
    데이터베이스 2023. 9. 10. 16:42

    우리는 저번 포스트(https://woongle.tistory.com/8)에서 데이터베이스와 DBMS의 개념에 대해 훑어보고 왔습니다.

    그렇다면 데이터베이스는 내부적으로 어떤 방식으로 동작할까요?

     

    데이터베이스의 개념은 1963년에 새로 나와, 지금까지도 많은 발전을 거치며 없어서는 안될 중요한 시스템으로 남아있습니다.

    계층형 데이터 모델, 네트워크형 데이터 모델 등 데이터베이스 내부적으로 동작하는 "데이터 모델" 또한 많은 변화가 있었는데요.

     

    이 포스트에서 살펴볼 것은 1970년대에 등장해 지금까지도 널리 사용되는
    "데이터베이스계의 국룰", 관계형 데이터베이스(Relational Database)에 대해 알아보겠습니다.

     

     

    1. 관계형 데이터 모델 (Relational Data Model)


    데이터 모델이란, 컴퓨터에 데이터를 저장하는 방식을 정의해놓은 개념입니다.

    관계형 데이터 모델은 데이터들간의 관계에 초점을 둔 데이터 모델이라고 볼 수 있습니다.

     

    저번 포스트에서 예시를 든 맛집 리스트를 다시 예시로 들겠습니다.

     

    맛집 리스트를 사람이 정리한다고 했을 때, 정리하는 사람마다 다르게 정리할 수 있습니다.

    김대리는 한눈에 보고 싶다며 하나의 엑셀파일에 맛집목록과 메뉴를 정리했습니다.

     

    김대리ver_맛집메뉴리스트.xlsx

    No 상호명 위치 폐업여부 평점 메뉴명 가격 메뉴별 평점
    1 날아라돈까스 서울시 강남구 역삼동 xxx.... Y 4.5 치즈까스 세트 14,500 4.9
    2 날아라돈까스 서울시 강남구 역삼동 xxx.... Y 4.5 등심돈까스 세트 13,500 3.7
    3 날아라돈까스 서울시 강남구 역삼동 xxx.... Y 4.5 안심돈까쓰 세트 13,500 3.9
    4 오징어철판쟁이 서울시 강남구 역삼동 xxx.... N 4.7 오징어 철판 구이 11,900 4.8
    ... ... ... ... ... ... ... ...

    이 파일에는 한 눈에 데이터가 보인다는 장점이 있지만, 한가지 문제점이 있습니다.

    데이터의 중복이 너무 많다는 것입니다.

    만약에 "날아라돈까스"의 위치나 평점이 바뀌면 각 메뉴별로 적혀있는 맛집의 정보들을 일괄적으로 수정해줘야 할 것입니다. 

    메뉴가 20개라면 20개 행에 대한 정보를 바꿔야 하죠.

    No 상호명 위치 폐업여부 평점 메뉴명 가격 메뉴별 평점
    1 날아라돈까스 서울시 강남구 역삼동 xxx.... N 4.8 치즈까스 세트 14,500 4.9
    2 날아라돈까스 서울시 강남구 역삼동 xxx.... N 4.8 등심돈까스 세트 13,500 3.7
    3 날아라돈까스 서울시 강남구 역삼동 xxx.... N 4.8 안심돈까쓰 세트 13,500 3.9
    4 오징어철판쟁이 서울시 강남구 역삼동 xxx.... N 4.7 오징어 철판 구이 11,900 4.8
    ... ... ... ... ... ... ... ...

     

    보다 못한 조과장님은 아래와 같이 김대리의 맛집 파일을 두개로 분리합니다.

    하나는 맛집리스트만 나열되어 있는 엑셀파일, 또 하나는 각 맛집의 메뉴들만 나열되어 있는 메뉴리스트 엑셀파일.

     

    조과장ver_회사 근처 맛집리스트.xlsx

    No 상호명 위치 폐업여부 평점
    1 날아라돈까스 서울시 강남구 역삼동 xxx.... Y 4.5
    2 오징어철판쟁이 서울시 강남구 역삼동 xxx.... N 4.7
    ... ... ... ... ...

     

    조과장ver_메뉴리스트.xlsx

    상호명 메뉴명 가격 메뉴별 평점
    날아라돈까스 치즈까스 세트 14,500 4.9
    날아라돈까스 등심돈까스 세트 13,500 3.7
    날아라돈까스 안심돈까쓰 세트 13,500 3.9
    ... ... ... ...

     

    이 파일은 두개로 나누어져 있지만 "날아라돈까스"의 정보가 바뀌어도 하나의 행만 수정하면 되는 것이죠.

    No 상호명 위치 폐업여부 평점
    1 날아라돈까스 서울시 강남구 역삼동 xxx.... N 4.8
    2 오징어철판쟁이 서울시 강남구 역삼동 xxx.... N 4.7
    ... ... ... ... ...

     

    이처럼, 데이터간의 중복이 발생할 수 있는 부분을 "상호명" 이라는 상호관계를 가진 두개의 파일로 나누어 관리하는 방식이 바로

    관계형 데이터모델 입니다.

     

    다음은 관계형 데이터 모델의 핵심 구성 요소입니다.

    이름 설명
    객체 (Entity) 데이터베이스에서 데이터화하려는 사물, 개념의 정보단위.
    관계형 데이터베이스의 테이블(table) 개념과 대응.
    위 예시에서는 맛집리스트, 메뉴리스트에 대응.
    속성 (attribute) 객체를 구성하는 데이터의 가장 작은 논리적 단위.
    데이터의 종류, 특성, 상태 등을 정의되며 관계형 데이터베이스의 열(column) 개념과 대응.
    위 예시에서는 상호명, 메뉴명, 평점 등과 대응.
    관계 (relationship) 객체과 개체 또는 속성 간의 연관성을 나타내기 위해 사용.
    관계형 데이터베이스의 외래키 등으로 구현하여 사용.
    위 예시에서는 상호명(관계를 가진 핵심 키)와 대응.

     

     

    2. 관계형 데이터베이스 (Relational Database)


    관계형 데이터베이스란 위에서 살펴본 관계형 데이터 모델 개념을 바탕으로 데이터를 처리하고 저장/관리하는 데이터베이스를 의미합니다.

    RDBMS란 앞선 포스팅에서 본 DBMS의 개념 앞에 Relational이란 단어가 추가된 개념입니다.

     

    IT업계 사람들이라면 한번 쯤 들어봤을법한 Oracle, mssql, mysql, mariaDB, 포스트그레SQL 등이 대표적인 RDBMS입니다.

    RDBMS가 워낙 대표적으로 사용되고 있기 때문에, 통상 DB, DBMS라고 한다면 RDB, RDBMS라고 봐도 무방할 정도입니다.

    3. SQL (Structured Query Language)


    SQL이란, RDBMS에서 데이터를 다루고 관리하는 데 사용되는 데이터베이스 질의 언어로

    쉽게 말하자면, DBMS에게 데이터에 관해 물어보고 결과를 얻기 위한 언어라고 생각하시면 됩니다.

     

    예를들면 위 맛집 관련 내용들이 RDB에 저장되어 있다고 했을 때,

    DBMS에게 "현재 폐업하지 않았고, 평점 4.5 이상인 맛집을 조회해줘"라고 SQL 이라는 질의 언어로 물어봐야 하는 것입니다. 

     

    SQL의 종류는 사용 목적에 따라 아래 5개의 용어로 나뉘며, 해당 블로그에서는 SQL의 상세한 문법에 대해서는 다루지 않겠습니다.

    초보 개발자라면 DQL, DML, DDL 정도만 구분할 수 있으면 실무에 있어 문제는 없을 것 같습니다.

    종류 설명
    DQL (DataQueryLanguage) RDBMS에 저장한 데이터를 원하는 방식으로 조회하는 명령어
    DML (DataManipulationLanguage) RDBMS 내 테이블의 데이터를 저장/수정/삭제하는 명령어
    DDL (DataDefinitionLanguage) RDBMS 내 데이터 관리를 위해 테이블을 포함한 여러 객체를 생성/수정/삭제하는 명령어
    TCL (TransactionControlLanguage) 트랜잭션 데이터의 영구 저장/취소 등과 관련된 명령어
    DCL (DataControlLanguage) 데이터 사용 권한과 관련된 명령어

     

     

    '데이터베이스' 카테고리의 다른 글

    [데이터베이스] 1. 데이터베이스(Database)란?  (0) 2023.09.10

    댓글

Designed by Tistory.