[TIL] # 23 Database

ddalkigum·2020년 12월 22일
3

TIL

목록 보기
23/50
post-thumbnail

Database

DB는 여러사람이 공유하여 사용하는 것을 목적으로 체계화해 통합, 관리하는 데이터의 집합
작성된 목록으로써 여러 응용 시스템들의 통합된 정보들을 저장하여,
운영할 수 있는 공용 데이터의 묶음

여기서 중요한 키워드는 공유 이다

여러 사람과 협업을 하고 같이 일하면서 공통된 데이터베이스를 통해
공통된 정보를 공유 하는것이 데이터 베이스의 중요한 역할 중 하나이다

흐름

우선 데이터베이스의 시작은 1960년대 부터 입니다

계층 데이터베이스

트리형태의 DB, 모델에 의존하고 1대 다수의 관계만을 허용

네트워크 데이터베이스

다수의 관계를 허용하는게 더 유연한 모델

탐색형 데이터베이스

데이터 저장 및 조작을 위해 사용되던 최초의 시스템

위 3가지 초기 시스템의 단점은

간편하기는 하나 유연성이 부족하다 였습니다
그 이후 등장하는것이 오늘 중점적으로 찾아볼 관계형 데이터베이스 입니다

1980년대 관계형 데이터베이스가 등장하고,
1990년대 객체지향형 데이터베이스가 등잡합니다

그 이후 인터넷이 성장하면서 비정형 데이터에 대한 빠른 속도와 프로세싱을
요구하게 되었고, NOSQL ( Not Only SQL ) 이 주목받기 시작합니다

최근에는 클라우드 DB와 자율구동 DB가 주목받고 있습니다


RDBMS

Relational DataBase Management System 의 약자로
관계형 데이터베이스 입니다

관계형 데이터베이스는 데이터베이스의 한 종류로 현재는 가장 많이 쓰이는 데이터베이스입니다
데이터 분류, 정렬, 탐색 속도가 빠르다

2차원 테이블을 사용하며,
row, column을 이용해 데이터를 정의하고 설명 합니다

관계형 데이터베이스에서 중점은 관계를 맺고 있는 것인데

one to one, one to many, many to many 이 세가지를 통해
테이블끼리 관계를 가집니다

One To One

1:1로 관계를 맺는 것이고,

OneToOne의 관계를 맺는 경우는 컬럼값이 너무 많아 복잡할때
혹은 컬럼끼리 성질에 맞게 나눌때
테이블을 나누어 사용합니다

OneToOne으로 설정해 줍니다

One To Many

Django 에서는 ForeignKey를 이용해서 일대다 관계를 형성합니다

영화를 예로 들면 한 영화에 출연하는 배우가 여러명인데
actor의 id값을 가지고 와서 movies에 사용하는 것으로

무비 하나에는 여러명의 배우의 id를 사용하여 출연 시킬 수 있습니다

Many To Many

다대다 관계입니다

대표적인 예로는 좋아요가 있는데,

여러개 영화에 한명의 유저만이 좋아요를 누를 수 있는게 아니고,
여러개의 영화에 여러명의 유저가 좋아요를 누를 수 있는 관계입니다

관계에 대한 생각을 깊게 할 수록 복잡하다는 생각이 많이 들어서
너무 복잡하게 생각하지 말고 오히려 단순하게 보는게 낫겟다
생각하니까 이해가 갔습니다


Starbucks

스타벅스의 모델링을 진행해보고, 어떤 걸 중심으로 모델링을 했는지
진행 하겠습니다

모델링 전 알아볼 것

우선 스타벅스 페이지에 어떤 종류의 음료가 있고,
음료안에는 어떤 항목이 포함 되어있는지 살펴봐야 합니다

크게 카테고리에 따라서 나뉘고, 그 이후 카테고리에 따른 음료들이 있습니다

카테고리 - 음료

하나의 카테고리안에 여러개의 음료가 존재하지만,
스타벅스에서는 하나의 음료가 여러개의 카테고리를 가지는 경우는 없습니다

음료의 정보

상세페이지에 있는 영양정보, 사진, 설명문, 사이즈 등은 모두 드링크테이블에 넣어
관리하는게 나을 것 같아서 한 테이블에 모두 넣었습니다

알러지 유발정보

스타벅스에서 알러지 유발 음식은 크게 우유, 대두, 밀 로 나뉘는데

음료에서 여러개의 알러지 유발물질을 갖게 되는 경우가 있고,
알러지 또한 여러 음료에 포함이 되기때문에

중간 테이블을 추가해 다대다의 관계를 형성해 주었습니다

영양정보

영양정보 같은 경우는 사이즈에 따라서 영양정보다 다르게 나온다면
칸을 나누어 일대다의 관계를 형성해주는게 맞겟지만

스타벅스에서는 하나의 데이터만을 제공해 주기 때문에
중복값이 없습니다 그래서 모두 넣는게 낫겠다 생각했습니다

이제 전체적인 모습은 이렇습니다

음료에 관한 내용을 담아본 ERD입니다


참고자료

아래 글들을 읽으면서 NOSQL이라는 개념을 좀더 확실히 알았고,
많은 데이터베이스 중에 내가 어떤 데이터베이스를 사용해야 하는지 생각해보시면
좋을 것 같아서 링크 남겨 놓겠습니다

데이터 베이스 관련

https://www.oracle.com/kr/database/what-is-database/

관계형 DB와 NOSQL관련 마이크로소프트

https://azure.microsoft.com/ko-kr/overview/nosql-database/

profile
딸기검 -본캐🐒 , 김준형 - 현실 본캐 🐒

4개의 댓글

comment-user-thumbnail
2020년 12월 22일

준형님 덕분에 터미널 해결! 오늘도 파이팅!

1개의 답글
comment-user-thumbnail
2020년 12월 24일

오올~~ 준형님~~👀👋🏻👋🏻👋🏻
데이터베이스 설명이 눈에 쏙쏙 들어와요 ㅋㅎ
역시 코딩이 취미 😬😆👍🏻

1개의 답글