백엔드 심화 1-1 ~ 1-6(RDBMS)

Develop Kim·2024년 9월 11일

programmers

목록 보기
13/40

백엔드 심화

1 데이터베이스의 필요성

1-1 DBMS란?

1️⃣ 데이터베이스란?(복습)

  • 데이터를 통합하여 관리하여 효율적이기 때문에 사용을 하는 것
    • 여기서 효율적인 장점은?

2️⃣ DBMS

  • 날 것으로 데이터베이스를 사용하기엔 어려움 때문에 이전에 배웠던 것 처럼 아래 DBMS를 사용 중
  • 여기서 RDBMS에서 제공 중인 오라클과 MySQL를 투톱으로 많이 사용함

3️⃣ 지난 챕터에서 배운 SQL을 복습해보자

  • 데이터 삽입: INSERT
  • 데이터 조회: SELECT
  • 데이터 수정: UPDATE
  • 데이터 삭제: DELETE



1-2 RDBMS(Relational DBMS) 쓰는 이유

RDBMS가 무엇일까?

  • RDBMS의 특징은?
    • '드라마에 출현한 배우의 이름을 알고 싶을 때' 검색 엔진에 드라마를 검색한다면 배우의 소개를 보고 알 수 있음
    • 즉, 관계있는 데이터들 끼리 묶여 있어 내가 원하는 값을 쉽게 찾게 도와줌

👉 DBMS와의 차이점은? 데이터 간 "관계"가 있다.




1-3 PK, 데이터 중복, 정규화

1️⃣ 게시글 컬럼으로 RDBMS를 연습해보자

  • 엑셀을 이용해 게시글에 대한 테이블을 그려보자
게시글 번호제목내용작성일자수정일자작성자직업생년월일
1도깨비안녕하세요2024-01-012024-01-01공유영화배우800101
2저승사자반갑습니다2024-01-012024-01-01이동욱유튜버800105
3카누커피커피맛있어요2024-01-012024-01-01공유영화배우800101
4낚시하는 도깨비낚시는 재밌어2024-01-012024-01-01공유영화배우830501
5도깨비도깨비 신부는 나야2024-01-01김고은영화배우900101
6도깨비도깨비 신부는 나야2024-01-01김고은영화배우900101
  • 게시글 번호는 유니크한 고유성을 가져야 게시글마다 구분이 가능하므로 Primary Key를 가져야 함
  • 직업, 생년월일 등 특정할 수 있는 값을 추가하면 게시글을 쓴 사람이 같은 사람인지를 구분이 됨
    하지만, 이렇게 구분하면 게시물이 수천개로 많아질 때 데이터의 양이 너무 많아져서 비효율적임

👉 이런 경우를 해결하기 위해 RDBMS를 사용함. 이때 정규화(테이블을 쪼갬)를 하게 됨

2️⃣ Primary Key: PK(기본 키)

  • 해당 테이블의 각 row(행)을 유니크하게 구별할 수 있는 Key값

  • 유튜브 프로젝트에서 썼던 Map를 보면 user_id가 key역할을 하는 것을 알 수 있음




1-3 테이블 분리, 장-단점

1️⃣ 테이블 분리는 데이터 중복을 막아줄까?

  • 게시글과 사용자 테이블을 분리해주고 PK로 사용자 번호를 지정하자

  • 데이터를 분리하였기 때문에 테이블 간 관계를 파악할 수 있는 것

  • 다른 테이블의 PK를 가져오는 것을 Forein Key라고 함

2️⃣ Forein Key: FK(외래 키)

  • A 테이블에서 B 테이블의 데이터를 찾아가고 싶을 떄 사용하는 key값
    👉 최대한 B테이블의 PK값을 A테이블의 FK로 쓰는 것이 이상적

3️⃣ 단점은 무엇일까?

  • 데이터를 한 테이블에서 찾는 것이 편한 경우는 불편함, 이는 해결 가능한 단점



1-4 생년월일 바꿔보기, 1-N, 예시, 관계의 주인

1️⃣ 사용자 정보를 바꾸는데 효율이 좋음

  • 테이블을 분리하면 사용자의 정보를 바꾸었을 때 게시글도 모두 적용이 되므로 편함

2️⃣ 1-N 연관관계

  • 사용자 테이블을 볼 때 작성한 게시글은 확인이 어려움

    • 게시글에서 사용자 정보를 찾아갔다면 사용자에서 게시글 정보를 찾아가지 못하기 때문
  • 게시글과 사용자 테이블 비교

    • 사용자 1명 : 게시글 N개 -> 1:N
    • 게시글 1개 : 사용자 1명 -> 1:1
  • 데이터베이스 연관관계는 1:1, 1:N, M:N 로 분류를 할 수 있음. 연관관계를 잘 사용하면 효율적으로 데이터 관리를 할 수 있음

👉 현업에서 구현을 들어가보면, SQL이 꼬이거나, 너무 많은 SQL이 필요하거나, SQL이 너무 길다면 설계를 수정하면 됨




1-5 유튜브 실습

1️⃣ 유튜브 프로젝트에서 사용한 Map을 엑셀에 그려보자

  • 이전 유튜브 프로젝트에서 그린 ERD를 참고하여 사용자와 채널의 관계를 알아보자

  • 채널과 사용자를 분리하면 아래 처럼 만들 수 있다

  • 채널과 사용자의 관계

    • 사용자 1명 : 채널 n개 = 1:n
    • 채널 1개 : 사용자 1명 = 1:1
  • 채널 - 사용자 테이블 분리

    • 채널 테이블에서는 사용자 데이터를 찾아갈 수 있음
    • 사용자 테이블에서는 채널 데이터를 찾아갈 수 없음



1-6 mysql workbench 소개 및 설치

1️⃣ mariaDB 설치하기

  • Docker를 통해 mariaDB를 설치했던 이전 강의를 참고하여 다시 설치해보자

2️⃣ 이번엔 GUI로 설치해보자

  • 구글에 mariadb Workbench를 검색 후 설치페이지에서 다운로드를 진행한다.



profile
김개발의 개발여정

0개의 댓글