오늘은 데이터베이스에 대한 기초 개념을 배웠다.
처음 접해 조금 어려운 감은 있지만, 데이터를 다루는게 얼마나 중요한 일인지 그리고 모델링은 ㅇ떤 방향으로 해야하는지 조금 익힐 수 있는 시간이었다.
데이터베이스는 데이터를 저장하고 보존하는 시스템이다.
application에서 데이터는 메모리 상에 존재하고, 메모리에 존재하는 데이터는 보존되지 않는다. 이로 인해 application을 종료하면 데이터는 다시 읽을 수 없다.
그렇다면 어떻게 디어터를 보존할수 있을까?
데이터를 장기간 동안 저장하고 보존하기 위해서는 데이터베이스가 필요하다.
일반적으로 데이터베잉스는 관계형 데이터베이스(RDBDMS)와 "NoSQL"로 명칭되는 비관계형 데이터베이스가 있다.
관계형 데이터베이스(RDBMS)란 관계형 데이터 모델에 기초를 둔 데이터베이스 시스템을 말한다.
My SQL,Postgres, Oracle DB 등이 그 예다.
관계형 데이터는 데이터를 상호 관련성을 가진 형태로 표현한 데이터다.
2차원 테이블(table)로 표현 되며, 각각의 테이블은 컬럼과 로우로 구성된다.
각 테이블은 서로 상호관련성을 갖고 연결된다.
테이블의 종류에는 one to one , one to many, many to many 가 있다.
one to one: 테이블 A의 로우와 테이브 B의 로우가 정확히 일대일 매칭이 되는 관계
one to many: 테이블 A의 로우가 테이블 B의 여러 로우와 연결이 되는 관계
many to many:테이블 A의 로우가 테이블 B의 여러 로우와 연결이 되는 관계
이러한 테이블들은 Foreign Key(외부키)라는 개념을 사용하여 연결된다.
one to one의 사진을 예로 보자.
user profile테이블의 user_id 컬럼은 users 테이블에 걸려있는 외부키다.
즉 데이터베이스에게 user_id 값은 users테이블의 id 값이고, users 테이블의 id컬럼에 존재하는 값만 생성 될 수 있다.
테이블 한 곳에 모든 데이터가 저장하게 될 경우 불필요하게 정보들이 중복 저장되고, 더 많은 디스크를 사용하게 되며, 잘못된 데이터가 저장이 될 수 있다. 그렇기 때문에 테이블을 여러 곳에 나누어 데이터를 담는 것이다.
테이블을 나누어 저장한 후 필요한 테이블끼리 연결 시키면 앞서말한 문제들이 사라지며, 이를 정규화(normalization)이라고 한다.