[CS]Database

sujin·2022년 8월 23일
1

TIL

목록 보기
10/14
post-thumbnail

Database

데이터베이스라고 하면 뭔가 어렵고 복잡해 보이지만, 개념 자체는 그렇게 어렵지 않다.

데이터베이스는 컴퓨터 시스템에 저장된 데이터를 모두 모아 놓은 집합을 의미한다. 말 그대로 데이터를 만히 모아놓은 베이스라는 뜻이다. 쉽게 말해 데이터를 저장하는 곳을 말한다.

그렇다면 데이터베이스는 어디에 저장할까?

실제 데이터베이스는 커다란 기계에 수많은 양의 데이터, 숫자, 문자 등이 들어있어 물리적인 공간을 많이 차지 하기 때문에 넓은 곳에 건물을 지어서 관리한다.

그리고 데이터베이스의 내부는 테이블이나 엑셀 표와 비슷하게 생겼으며 그곳에 데이터들이 저장된다.


서버에 데이터를 저장하지 않는 이유는?

서버보다 DBMS가 더 효율적으로 데이터를 관리하기 때문이다.
또한, 각 서버가 데이터를 모두 갖고 있으면, 일관되게 관리하기가 어렵다.

DBMS 란?

  • 데이터베이스를 관리하고 운영하는 소프트웨어를 말한다.
  • 다양한 데이터가 저장되어 있는 데이터베이스는 여러 명의 사용자나 응용 프로그램과 공유하고 동시 접근이 가능해기 때문에 DBMS로 관리하는 것이다.
  • DBMS의 종류로는 MySQL, 오라클(Oracle), SQL 서버, MariaDB 가 있다.

관계형 데이터베이스(RDBMS)

관계형 데이터베이스는 대부분의 데이터베이스를 말하며, 데이터를 서로 상호 관련성을 가진 형태로 표현하는 것을 말한다.

관계형 데이터베이스로는 MYSQL,PostgreSQL,Oracle,MSSQL가 있다.

  • 2차원 테이블로 표현된다.
  • 테이블들은 서로 상호 관련성이 있다.
  • 테이블들의 각 행은 고유 키(PrimaryKey) 가 있다.
  • 고유 키(PrimaryKey)를 통해 특정 열을 검색 하거나 참조 할 수 있다.

상호관련성 - 관계유형

위에서 테이블들은 서로 상호 관련성이 있다고 했는데 그 종류를 세가지 로 나눌 수 있다.

One To One (일대일)

하나의 A데이터는 하나의 B데이터와 연결되며, 하나의 B데이터 또한 하나의 A데이터와 연결되는 것을 말한다.
ex) 한 사람에게는 하나의 주민등록번호만 존재하고, 하나의 주민등록번호는 한 사람에게만 부여된다.

One To Many (일대다)

하나의 데이터가 여러 개의 데이터를 가지는 것을 말한다.
ex) 한 사람이 여러 마리의 반려동물을 키울 수 있다.

Many To Many (다대다)

하나의 데이터가 여러 데이터를 가질 수 있고 또 그에 해당하는 데이터들이 여러 데이터를 가질 수 있는 것을 말한다.
ex) 여러 사람이 책을 만들 수 있고 그 책도 여러 작가를 가질 수 있다.

Many To Many (다대다) 의 테이블의 경우 한 행에 여러 데이터가 들어가는 경우가 발생하는데, 테이블의 행 하나에는 딱 하나의 데이터만 들어가야한다.

하지만 또 여러 데이터가 중복되어 나타나는 경우는 발생 해서는 안되기 때문에, 이때는 Foreign Key(외부키)를 사용해여 중복된 데이터를 줄일 수 있다.

Many To Many (다대다) 의 경우에는 중간 테이블 을 생성해주고, Foreign Key(외부키)를 사용해여 연결해 줄 수 있다.


스타벅스 서비스 모델링

위에서 배운 데이터베이스 개념을 바탕으로 스타벅스의 간단한 서비스 모델링을 해보았다.

  • 리뷰 전

  • 리뷰 후

문제점 : 음료와 영양성분이 일대일 관계라고 생각해서 영양성분의 PK가 음료의 PK와 같다고 생각했는데, PK는 말그대로 고유키 이기 때문에 A의 고유키와 B의 고유키가 될 수는 없다.
해결방법 : 음료에 영양성분을 참조할 수 있는 FK를 만들고 그것을 영양성부 테이블과 연결 시켜준다.
개선점 : 1) 상품이미지가 하나 일 경우만 생각했는데 이미지가 여러개 일 때의 경우도 생각해 볼 수 있다.
2) 신상품 여부도 단순히 boolean으로만 판단했는데 신상품의 기준을 어떻게 잡을지 구체적으로 생각해 봐야한다. (boolean값으로 처리한다면 true -> false로 어떻게 전환 시킬 것인지 그 기준이 명확해야한다. )


마무리✨

프론트하길 잘했다.🤗

profile
개발댕발

0개의 댓글

관련 채용 정보