데이터베이스란? 컴퓨터에 기록되어 있는 데이터의 집합이다.
데이터베이스라는 개념은 특정 데이터를 확인하고 싶을때 간단하게 찾아낼 수 있도록 정리된 데이터의 집합을 말한다.
크게 관계형 데이터베이스(RDBMS)와 "NoSQL"로 명칭되는 비관계형(Non-relational) database가 있다.
Q. 데이터베이스를 사용하는 이유는?
- 데이터를 오랜기간 저장 및 보존하기 위해
- 데이터를 체계적으로 보존하고 관리하기 위해
관계형 데이터베이스(RDBMS)란?
말그대로 데이터 사이의 관계에 기초를 둔 데이터베이스 시스템.
📍 모든 데이터는 2차원 테이블(table)로 표현할 수 있다.
📍 각 로우는 저만의 고유 키(Primary Key)가 있습니다.

Q. Primary Key란?
A. 각 로우는 언제나 고유한 번호를 갖고 있는데
이를 고유 키(Primary Key)라고 한다.
위 표를 보면 테이블의 가장 첫 컬럼은 언제나 id 이다.
Mybook 테이블 가운데 개미라는 책은
id가 4인 데이터 이고 primary key가 4번
이 Primary Key를 통해서 특정 로우를 찾거나, 인용(reference)할 수 있다.
😎 두 테이블이 관계형일때 무조건 세가지중 한가지 관계에 해당한다.
테이블A row와 테이블B row가 정확히 일대일 매칭이 되는 관계
( ex ) 한국사람은 주민등록 번호를 단 한 개만을 갖는다. )
.png)
Users는 고유 id, Name 컬럼이 있고
identification numbers는 고유 id와 주민번호, user_id 라는 주민번호가 누구의 것인지 알려주기 위한 컬럼이 있다.
📍 user_id 컬럼은 users 테이블의 id(PK)를 참조한다.
.png)
다른 테이블의 PK를 참조한 컬럼에 입력되어 있는 숫자는
FK( Foreign Key) 외래키라고 한다.
📍 user_id 는 모두 FK 이다.
테이블 A의 로우가 테이블 B의 여러 로우와 연결이 되는 관계
.png)
위 표를 보면
어떤 동물의 주인이 누구인지는 pets 테이블의 user_id를 보면 알 수 있다.
Users 테이블의 로우 하나는 Pets 테이블의 여러 로우와 연결되어있고
Pets 테이블의 로우 하나는 Users 테이블의 로우 하나와 연결되어 있다.
이렇게, 한 테이블의 로우 하나가 다른 테이블의 여러 로우와 연결되는 경우가 One To Many / 1:N 관계
테이블 A의 여러 로우가 테이블 B의 여러 로우와 연결이 되는 관계
( ex ) 공동집필로 한 책에 작가가 여럿인 경우, 한 작가가 여러 책은 쓴 경우 )
.png)
위 표는 공동집필한 작가들과 책들을 정리한 테이블이다.
하지만 같은 데이터가 반복적으로 중복이 된다.
이렇게 된다면, 책 한 권이 늘어날 때마다, 작가의 수에 맞춰서 똑같은 데이터를 또 여러번 저장해 주어야 하는 문제가 발생한다.
이 문제를 Foreign Key를 이용해서 해결할 수 있다.
.png)
.png)
이렇게 두 테이블이 서로 각자 다른 테이블의 여러 데이터와 연결 될 때에는 두 테이블에 속한 데이터의 조합을 입력하기 위한 중간 테이블 이 하나 생성된다. Many To Many / N:N 관계
❌ 아래 표는 잘못된 컬럼이다.
데이터 베이스에 이런식으로 저장될 수는 없다.
.png)
Q. 위 표가 잘못된 이유는?
A. 정규화 제1법칙을 어기기 때문
테이블의 행 하나에는 딱 하나의 데이터만 들어가야 한다.
Q. 테이블과 테이블을 연결하는 방법은?
A. Foreign key(외부키)를 사용하여 연결한다.
테이블A의 참조할 PK를 테이블B의 FK로 연결
Q. 왜 테이블들을 연결하지?
- 중복된 데이터를 저장하지 않음으로 디스크를 더 효율적으로 쓰수있다.
- 서로 같은 데이터이지만 부분적으로만 내용이 다른 데이터가 생기는 문제가 없어진다.
- 이것을
normalization(정규화) 이라고 한다!!.