Post

데브코스 TIL - Day 22

23년 12월 18일 강의를 들은 내용과 추가로 학습한 내용을 기록한 글입니다.

데이터베이스 (Database)?

데이터를 효율적으로 관리하기 위한 집합체

DBMS (DataBase Management System)?

데이터베이스를 운영하고 관리하기 위해 DBMS를 통해 데이터베이스를 사용함

  • 운영회사는 다르지만, 연산을 요청하기 위해 사용되는 명령어는 동일함

표준 SQL

데이터베이스에 연산을 요청하기 위해 사용되는 언어로 데이터를 생성, 조회, 수정, 삭제 등과 같은 기능을 수행

요즘의 DB는 모두 DBMS

2023년 데이터베이스 순위

순위구분DBMS
1[RDBMS]Oracle
2[RDBMS]MySQL
3[RDBMS]Microsoft SQL Server
4[RDBMS]PostgreSQL (객체 지향 언어에 맞는 제품)
5[문서저장소]MongoDB
6[키-값저장소]Redis
7[RDBMS]IBM DB2
8[검색엔진]Elasticsearch

RDBMS (Relational DataBase Management System)?

관계형 데이터베이스는 서로 관련된 데이터 지점에 대한 접근을 저장 및 제공하는 데이터베이스 유형입니다.
-oracle 공식문서-

관계형 데이터베이스는 데이터가 하나 이상의 열과 행의 테이블(또는 ‘관계’)에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로 데이터를 구성하는 정보 모음입니다.
-google cloud 공식문서-

  • 관계를 이용해서 원하는 값을 찾을 수 있도록 해줌

RDBMS 장점

  • 유연성
    • 전체 데이터베이스 구조를 변경하거나 기존 애플리케이션에 영향을 주지 않고 필요할 때마다 간편하게 테이블, 관계를 추가/삭제하고 데이터를 변경할 수 있음
  • 공동작업
    • 여러 사용자가 동시에 데이터를 운영하고 접근할 수 있음
  • 사용 편의성
    • 기술자가 아닌 사용자도 SQL을 사용하여 복잡한 쿼리를 쉽게 실행할 수 있음
  • 데이터베이스 정규화
    • 데이터 중복성을 줄이고, 데이터 무결성을 개선하는 “정규화”를 사용함
  • ACID 규정 준수
    • ACID (원자성, 일관성, 격리, 내구성) 성능을 지원하므로 오류, 실패, 기타 잠재적 오작동에 관계없이 데이터 유효성을 검사할 수 있음

이론을 배우기에 좋은 사이트

PK (기본키; Primary Key)

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

FK (외래키; Foreign Key)

  • A 테이블에서 B 테이블의 데이터를 찾아가고 싶을 때 사용하는 Key 값
  • B 테이블의 PK 값을 A 테이블의 FK로 쓰는 것이 이상적임

데이터베이스 연관관계

테이블 간 어떤 관계를 가지고 있는지?

1:1 1:N M:N


실습 - 게시글 데이터베이스 만들어보기

테이블1

  • 게시글 번호: PK (Primary Key)
  • 게시글 번호가 없으면 “나는 개그맨”이라는 두개의 게시글을 구분할 수 없음

위의 테이블에서 이광수가 글을 3개 작성했다고 확인할 수 있을까?

  • 위의 테이블을 작성자가 같은 사람인지 구분할 수 없음 (동명이인일 수도 있고…)
  • 작성자를 구분하기 위해 작성자 정보를 계속해서 추가하다보면 중복되는 내용이 많아짐
  • 게시글 테이블과 사용자 테이블로 분리할 수 있다.

테이블 분리해보기

테이블 쪼개기

  • 사용자 번호를 통해 서로 다른 테이블에 접근할 수 있음 (관계가 생김)
  • 사용자 번호: FK (Foreign Key)
◇ 테이블을 분리했을 때의 장점
  • 중복된 내용을 제거할 수 있음 (중복 최소화)
  • 테이블이 하나일 때는 생년월일을 수정할 때 이광수가 작성한 모든 값을 찾아서 수정해야했지만,
  • 테이블이 분리된다면 사용자의 테이블에서 이광수를 찾아 생년월일을 한번만 수정하면 됨
◇ 테이블을 분리했을 때의 단점
  • 테이블이 하나일때는 데이터 찾기가 편했음
  • 테이블이 두개로 나눠져있을 때는 사용자 번호를 사용해서 데이터를 찾으러 가야함

게시글/사용자 테이블 연관관계

■ 게시글 vs 사용자

  • 사용자 한명당 : 게시글 여러개 => 1:N
  • 게시글 1개당 : 사용자 1명 => 1:1

■ 게시글 - 사용자 테이블 분리

  • 게시글 테이블을 보고 사용자 데이터를 확인
    • 연관관계
  • 사용자 테이블을 보고 게시글 데이터를 확인할 수 없음
    • 연관 관계의 근거가 될 수 없음

■ 연관 관계를 확인했으면,
게시글 테이블을 보고 사용자랑 어떤 관계인지 확인해보면 됨

=> 1:N 관계


실습 - 유튜브 데이터베이스 만들어보기

하나의 테이블로 만들기

유튜브 실습1

테이블 분리해보기

유튜브 분리해보기

채널/사용자 테이블 연관관계

■ 채널 vs 사용자

  • 사용자 한명당 : 채널 여러개 => 1:N
  • 채널 1개당 : 사용자 1명 => 1:1

■ 채널 - 사용자 테이블 분리

  • 채널 테이블을 보고 사용자 데이터를 확인
    • 연관관계
  • 사용자 테이블을 보고 채널 데이터를 확인할 수 없음
    • 연관 관계의 근거가 될 수 없음

■ 연관 관계를 확인했으면,
채널 테이블을 보고 사용자랑 어떤 관계인지 확인해보면 됨

=> 1:N 관계

This post is licensed under CC BY 4.0 by the author.