데이터베이스(Database)와 관계형 데이터베이스(RDBMS)
🚀 학습 목표
- **데이터베이스(Database)**의 개념을 이해합니다.
- **관계형 데이터베이스 (RDBMS)**가 무엇이며, 왜 사용하는지 이해합니다.
- **테이블(Table)**이 무엇인지 이해하고, Column, **Row**를 설명할 수 있습니다.
- 테이블(Table)의 관계 - One to One, One to Many, Many to Many 예시를 나열할 수 있습니다.
- Primary Key 와 Foreign Key 의 관계를 설명하고, 테이블에 지정할 수 있습니다.
- **관계형 데이터베이스**와 **비관계형 데이터베이스**의 차이를 알 수 있습니다.
- ERD 구성도로 데이터 관계를 모델링 할 수 있습니다.
01. Database란?
데이터베이스는 우리가 사용하는 정보의 총 집합이다.
위 페이지는 스타벅스 페이지이다.
만약 우리가 "나이트로 바닐라 크림" 이미지를 클릭했다면, 컴퓨터에서는 어떤 반응이 일어날까?
데이터베이스는 컴퓨터 시스템에 저장된 정보나 데이터를 모두 모아놓은 집합을 의미한다.
즉, 데이터가 저장된 하드웨어를 부르는 말이기도 하면서, 데이터베이스를 관리하는 시스템 자체를 통칭한다.
데이터들은 DBMS(Database Management system)으로 제어 및 관리한다.
주로 사용 많이 되는 것은 MySQL, Oracle 등이 있다.
02. Dadabase를 사용하는 이유
1. 데이터를 오랜 기간 저장 및 보존하기 위해서 데이터베이스를 사용한다.
메모리에 존재하는 데이터는 오래 보존이 되지 않으므로, 데이터를 오랜기간 보존하려면 데이터베이스를 사용해야한다.
2. 데이터를 체계적으로 보존하고 관리하기 위해 사용한다.
필요할 때 언제든 내가 원하는 자료를 쉽게 읽어낼 수 있어야만 의미 있는 정보이다.
데이터베이스에는 데이터가 아무렇게나 어질러 저장되지 않고 체계적으로 정리되어 입력된다.
그래야 데이터를 다시 찾을 때 어렵지 않게 정보를 얻을 수 있다.
03. 관계형 데이터베이스 (RDBMS)
- 관계형 데이터베이스란?관계형 데이터 : 데이터가 서로 상호 관련성을 가진 형태로 표현한 데이터
- RDBMS으로 관계형 데이터 모델에 기초를 둔 데이터베이스 시스템을 말한다.
1. 모든 데이터들은 Column과 Row 형태의 2차원 테이블로 표현할 수 있다.
2. 테이블의 각 행(row)는 자신만의 고유 키(Primary Key)가 있다.
- 외부의 요인에 의해서 요소 내용들은 언제든지 바뀔 수 있다. 데이터 변경의 유무와 관계없이 데이터를 표시하는 고유 키가 반드시 필요하다.
- 각 행은 다른 행과 겹치지 않는, 하나의 데이터만 정확하게 지칭할 수 있는 고유한 번호를 가지고 있다.
- 고유 키를 통해 특정 행을 찾거나, 참조(reference)할 수 있다.
3. 각각의 테이블들은 서로 상호 관련성을 가지고 서로 연결될 수 있다.
각각의 테이블들은 서로 상호 관련성을 가지고 서로 연결될 수 있다.
04. 상호관련성
관계는 크게 3가지가 존재한다.
- 일대일 관계
- 일대다 관계
- 다대다 관계
1. 일대일 관계(One to One)
관계를 열(Column)만 보고도 데이터를 확인할 수 있다.
2. 일대다 관계(One to Many)
일대다의 좋은 예시로는 상품리뷰 가 있다.
사용자 한 명이 여러개의 상품리뷰를 남길 수 있다.
일대다의 관계에서 가장 중요한 것은 일쪽이 아닌 다쪽에 Foreign Key를 두는 것이다.
3. 다대다 관계(Many to Many)
다대다에서는 중복되는 데이터가 많기 때문에, 어떻게 테이블 관리를 해야 데이터가 중복되지 않은채 체계적으로 테이블을 만들 수 있을 지 고심해봐야 한다.
이때 필요한 개념이 "정규화(Normalization)"이다.
왜 테이블을 나눠야 되는 것일까?
이유는 간단하다. 데이터가 중복되기 때문이다. 중복되는 데이터를 제거하고 중간 테이블을 만들어서 관리하는 과정이 "정규화"이다.
중간 테이블에 대한 예를 들어보자면, 다음과 같다.
처음 테이블과 비교해보자. Books 한 개였던 테이블을 Authors, author_books, Books 3개로 쪼갰다. author_books라는 중간 테이블을 만듦으로써 Authors 와 Books를 중복되는 데이터없이 연결시킬 수 있게 된 것이다. 이렇게 정규화 과정을 거치면 책과 저자에는 중복되는 데이터가 더이상 없어지게 된다.
중간 테이블에서 서로를 다 참조하면 데이터를 효율적으로 관리할 수 있다. 즉, 양쪽에서 일대다의 관계를 형성하면, 유지보수가 수월하다. 다시 말해, 중간테이블에 Foregin Key(외래 키)를 달아두고 작가와 책 사이의 일대다 관계를 성립하면 된다.
05. 정리
하나의 많은 정보를 저장하게 된다면, 동일한 정보들이 불필요하게 중복외어 저장될 가능성이 높다. 그렇게 되면, 더 많은 디스크를 사용하게 되고, 잘못된 데이터가 저장될 가능성이 높아진다.
따라서, 여러 테이블에 정보를 나누어서 저장하고, 필요한 테이블끼리 연결시키면 보다 더 효율적으로 데이터를 관리할 수 있게 된다.
- 중복된 데이터 저장 X → 디스크 효율적으로 사용
- 서로 같은 데이터지만 부분적으로만 내용이 다른 데이터가 생기는 문제는 없어짐