본문 바로가기

개발/프로그래머스 데브코스

프로그래머스 데브코스 22일차 with. TS 웹 풀스택

📚요약

지난 시간은 지금까지 배웠던 부분에 대해 과제를 통해 복습하는 시간을 가졌습니다. 이번 시간은 DBMS가 무엇인지 배우고, 테이블을 만드는 방법을 배우고 미니 프로젝트(Library)에 적용해 보겠습니다. 추가로 mysql workbench 설치까지 하고 마무리하겠습니다.

 

📖DBMS

DBMS란 DataBase Management System의 약자로 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어 도구의 집합

데이터베이스 관리 시스템-위키백과

 

📄RDBMS

RDBMS란 기존 DBMS에서 Relational이란 단어가 추가된 것으로 관계형 모델을 기반으로 하는 데이터 베이스 관리 시스템

관계형 데이터베이스 관리 시스템-위키백과

쉽게 이야기하면 테이블에 데이터를 저장하고 테이블들 사이에 관계가 존재한다라고 이해하면 됩니다.

RDBMS의 장점

  • 제약 조건과 규칙(PK, Null 구분, FK 등)을 사용해 데이터 일관성 및 무결성 강화
  • SQL의 사용으로 데이터 검색 및 조작의 단순성
  • 쉬운 수직, 수평 확장과 다양한 최적화 기술(인덱싱, 캐싱 등)을 이용한 확장성 및 성능
  • 외부에 영향을 주지 않는 스키마의 변경과 다양한 데이터 유형으로 인한 유연성과 적응성
  • 내장 기능과 도구로 지원되는 보안 및 규정 준수
  • 다양한 RDBMS로 인한 강력한 생태계와 쉽게 통합할 수 있는 호환성

📄PK & FK

PK(기본키)는 행(레코드, 튜플)을 구분하기 위한 열(속성)로 고유한 값을 사용합니다. 예를 들어 주민등록번호, 중복이 불가능한 id 등이 있습니다. FK(외래키)는 다른 테이블의 PK를 참조해 서로 다른 테이블 간의 관계를 만드는 데 사용합니다.

 

📄데이터 중복과 정규화

정규화(Normalization)란 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스로 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것이 목표이다.

데이터베이스 정규화-위키백과

정규화는 1NF(제1 정규화)부터 2NF, 3NF, BCNF(보이스-코드 정규화), 4NF, 5NF, 6NF까지 나왔습니다.

 

📄연관관계

연관관계는 테이블 사이의 관계를 의미하는데 '1:1', '1:N', 'M:N' 관계가 있습니다.

  • 1:1 관계 : 사람과 주민등록번호 테이블이 있다. 한 사람이 하나의 주민등록번호만 가질 수 있고 하나 이상을 가질 수 없는 경우를 말한다. 보통 이 경우에는 사람 테이블에 주민등록번호를 열(속성)으로 가져가도 문제는 없다.
  • 1:N 관계 : 사람과 휴대폰 테이블이 있다. 한 사람은 여러 휴대폰을 가질 수 있지만, 하나의 휴대폰을 여러 사람이 가질 수 없는 경우를 말한다.
  • M:N : 학생과 강의 테이블이 있다. 한 학생은 여러 강의를 들을 수 있고, 한 강의는 여러 학생이 참여할 수 있는 경우를 말한다. 서로가 서로한테 1:N관계를 가지고 있다고 볼 수 있다.

📖실습(Library)

책 테이블

book_id book_name publisher publish_date librarian_id librarian_pw librarian_name
1 books pbBook 2024.05.07 nulzi123 1234 nulzi
2 boks pbbooK 2020.05.07 nluzi123 1234 nluzi

책 테이블

id name publisher publish_date librarian_id
1 books pbBook 2024.05.07 nulzi123
2 boks pbbooK 2020.05.07 nulzi123

 

사서 테이블

id pw name
nulzi123 1234 nulzi

 

기존 책 테이블 하나로 책의 정보와 그 책을 관리하는 사서의 정보가 모두 담겨있습니다. 이때 행(레코드, 튜플)의 수가 많아지면 사서의 정보가 중복이 될 것입니다. 중복을 없애기 위해서 사서와 책을 분리했습니다. 분리되면서 사서의 비밀번호와 이름이 사라지면서 중복이 줄어든 것이 보입니다. 정규화를 이용하면 이와 같이 중복을 줄이며 테이블을 작게 분리할 수 있습니다.

 

📖mysql workbench 설치

지금까지는 docker의 mariadb를 이용해 CLI로 작업을 진행했는데 더 명확하게 보기 위해서 편리한 도구인 mysql workbench를 설치하겠습니다. 공식 홈페이지에서 다운로드할 수 있습니다. 실제 연결은 다음 시간에 진행하겠습니다.

 

다음 시간에 계속...

 

출처 & 참고

김송아 강사님의 강의

관계형 데이터 베이스 관리 시스템의 7가지 장점, 6 민, 2024.05.07