RDBMS
데이터베이스란?
- 데이터베이스란 데이터를 저장하는 시스템이다.
- 데이터를 저장 및 보전, 관리하기 위해서 데이터 베이스를 사용한다.(<-> 메모리)
- 관계형 데이터베이스(RDBMS)와 “NoSQL”로 명칭되는 비관계형(Non-relational) 데이터베이스가 있다.
관계형 데이터베이스(RDBMS, Relational DataBase Management System)
관계형 데이터
란 데이터를 서로 상호관련성을 가진 형태로 표현한 데이터이다. 그리고 데이터는 테이블로 표현된다.
- 테이블끼리의 연결에는 크게 3가지 종류가 있다.
- One To One : 테이블 A의 로우와 테이블 B의 로우가 정확히 일대일 매칭이 되는 관계
ex) users and user_profiles
- One To Many : 테이블 A의 로우가 테이블 B의 여러 로우와 연결이 되는 관계
ex) 각 고객은 여러 제품을 구매할 수 있지만 구매된 제품의 주인은 오직 한 고객 뿐이다
- customer 테이블과 order 테이블이 One To Many의 관계에 있다.
- order 테이블의 customer_id 컬럼이 customer 테이블의 primary key를 foreign key로 가지고 있다.
- order 테이블이 customer 테이블을 참조한다.
- many To Many : 테이블 A의 여러 로우가 테이블 B의 여러 로우와 연결이 되는 관계
ex) 책은 여러 작가에 의해 쓰일 수 있고 작가들은 여러 책을 쓸 수 있다
- 중간테이블에는 양쪽 테이블에서 참조해온 id의 조합이 저장된다.
- id의 조합 뿐만 아니라 추가적인 데이터도 저장될 수 있다.
어떻게 테이블과 테이블을 연결하는가?
- Foreign key(외부키)라는 개념을 사용하여 주로 연결한다.
- 앞서 본 one to one 예에서 user_profiles 테이블의 user_id 컬럼은 users 테이블에 걸려있는 외부 키라고 지정한다.
- 즉, 데이터베이스에게 user_id의 값은 users 테이블의 id 값이며 그러므로 users 테이블의 id 컬럼에 존재하는 값만 생성될 수 있다.
왜 테이블들을 연결하는가?
- 중복된 데이터를 저장하지 않음으로 디스크를 더 효율적으로 쓸 수 있다.
- 서로 같은 데이터이지만 부분적으로만 내용이 다른 데이터가 생기는 문제가 없어진다.
- 이것을 normalization(정규화)이라고 한다.
스타벅스 모델링
스타벅스의 음료 정보를 모델링해보았다. (모델링 도구 사이트)
- 필수 구현 : 음료 이름, 카테고리, 영양 정보, 알러지, 음료 이미지, 음료 설명, 신상 여부
- 구현 제외 사항 : 프로모션, 음료 사이즈
댓글남기기