해당 글은 글쓴이가 SQL 공부하면서 중요한 점이나, 핵심 개념들을 입맛대로 정제하고 정리한 글입니다. 오개념을 발견하셨거나 피드백할 점이 있다면 언제든 댓글이나 질문을 통해 해당 글에 남겨주세요 :)
관계형 데이터베이스(Relational Database)
'RDBMS'(Relational Database Management System)라고도 불리는 이 'MySql'은 모든 데이터들의 정보를 데이터베이스라는 일종의 상자 안에 'SQL'이라는 언어를 사용해 원하는 대로 정보를 빼내고 넣고 수정할 수 있게 해주는 '데이터 베이스 관리 시스템'(Database Management System)이다. "그런데 이 Relational은 왜 붙은걸까?" 이제 본격적으로 한 번 알아보자.
MySql/Oracle 등등 다양한 '데이터베이스 서비스'에서 연관된 정보(표)를 묶어놓은 상태를 두고 우리는 이를 '데이터베이스'(or Schema)라고 부른다. 특히 엑셀과 같이 일정한 행, 열의 형태로 데이터를 저장하는 것이 바로 MySql이 속한 데이터베이스이다. 그리고 표, 스프레드시트 혹은 엑셀처럼 이루어진 데이터베이스에서 정보를 빼내고 조작, 사용하는데 사용하는 언어가 바로 'SQL'(Structured Query Language)이다. 따라서 "우리가 왜 SQL을 배워야 하는가?" 라는 질문에 대한 대답은 그 언어의 '범용성과 활용성'으로 대신 설명할 수 있을 것이다.
문서형 데이터베이스(Documental Database)
MongoDB와 같은 '문서형 데이터 베이스 관리 시스템'은 각 데이터와 정보의 저장이 굉장히 자유롭다. 이 말은 컬럼이 정해져 있지 않고, 각 정보들이 다소 산발적이고 불규칙적으로 저장되어 있다는 말과 같다. 따라서 각 데이터마다 가진 정보와 값들을 따로따로 추출이 가능하지만 MySql, Oracle과 같은 RDBMS는 그렇지 않다. 오히려 정해진 컬럼값을 토대로 테이블에 정보를 정렬되고 일관된 형태로 유지가 가능하다.
예시)
Profile 컬럼의 값들을 자세히 보면, developer, data engineer라는 값이 중복되서 나타나는 것을 알 수 있다. 만약 해당 직군의 명칭이 변경되거나 세분화해야 하는 업데이트가 이뤄지면 이 정보를 죄다 바꿔줘야 하는 문제가 발생한다.
Ex)
- Developer -> Android Developer, iOS developer
- Data engineer -> Data Analysist, Data Scientist
또한, 동일한 데이터값이 중복해서 입력되어 있다는 건 데이터의 행이 일부 낭비되고 있는 것과도 같다. 실전의 데이터베이스에서 이런 행들을 세부적으로 분류하고 나눔으로써 해결이 가능하다. 통합된 데이터베이스를 잘게 분류해서 파악하는 과정을 거친다고 보면 된다. 하지만, 분류된 데이터들을 일일이 또 확인하고 취합하는 과정이 굉장히 번거롭다. MySql에서는 이 과정을 'JOIN'이라는 기능을 통해 다시 합치고 이어줄 수 있다. 이 각 컬럼(혹은 특성)들의 관계에 따라 분류하고, 다시 합치는 과정이 있기 때문에 MySql을 'Relational DBMS, 관계형 데이터베이스 관리 시스템'이라고 부른다!
모든 글은 이전 포스트와 이어지는 내용을 담고 있습니다. 이전 글을 보시려면 해당 링크를 클릭해주세요!!
"https://www.flaticon.com/kr/free-icons/sql" 아이콘 제작자: Freepik - Flaticon
'데이터 분석(DA) > 📈 SQL' 카테고리의 다른 글
데이터베이스 (Database) [SQL] (0) | 2024.01.25 |
---|