데이터베이스는 크게
관계형 데이터베이스(RDB), 비관계형 데이터베이스(NoSQL DB) 두 종류로 나뉩니다.
일반적으로 우리가 흔히 말하는 'DB'는 SQL을 사용하는 관계형 데이터베이스를 말하는 것인데요 (아직은)
관계형 데이터베이스가 무엇이고, 어떤 식으로 구성이 되어 있는지
그리고 비관계형 데이터베이스란 또 무엇인건지 알아볼게요!
관계형 데이터베이스(RDB)
관계형 데이터베이스 정의
관계형 데이터베이스는 데이터를 행과 열 구조 표 형태로 저장하는 방식의 DB를 말합니다.
데이터가 저장되는 표 형태의 공간을 Table이라고 합니다.
관계형 데이터베이스가 말하는 '관계'란
이 Table 간의 상호작용을 기반으로 이뤄진 연관관계(논리적 연결)을 의미하지요
관계형 데이터베이스 예시
가벼운 예시를 들어볼게요!
저희에게 고객정보를 담고 있는 customer Table과 주문 정보를 담고 있는 order Table이 있다고 가정해 보겠습니다.
우선,
고객ID,고객이름을 저장하는 표 그리고 주문ID, 주문한 고객ID, 주문날짜 를 저장하는 표
두 가지 표를 엑셀로 먼저 만들어 본다고 하면 아래와 같이 만들 수 있겠죠?
[ 고객표 ]
고객ID는 각 고객을 식별할 수 있는 유일한 항목입니다. 즉, 중복되는 customer_id는 있을 수 없다는 이야기지요
고객명은 고객이 가지고 있는 일반 속성입니다. 동명이인이 있을 수 있으니 중복이 발생할 가능성도 있지요
[ 주문표 ]
주문ID는 각 주문을 식별할 수 있는 유일한 항목입니다. 역시, 중복되는 order_id는 있을 수 없습니다.
주문한 고객ID는 주문을 한 고객ID로, 이 고객ID는 위에서 언급됐던 고객 표 목록에서도 찾을 수 있겠죠
주문날짜는 말 그대로 주문날짜 즉, 주문 데이터가 들어오게 된 날짜 정보 입니다.
위와 같은 구조의 엑셀 표 두 개를 RDB 테이블 구조로 그려 본다면 아래와 같습니다.
[ customers ]
고객표에는 customers라는 표 이름을 붙여줬고 이게 곧 Table이 됩니다.
그리고 customers에 고객ID와 고객명을 뜻하는 customer_id, customer_name 이란 Column을 만들어 줬습니다.
[ orders ]
주문표도 마찬가지로 orders라는 Table명을 붙여 줬고 order_id, customer_id, order_date Column 도 추가해 줬습니다.
여기서 중요하게 봐야할 점이 두 가지 있습니다.
1. customers와 orders는 각 table 내 행을 구분할 수 있는 고유값을 가진다
(customers의 customer_id, orders의 order_id)
2. customers와 orders는 customer_id로 연결되어 있다.
1 과 같이 Table에 고유하게 존재하는 ID 값을 Primary Key 즉 PK라고 하고
2 와 같이 customer_id로 연결된 두 Table은 서로 관계가 있는 Table이라고 보며,
이 경우 orders가 custmers의 PK인 customer_id를 참조하고 있죠.
이런 경우 orders의 customer_id는 Foreign Key 즉 FK라고 부릅니다.
이 PK, FK의 존재가 어찌보면 관계형 데이터베이스의 주요 개념이 될 수도 있겠네요
관계형 데이터베이스 시스템 (RDBMS)
관계형 데이터베이스 시스템(RDBMS)는 관계형 데이터베이스(RDB)를 사용하고 관리할 수 있게 도와주는 소프트웨어 시스템입니다.
관계형 데이터베이스에 데이터를 생성, 조작, 관리하기 위해선 SQL이 필요한데 우리가 입력한 SQL을 번역해주는 컴파일러와 번역된 SQL을 처리하는 질의 처리기, 그 외에도 트랜잭션을 관리하는 트랜잭션 관리자 등이 포함되어 있지요
RDBMS 종류로는 Oracle, MySQL, SQL Server (MS-SQL), PostgreSQL 등이 있습니다.
비관계형 데이터베이스 (NoSQL DB)
그렇다면, 비관계형 데이터베이스(NoSQL DB)란 뭘까요?
비관계형 데이터베이스는 말 그대로 SQL을 사용하지 않는 DB형태입니다.
비관계형 데이터베이스는 데이터를 Table 방식으로 저장하지 않고, 대신 연결되지 않은 개별 파일 형태로 저장하게 되죠.
문서 또는 리치 미디어 파일과 같은 복잡하고 구조화되지 않은 유형에 종종 사용됩니다.
아무래도 고정 폼이 정해진 RDB보단 비관계형 데이터베이스가 다양한 유형의 데이터를 처리할 수 있지요.
비관계형 데이터베이스의 종류는 다양합니다.
저장되는 형태와 방식에 따라 Key-Value, Wide-Column, Document, Graph 등으로 나눌 수 있어요.
-
오늘은 간단하게 관계형 데이터베이스에 대한 정의와
PK, FK를 활용한 예시 그리고 비관계형 데이터베이스에 대해 알아봤습니다.
이후엔 관계형 데이터베이스에서 'SQL'이란 무엇이고, 무슨 역할을 하는지 알아볼게요
감사합니다 🙂
[ 참고 ]
책 MySQL로 배우는 데이터베이스 개론과 실습
책 SQL 개발자 이론서 + 기출문제
블로그 https://cloud.google.com/learn/what-is-a-relational-database?hl=ko
'Database > 엑셀로 배우는 SQL 실무 - 입문' 카테고리의 다른 글
[SQL] 엑셀로 배우는 SQL - WHERE (=, !=, LIKE, NOT LIKE) (0) | 2023.01.02 |
---|---|
[SQL] 엑셀로 배우는 SQL - WHERE (=, >, <, !=, BETWEEN) (0) | 2022.12.30 |
[SQL] 엑셀로 배우는 SQL - SELECT 문, 읽는 순서, Alias (별칭) (0) | 2022.12.29 |
[SQL] 엑셀로 배우는 SQL - Table, Column, Row (0) | 2022.12.28 |
[SQL] 엑셀로 배우는 SQL - SQL의 정의와 종류 (DDL, DML, DCL, TCL) (0) | 2022.12.27 |
댓글