오늘도 개발

관계형 데이터베이스(Relational Database) 본문

웹 프로그래밍/DB

관계형 데이터베이스(Relational Database)

Sueeeeeee 2022. 6. 27. 10:18

1. 데이터베이스(Database)란?

데이터를 모아둔 것을 데이터베이스라고 한다.

데이터베이스와 데이터베이스 관리 시스템(DBMS, Database Management System)을

통틀어 데이터베이스라고 부르기도 한다.

 

데이터베이스를 사용하면 데이터를 더 오랜기간 보존하며 체계적으로 관리할 수 있다.

2. 관계형 데이터베이스(RDBMS)란?

관계형 데이터베이스(Relational Database Management System)

데이터를 테이블(표) 형태로 저장하고, 각 테이블을 연결해서 관리하는 데이터베이스 

 

비관계형 데이터베이스(Non-relational Database Management System, NoSQL)

테이블을 사용하지 않는 모든 데이터베이스

3. Table, Column, Row

관계형 데이터베이스는 테이블로 구성되며,

각 테이블은 Row(행)와 Column(열)으로 구성된다.

Column은 테이블의 항목이고 Row는 항목들의 값이다.

 

아래 테이블에서 Colum은 id, name, salary이고

첫번째 Row는 1, Sue, 1000이다. 

 

각 Row는 저만의 고유 키(Primary Key)를 갖는다.

위 테이블에서 id Column이 Primary Key를 저장하는 Column이다.

 

테이블의 한 칸에는 데이터가 하나만 들어가야 한다.

4. 테이블의 관계

One to One(일대일)

테이블 A의 row가 테이블 B의 row와 일대일로 연결되는 관계.

한 row는 다른 테이블의 row 하나하고만 연결된다.

 

예) 한 사람은 한 주민등록번호만 가질 수 있음

 

출처 : 위코드 Precourse - 2 Database 참고자료

여기서 Identification numbers 테이블의 user_id column에는 Users 테이블의 고유 키(Primary Key)가 들어있다.

이 때 user_id 칼럼은 Users 테이블의 id를 참조한다고 한다.

user_id 칼럼에 들어간 id는 외래키(Foreign Key)라고 부른다.

 

출처 : 위코드 Precourse - 2 Database 참고자료

정리하자면 Primary Key는 한 테이블에서 row가 갖는 고유한 번호이고,

Foreign Key는 다른 테이블의 Primary Key를 참조하는 칼럼이 갖는 값이다.    

One to Many(일대다)

테이블 A의 row가 테이블 B의 여러 row와 연결되는 관계.

한 row는 다른 테이블의 row 여러 개와 연결될 수 있다.

 

예) 한 사람은 여러 반려동물을 키울 수 있음, 한 반려동물은 한 사람만 주인으로 가질 수 있음

 

출처 : 위코드 Precourse - 2 Database 참고자료

Many to Many(다대다)

테이블 A의 여러 row가 테이블 B의 여러 row와 연결되는 관계.

 

예) 한 작가는 여러 책을 쓸 수 있음, 한 책은 여러 작가를 가질 수 있음

 

출처 : 위코드 Precourse - 2 Database 참고자료

author_books 테이블은 Authors와 Books 테이블의 데이터 조합을 담고있다.

이렇게 다대다 관계의 두 테이블을 연결하기 위해서는 중간 테이블(association table)이 필요하다.

 

5. 관계형 데이터베이스의 장점

관계형 데이터베이스의 장점은 중복 없이 데이터를 저장할 수 있다는 것이다.

 

앞서 살펴본 Many to many 관계 예시의 세 테이블을 합치면 사실 아래의 테이블과 같다.

Author 칼럼에서는 김코드가 두 번 반복되고, Title 칼럼에서도 각 제목이 여러 번 반복되어 등장한다.

 

출처 : 위코드 Precourse - 2 Database 참고자료

하지만 테이블을 분리하면 작가 정보는 Authors 테이블에서만 한 번씩,

책 정보는 Books 테이블에서만 한 번씩 쓰면 된다. 

또한 작가 정보는 Authors 테이블에서만 관리하고 책 정보는 Books 테이블에서만 관리하면 되므로

데이터를 잘못 저장할 가능성도 낮아진다.

 

관계형 데이터베이스를 설계할 때 데이터 중복이 최대한 일어나지 않게 만드는 것을

정규화(Normalization)라고 한다.

 

 

'웹 프로그래밍 > DB' 카테고리의 다른 글

LEFT JOIN 시 행 중복 문제 해결하기  (0) 2022.10.04
GROUP BY, 집계함수  (1) 2022.10.03
테이블 JOIN 방법(INNER JOIN, OUTER JOIN)  (0) 2022.10.02
트랜잭션(Transaction)  (0) 2022.06.28
SQL 기초  (0) 2022.03.30