9/11_20일차

자햐·2024년 9월 10일
0

교육

목록 보기
19/51

개큰일난점 : 강의밀림
살려주세요

((밀리니까진짜하기싫고그냥시간을보내는사람생성))

겨우겨우 강의 다시 시작하기 위해,, 오늘 하루 강의의 목표는 일단 하나라도 영상 듣기..
..
..
...
아아아아아아아아

지금은 10월 첫째주이고.. 자괴감이 들지만 그래도 후딱 영상을 들어야합니다.

시작!

백엔드 심화 과정 시작

DBMS란?

데이터베이스란?
다시 살펴보기 :

데이터베이스란? : 데이터를 통합하여 효율적으로 관리하기 위한 데이터 집합체를 데이터베이스라고 합니다.

데이터베이스의 장점은 뭔가요? : 데이터의 중복을 막고, 효율적이고 빠른 데이터 연산을 가능하게 합니다.

  • DBMS란?
    우리는 데이터베이스를 운여하고 관리하기 위한 DBMS(database management system)를 통해 데이터베이스를 관리합니다.

  • DBMS의 종류
    oracle(부동의 1위), mysql(사실상 오라클꺼), mariadb(mysql과 비슷함)
    elasticsearch <- 검색엔진 : 요새 많이 쓰긴 하는데 어렵다고 하네요..

SQL (structured query language)

  • 대표적인 sql
  • INSERT : 데이터 삽입
  • SELECT : 데이터 조회
  • UPDATE : 데이터 수정
  • DELETE : 데이터 삭제

RDBMS 쓰는 이유

-> 생각보다 우리는 RDBMS처럼 데이터끼리 연관지어서 생각하고 있다 (어쩌면 주객전도)

RDBMS : relational database management system
: 데이터 간 관계

관계 지향적으로 데이터베이스에서 자료를 찾는 느낌

비슷한 예시 : 마인드맵

(번외) 과목명 : XR과 공간디자인

PK, 데이터 중복, 정규화

게시글 번호가 있어야 하는 이유 : 각 게시물을 유니크하게 관리해야 하기 때문
게시글 번호 : primary key (PK)

RDBMS

  • Primary Key(PK(기본키))
    : 해당 테이블의 각 row(행)을 유니크(=유일)하게 구별할 수 있는 key값

이렇게 구별한다면? 생각보다,, 단순히 중복되는 정보가 차지하는 공간량이 엄청남. 수정을 할 때에도 일일이 하나씩 다 수정해야한다..
때문에 이용하는게 RDBMS이다.
-> 테이블을 쪼갠다(=정규화한다.)
-> 겹치지 않게끔 한다

cf.정규화 = 테이블을 쪼갠다.(장점/단점)

테이블 분리, 장-단점(알아보자)

  • 분리를 하기 위한 예시 테이블

-> 분리를 하는게 정말 데이터 중복을 막아줄 수 있을까? 를 생각하며 작업해볼 것.

이런 식으로 중복을 없앨 수 있다.

(예시)게시글 3번을 쓴 사람의 생년월일은 언제인가?
: 게시글 3번의 사용자번호 1 -> 사용자번호 1 -> 생년월일 800107

두 테이블 간 연관관계가 생겼다고 볼 수 있음

FK : 외래키

  • Foreign Key : FK(외래키)
    : A 테이블에서 B 테이블의 데이터를 찾아가고 싶을 때, 사용하는 key값
    ((최대한 B테이블의 PK 값을 A 테이블의 FK로 쓰는 것이 이상적))

여기서 외래키는 왼쪽 아래 테이블의 사용자 번호에 해당함.

(확인)

장점 : 중복이 사라졌다(중복이 최소화되었다)
단점 : 두 번 왔다갔다 해서 데이터를 찾아야 함

단점은 어떻게 해결해야 할까? -> 결론은 해결된다. 방법은 이후에 알아보자!

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

이 테이블에서
게시글(분리) 테이블에서는 사용자 테이블을 찾아갈 수 있었지만
사용자 테이블에서는 게시글(분리) 테이블로 찾아갈 수 없음

  • 데이터베이스에서 "테이블 간 어떤 관계를 가지고 있는지에 따라" (연관관계를 썼다는 시점에서 이미 RDBMS를 사용하고 있다는 것) 1:1, 1:N, M:N 관계가 있다.

구분하는 방법 -> 2가지

(1)
게시글 vs 사용자
1) 사용자 1명 : 게시글은 여러 개 >> 1:N
2) 게시글 1개 : 사용자 1 명 >> 1:1
..1과 2중에서 뭐가 더 신빙성 있는가? -> 1번
이유 : 2번은 사용자 1명당 게시글 1개만 쓸 수 있다는 말과 같기 때문

(2)
게시글 - 사용자 테이블 분리

  • 게시글 테이블을 보고 사용자 데이터를 확인 -> 연관관계를 나타내줌
    => 이제 게시글 테이블을 보고 사용자랑 어떤 관계인지 보기
    => 1 : N 관계

  • 사용자 테이블 보고 게시글 데이터를 확인X -> 연관관계를 나타내주지 않음

현업에 계신 분들? 설계를 잘 하냐.. "DBA"분들이 도와주심

  • 구현을 들어가보면, SQL 꼬일 때, 너무 많은 SQL이 필요할 때, SQL 긴데..? 싶을 때
    => 설계를 다시 뜯어고치시면 됩니다!^^~

유튜브 실습

간단하게 ERD 고려해보기

실제로 채널 분리해보기

  • 데이터베이스에서 "테이블 간 어떤 관계를 가지고 있는지에 따라" 1:1, 1:N, M:N

채널 vs 사용자
1) 사용자 1명 -> 채널 n개 = 1:n !! 이게 답!
2) 채널 1개 -> 사용자 1명 = 1:1

채널 - 사용자 테이블 분리

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

mysql workbench 소개 및 설치

mariaDB 다시 사용해볼 것!

((cmd창에서))

  • docker 실행시켜 주세요
    -> docker exec -it mariadb /bin/bash

  • docker 열리면 -> mysql 실행시켜줘
    -> mysql -u root -p root
    -> 근데 나는 저번 실습때 mysql안 키고 mariadb로 명령어를 쳐서..
    -> mariadb -u root -p로 명령어를 칠 것임

비번 : root

CLI말고 GUI로 해보기 위해 mysql workbench를 설치하고 끝!

profile
산업과 예술의 만남에 있는 예비 개발자..

0개의 댓글