데이터베이스(DATABASE)는 한 조직이나 시스템 운영에 필요한 데이터 집합(SET)을 모아 놓은 것입니다. 무턱대고 데이터 집합을 모아놓는 것이 아니라, 효율적으로 사용할 수 있도록 구조화해서 모아 놓습니다. 아마도 스타벅스의 데이터베이스에는 매장, 메뉴(상품), 주문, 회원과 같은 데이터 집합이 있을 것입니다. 넥플릭스의 데이터베이스는 시청, 컨텐츠, 회원과 같은 데이터 집합이 있을 것입니다.
데이터베이스에는 관계형 데이터베이스, 계층형 데이터베이스, 객체지향형 데이터베이스가 있습니다. 이 중에 가장 대표적인 데이터베이스는 관계형 데이터베이스입니다. 20년 넘게 IT 일을 하면서 계층형 데이터베이스나 객체지향형 데이터베이스를 사용하는 곳은 본적이 없습니다. 우리가 중점적으로 공부 할 데이터베이스가 바로 관계형 데이터베이스란 뜻이죠. 그리고 관계형 데이터를 다루는 가장 강력한 언어가 바로 우리가 배울 SQL입니다.
Tip. NoSQL은? 2010년 초반에는 빅데이터의 출현과 함께 NoSQL(Not Only SQL)이라는 새로운 데이터베이스도 각광받기 시작했습니다. 빅데이터는 3V란 특징을 가지고 있습니다. 3V는 Volume(양), Velocity(속도), Variety(다양성)를 뜻합니다. 쉽게 말하면 엄청난 양(Volume)의 데이터가 매우 빠른 속도(Velocity)로 매우 다양한(Variety) 형태의데이터를 이야기합니다. 이러한 3V 특징의 빅 데이터를 효율적으로 다루기 위해 사용하는 것이 바로 NoSQL 데이터베이스입니다. 관계형 데이터베이스는 정교하고 정확한 업무 처리에 강점이 있습니다. 반면에 NoSQL은 대규모 데이터를
데이터란 전통적으로 "컴퓨터를 사용해 처리할 수 있는 자료"로 정의됩니다. 하지만 이러한 사전적 의미는 현대 사회의 복잡하고 다양한 데이터 활용을 완전히 설명하기에는 부족합니다. 오늘 날, 우리의 거의 모든 활동은 데이터를 만들어내고 있습니다.
예를 들어, 스타벅스 앱으로 커피를 주문하면, 이 정보는 스타벅스의 데이터베이스에 저장되고 해당 매장으로 전달됩니다. 이와 같은 커피 주문이 단순하게 데이터의 생성과 저장으로만 그치지 않습니다. 쌓여진 주문 데이터는 고객의 선호와 행동 패턴을 분석하는 귀중한 정보가 됩니다. 마찬가지로, 대중교통 이용, 병원 예약과 진료, 소셜 미디어 활동, 온라인 쇼핑 등 일상의 수많은 활동들이 데이터를 생성하고, 이 데이터는 다양한 방식으로 활용됩니다. 소비자는 데이터를 생산하고, 기업은 이를 수집하고 분석해 다시 소비자를 위한 상품과 서비스를 제공합니다. 이처럼 현대 사회에서 데이터는 소비자와 생산자(기업) 간의 순환을 만들어주는 핵심 고리입니다. 데이터는 기업과 기관의 생존과 성장을 위한 중요 자원입니다. 데이터를 통해 수요를 예측하고, 리스크를 감지하며, 새로운 상품과 서비스를 개발합니다.
데이터의 중요성은 더 많은 기업들이 데이터 과학자와 데이터 분석가라는 직책을 만들어 가고 있는 현상에서도 드러납니다. 링크드인을 살펴보면, 데이터 과학자, 데이터 분석가, 데이터 엔지니어와 같은 직책을 달고 있는 전문가들이 생각보다 많습니다. 고전적인 데이터 관련 직군인 DBA나 데이터 아키텍쳐보다 훨씬 많은 느낌입니다.
이와 같은 상황은 기업들이 데이터 활용에 많은 고민과 투자를 하기 시작했다는 증거라 생각됩니다.
결론을 맺자면, '데이터'는 단순히 "컴퓨터를 사용해 처리할 수 있는 자료"라는 사전적인 의미를 넘어서, 기업의 발전, 사회의 변화, 개인의 일상에 필수적인 자원으로 자리 잡았습니다. 데이터는 현대 사회에서 더 이상 선택이 아닌 필수적인 자원이 되었습니다. 이 데이터를 다루기 위해, 적극적으로 활용하기 위해, 우리는 SQL이란 언어를 공부해야 합니다.
StartUP SQL에서 여러분께 가장 먼저 보여드릴 것은 바로 ERD(Entity Relationship Diagram)입니다. ERD는 데이터베이스의 설계도입니다. SQL을 배우는데 왜 데이터베이스 설계도를 알아야 할까요? 그냥 빠르게 SQL 문법만 알려주면 되는 거 아닌가 하는 생각이 드는 분도 있을 것입니다. SQL은 관계형 데이터를 다루는 언어입니다. 다시 말해, SQL을 배우는 목적의 근본은 관계형 데이터를 다루기 위함이며, 더 나아가서 데이터를 분석하고 활용하기 위함입니다. 데이터를 분석하고 활용하는 단계에 이루기 위해서는 SQL로 활용할 데이터 구조를 충분히 이해하고 있어야 합니다.
SQL을 배우는 과정에서 ERD를 계속해서 들여다보는 습관을 갖다보면, 자연스럽게 ERD와 데이터구조가 머릿속에서 빠르게 매핑이 되며, 보다 쉽게 SQL을 작성하고 배울 수 있게 될 것입니다.
이 책에서 SQL을 배우기 위해 사용할 데이터베이스의 설계도(ERD)는 다음 그림과 같습니다.
두 개의 ERD를 보여드렸는데, 하나는 논리(Logical) ERD이고 다른 하나는 물리(Physical) ERD입니다. SQL 입문자에게는 ERD 자체가 생소할 것입니다. 걱정할 필요 없습니다. ERD를 이해하기 위해서, 지금은 아래 내용만 이해하면 됩니다.
각각의 네모 하나 하나가 데이터 집합입니다.
네모의 가장 위에는 데이터 집합의 이름이 표시되어 있습니다.
네모 안에는 해당 데이터 집합이 갖고 있는 정보들이 나열되어 있습니다.
네모를 연결하는 선들이 있는데, 네모 간에 관계가 있다는 뜻으로만 이해하면 됩니다.
논리(Logical)는 우리가 쉽게 이해할 수 있는 언어로 작성된 설계도입니다.
물리(Physical)는 실제 데이터베이스에 구현된 실제 명칭을 사용한 설계도입니다.
위 내용을 토대로 논리 ERD를 간단히 읽어보면 다음과 같습니다.
매장, 주문, 회원, 주문상세, 상품과 같은 데이터 집합이 있구나.
매장 데이터집합에는 매장ID, 매장명, 매장면적, 매장운영유형과 같은 정보가 있구나.
주문에는 주문번호, 주문일시, 회원ID, 매장ID와 같은 정보가 있구나.
매장과 주문간에 선이 있는 것을 보니 관계가 있구나.
이런식으로 논리ERD를 한번씩 쭉 읽어 보시기 바랍니다. 그리고 논리ERD의 각각 명칭들이 물리ERD에 표시된 이름으로 데이터베이스에 구현된다는 정도만 알고 넘어가시면 됩니다.
물리ERD는 데이터베이스에 구현될 데이터 집합의 실제 명칭을 사용한 설계도입니다. 물리ERD에 사용한 용어는 다음 그림과 같은 명명규칙(Naming Rule)을 사용했습니다. 물리ERD의 이해를 위해 참고하시기 바랍니다.
우리는 SQL 연습을 위해, 여기서 보여드린 ERD와 같은 데이터베이스를 각자 PC에 만들 것입니다. 자신만의 연습용 데이터베이스를 구성해 마음껏 SQL을 연습하고 활용해보시기 바랍니다.