Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 커밋 되돌리기
- Git
- 기본키 전략
- 컴파일 타임 상수
- 은행원알고리즘
- 편향된 지수
- 파이썬
- compgen
- @Autowired
- DTO
- spring
- API
- 프로그래머스
- JPA
- m:n
- @SubscribeMapping
- allocationSize
- 알고리즘
- application layer
- 백준
- 리눅스
- 쿠키
- JDBC
- 무한정 대기
- 런타임 상수
- BindingResult
- 티스토리챌린지
- 오블완
- intelij spring config
- 쉘 스크립트
Archives
- Today
- Total
둘셋 개발!
관계형 데이터베이스란? 본문
설명을 하기전 필요성부터 느껴보자면
-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 |
(참조:생활코딩)
'데이터베이스' 카테고리의 다른 글
[RDBMS] Primary Key의 조건, Primary Key를 설정할 때 고민이 필요한 부분 (0) | 2023.01.16 |
---|---|
database server 이해 (1) | 2021.11.08 |
SQL의 insert, select , update, delete 구문 (0) | 2021.11.03 |
SQL이란? (0) | 2021.10.31 |
database와 database 서버란? (0) | 2021.10.31 |