
'데이터베이스(DB)가 뭐야?!'라고 물어본다면 말문이 턱! 막히겠지만, 우리는 빅테이터, 데이터베이스 등등 비슷한 단어를 엄청 많이 듣고 살며 엄청 익숙한 단어 중 하나인것은 사실인 것 같다.
DB는 한마디로 컴퓨터 시스템에 저장된 정보 또는 데이터의 집합을 의미
컴퓨터에 Application에서는 데이터가 메모리 상에서 존재한다. 메모리에 존재하는 데이터는 보존이 되지 않기 때문에 애플리케이션을 종료하면 메모리에 있던 데이터가 다 없어진다!

이러한 점(데이터가 다 날라가는...😂)을 막기 위해 DB를 이용한다!
보통 DB는 DBMS(DataBase Management System)라고 불리는 것으로 제어한다. (Oracle, MySQL 등..)
깊이 들어가면 select, insert, update 등등.. 많은것이 있지만.. 오늘은 겉만 핥고 가도 충분!!👌
이름 그대로
관계형 데이터 모델에 기초를 둔 데이터베이스 시스템을 말한다. 관계형 데이터란 데이터를 서로 상호관련성을 가진 형태로 표현한 데이터를 말한다.
| Primary Key (Id) | name | field |
|---|---|---|
| 1 | code_sign | fullstack |
| 2 | tory | Frontend |
column)과 로우(row)를 가지고 있다.Primary Key)를 가지고 있다.Primary key를 이용하여 해당 로우를 인용(reference)하게 된다.그리고 이러한 관계형 데이터베이스의 관계는 연결된 형태에 따라 총 3가지로 나눌 수 있다.
❓테이블들을 연결?
일단 테이블을 연결하기 위해 Foreign Key(외부키)라는 개념을 사용하여 주로 연결한다.
연결 이유는 하나의 테이블에 모든 정보를 다 넣으면 동일한 정보들이 불필요하게 중복되어 저장되기 때문!
바꿔말하자면,
normalization(정규화)라고 한다!😎물론! 안전하다!
예시를 하나 들자면,
내가 이 글을 보고 있는 분께 1억을 준다고 가정하자. (어디까지나 가정!!)
그럼 계좌이체의 실행 순서는
근데 만약, 1번까지만 실행되고, 2번을 처리하는 과정에서 오류가 나서 내 돈 1억만 날라간 상황이라면?! 당연히 안되기 때문에 트랜잭션(Transaction)이라는 개념이 존재한다. (휴...😭)
트랜잭션(Transaction)이란 일련의 작업들이 마치 하나의 작업처럼 취급되어서 모두 다 성공하거나 아니면 모두 다 실패하는걸 이야기한다.
ACID는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다.
이렇게 4가지가 있는데, 해당 속성과 비관계형에 대해서는 나중에 따로 블로깅하겠다!(꼭...🤣🔫)
그래서 오늘은 Starbucks의 음료에 대해 Modeling을 해보았다..(쉽지 않았다...🔥)

우리팀이 정말 있는 머리 없는 머리 쥐어짜서 열심히 만들었지만... 이미지에서 보다 시피 엄청난 지적의 향연들..💣💣💣
처음에 짰을때 Aquery ERD tools에서 짰었는데
Foreign이 한개 이상 뻗어나가지 않는 거에서 멘붕...hub 테이블에서 모든 정보를 받아버리자!'라고 생각카테고리 테이블과 알러지 테이블을 각각 써주는 것이 아닌, 컬럼은 name으로 하고, A메뉴가 2개의 알러지 정보를 가진다면 알러지 테이블에 A메뉴에 대한 데이터가 2개 넣으면 된다!👍👍애초에 생각과 이해가 잘못된 모델...
하지만!
모르기 때문에 성장할 수 있는것처럼, 이제부터라도 DB열등생에서 DB우등생이 되면 된다!!

(근데 왜 자꾸 눈물이... 옾눞룸곡....)
1:n, n:n!!Boolean이라면 TINYINT를 쓰기!is_ or has_를 붙여주기!DECIMAL 자료형을 이용!DB는... 말할땐 쉽지만.. 짤때는 어렵다...열등생은... 우등생이 되기 위한 과정일뿐...!!!!! (내 존재 화이팅🔥)
ㅋㅋㅋㅋ움짤 넘 웃기네요 성준님 화이팅