멋사 Backend 60일차 🦁

신재원·2023년 7월 17일

🔔 DB (데이터베이스)

RDS 란 ?

  • 간단히 말하여 AWS 에서 제공하는 관계형 데이터베이스를 제공하는 서비스입니다.
  • 내부에서 EC2 가 작동하며, 패치 밒 백업과 같은 관리 작업을 자동화 해줍니다.
    (EC2에 비해서 가격이 비싸다고 합니다.)
    • 물론 EC2 서버의 docker 위에 mysql을 띄워서 사용해도 된다고 합니다.

실무에서 H2와 SQLite를 사용하지 않는이유 ?

  • 실무에서는 H2, SQLite 데이터베이스 보다는mysql, oracle 등을 사용하게 됩니다 이유는 무엇일까요 ?

많은 이유가 있겠지만 간단히 알아보겠습니다.

  • H2SQLite는 확장성과 성능에서 확연히 떨어지며 튜닝하는 기능이 부족합니다.
  • 하지만 테스트용 으로는 H2SQLite 데이터베이스가 적합할수 있습니다.

📌 mysql workbench 사용 이유

mysql을 사용하는데 있어 시각적으로 도와줍니다.

  • 아래의 사진처럼 클릭과 입력으로 SQL문을 자동으로 작성하고 보여줍니다.

    ( 동그라미 친 부분은 새로운 스키마를 생성하는 버튼입니다)

SYS 스키마

  • 데이터베이스를 연결하면 SYS 라는 스키마가 자동으로 생성되는데 해당 스키마는 사용 안하는것이 좋다 즉 새로운 스키마를 만들어야 된다는 말이다.
  • 이유로는 현업에서 DBA 직군 분들이 병목 현상등을 알아내기 위한 스키마라고 합니다.

정규형

  • 정규형 이란 ?

관계형 데이터베이스에서 데이터의 구조를 설계하는 데 사용되는 원칙과 규칙의 모음입니다.

  • 데이터베이스의 효율성, 일관성, 중복 데이터의 제거 등을 목표로 합니다.

➡ 학문적으로는 제6정규형까지 있지만, 실무에서는 제3정규형이 기준이라고 하며 제3정규형 까지만 포스팅 하겠습니다 !

⏺제 1정규형

제 1정규형이란 ?

  • 하나의 컬럼이 복수의 데이터를 가지고 있지 않아야 한다.

🔎
문제점 : 수령방식이 택배인 경우만 찾고싶은경우 조건문을 복잡하게 작성해야함, 수령방식명 수정도 어려워짐

  • 위와 같은 테이블이 있다고 가정할때 제 1정규형을 만족하지 못합니다.
  • 마우스_A인 상품명이 수령방법이 2개의 데이터로 이루어져 있기 때문입니다.
  • 해결
  • 테이블을 분리하여 제 1정규형을 만족합니다.
  • 상품id 는 기본 테이블의 id 값을 사용합니다.

⏺제 2정규형

제 2정규형이란?

  • 제 1정규형을 만족하며 현재 테이블의 주제와 관련없는 컬럼을 다른 테이블로 빼는 작업을 말합니다.
    • 말이 좀 어렵지만 그림을 보면 조금 쉬울것 입니다.

🔎
문제점 : 마우스_A의 옵션과 가격을 수정하고 싶은경우, 마우스_A의 컬럼을 다 찾아서 변경해줘야 됩니다.

  • 아래의 테이블은 상품 등록 테이블 이며, 옵션과 가격을 보여줄려고 하는 테이블이 아닙니다. (관련없는 테이블)
  • 해결
  • 상품 자체와 관련성이 떨어지는 테이블을 분리합니다.

⏺제 3정규형

제 3정규형이란?

  • 제 2정규형을 만족하며 기본키가 아닌 다른 속성(일반 컬럼)에 종속성을 갖는 컬럼들을 별도로 분리하는 것입니다.


🔎
문제점 : 제조사 M사가 미국이 아닌 일본으로 변경하게 된다면, M사의 컬럼을 다 찾아 제조사 국적을 수정해줘야합니다.

  • 해결
  • 기본키가 아닌 일반 컬럼에 종속되어있는 컬럼을 따로 분리합니다.

Reference

https://rebro.kr/160
https://www.youtube.com/watch?v=Y1FbowQRcmI

2개의 댓글

comment-user-thumbnail
2023년 7월 18일

정말 좋은 정보 감사합니다!

답글 달기
comment-user-thumbnail
2023년 7월 18일

소중한 정보 감사드립니다!

답글 달기