데이터베이스
관계형 데이터베이스란?
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 |
(참조:생활코딩)