둘셋 개발!

관계형 데이터베이스란? 본문

데이터베이스

관계형 데이터베이스란?

23 2021. 11. 3. 18:13

설명을 하기전 필요성부터 느껴보자면

 

-topic(테이블)

id title author profile
1 h2db egoing developer
2 mysql egoing developer
3 oracle hwa database administrator

이러한 테이블이 있다고 가정하자!

 

 

1, 2행의 author과 profile이 중복된다

중복이 있다는 것은 개선할 무언가가 있다는 것이다.

 

만약, 행의 갯수가 1억개이고 egoing과 developer이 아주 큰 데이터라면?

그리고 'egoing'을 'ego+ing'으로 수정해야 하게 되는 상황이 온다면? 

 


따라서 유지보수하기 쉽고 중복을 없애기 위해 테이블을 분리해야한다

이렇게!

 

-author(테이블)

id name profile
1 egoing developer
2 hwa database administator

 

-topic(테이블)

id title author_id
1 h2db 1
2 mysql 1
3 oracle 2

 

이렇게 테이블을 분리하게 되면

1. 데이터의 중복이 사라짐

2. 만약 egoing의 profile이 바뀐다면 author테이블에서 한번만 고쳐도, topic테이블에 영향을 줄 수 있음

3. 만약 동명이인인 또다른 egoing이란 사람이 우연히 profile이 developer이라면 id로 구분가능

 

 

하지만 이렇게 테이블을 분리하게 되면 topic테이블의 id=2인 profile을 찾을 때 테이블 2개를 비교해가면서 확인해야 하는 불편함이 있다.

 


 

여기서 관계형 데이터베이스가 등장한다

저장은 분산하면서 보는 건 합칠 수 있게 한 것이 관계형DB이다.

JOIN문법을 쓰면 다음과 같이 볼 수가 있다.

 

EX) select topic.id, title, name, profile from topic left join author on topic.author_id = author.id

id title name profile
1 h2db egoing developer
2 mysql egoing developer
3 oracle hwa database administator

 

 

(참조:생활코딩)