18. DBMS

JSLEE·2024년 5월 7일

DBMS란?

DBMS란 DataBase Management System의 약자로,
쉽게 말해 데이터베이스를 쉽게 관리하도록 해주는 시스템이다.
대표적인 DBMS 플랫폼에는 Oracle, MySQL 등이 있다.

DB엔진 순위 - zetawiki

플랫폼마다 사용법, 관리법이 다를 순 있어도 대부분 공통적으로 SQL문을 사용하기 때문에 SQL문을 사용할 줄 안다면 금방 적응할 수 있을 것이다.


RDBMS

DB엔진 순위를 살펴보다보면, RDBMS 라는 단어를 확인할 수 있다.
이것은 Relational DBMS로 관계형 DBMS를 의미한다.
관계형 데이터베이스란, 서로 다른 위치에 있는 데이터들이 서로에게 어떠한 링크를 사용하여 데이터끼리 연결되어 있는 데이터베이스들을 의미한다.

쇼핑몰 사이트를 예를 들어보자.
쇼핑몰사이트에서 물품을 판매하는 판매자 가 존재한다.
DB에서는 하나의 테이블에 판매자에 대한 정보 (아이디, 이름, 전화번호, 주소 등...) 을 보관하고 있을 것이다.
동시에 DB의 다른 테이블에서는 상품에 대한 정보 ( 상품명, 가격, 재고, 판매자명 )를 가지고 있을 것이다.

판매자 테이블 상품 테이블
아이디, 이름, 전화번호, 주소 상품명, 가격, 재고, 판매자아이디

이 예시에서, 상품이 어떤 판매자가 팔고 있는지 연결고리가 생긴다.
이러한 구조가 관계형 데이터베이스를 사용한 관리 시스템이다.


PK, FK, 정규화

1) PK (Primary Key / 기본키)

PK란, Primary Key를 의미한다.
Primary Key는 테이블에서 중복이 허용되지 않는 고유한 Key값이다.
예를 들어, 판매자 테이블에서 동명이인이 존재할 수 있다. 따라서 이름은 Primary Key라고 생각할 수 없다.
회원가입을 할 때, id는 중복을 허용하지 않는게 보통이므로, id 값은 중복값을 가지지 않는다.
따라서 id는 Primary Key로 지정할 수 있다.

2) FK (Foreign Key / 외래키)

FK란, Foreign Key를 의미한다.
Foreign Key는 다른 테이블의 Primary Key 값을 자신의 테이블에 사용할 때 이러한 명칭으로 부르게 된다.
예를 들어, 위 예시에서 상품 테이블의 판매자아이디 열은, 상품테이블에서 FK에 해당한다. 이 FK를 통하여 각 상품이 어떤 판매자의 상품인지를 파악할 수 있게 된다.

3) Normalization (정규화)

정규화란, 쉽게 말해서 테이블을 분리하는 것이다.
만약 판매자테이블과 상품테이블이 분리되어 있지 않다고 생각해보자.

  • 상품&판매자 테이블 ( * 회원가입시, 아이디는 중복될 수 없음 )
    상품명 가격 재고 아이디 이름 전화번호 주소
    상품1 5,000 5 apple12 Kim 010-aaaa-aaaa aa동 aa호
    상품2 10,000 10 grape33 Lee 010-bbbb-bbbb bb동 bb호
    상품3 20,000 3 apple12 Kim 010-aaaa-aaaa aa동 aa호
    상품4 7,000 30 potato66 Kim 010-cccc-cccc cc동 cc호

이 표를 살펴보면, 동일한 판매자가 여러 상품을 올렸을 때, 데이터 공간이 낭비된다.
무슨말이냐면, 상품1과 상품3은 동일한 판매자가 올린 것이다.
이 경우에는 이름,전화번호,주소값이 불필요하게 여러번 작성되며,
전화번호 값의 수정이 있을 때에도 데이터 하나씩을 모두 변경해줘야한다.

따라서, 테이블을 분리하여 중복값의 처리와, 유지 보수를 용이하게 만들어줄 수 있다.

  • 상품 테이블

    상품명 가격 재고 아이디
    상품1 5,000 5 apple12
    상품2 10,000 10 grape33
    상품3 20,000 3 apple12
    상품4 7,000 30 potato66
  • 회원 테이블

    아이디 이름 전화번호 주소
    apple12 Kim 010-aaaa-aaaa aa동 aa호
    grape33 Lee 010-bbbb-bbbb bb동 bb호
    apple12 Kim 010-aaaa-aaaa aa동 aa호
    potato66 Kim 010-cccc-cccc cc동 cc호

이 예시는, 아이디값이 primary keyforegin key로써 사용된 것이다.
이렇게 테이블을 따로 분리하는 과정을 정규화라고 부른다


연관 관계 ( 1:1 , 1:N , N:M )

연관 관계란, 테이블과 테이블이 어떠한 방식으로 서로 연결되어 있는지를 의미한다.
기본적으로 3가지 연관관계(1:1, 1:N, N,M)가 존재한다.

이전 테이블의 예시를 살펴보자.
상품에는 한 명의 판매자가 여러개의 상품들을 판매할 수 있으므로,
위 테이블의 연결관계는 1:N 이다.

만약, 한 명의 판매자가 한개의 상품만을 판매할 수 있다면,
이 테이블의 관계는 1:1 이다.

만약, 하나의 상품을 여러 명의 판매자가 동시에 같이 관리하여 판매가 가능하고,
판매자 또한 여러개의 상품을 판매할 수 있다면 이 테이블의 관계는 N:M이다.

이런 연결관계에 대해 생각하는 것은 경험이 많은 영향을 끼친다고 한다.
데이터베이스 스키마를 여러번 작성해보면서 많은 연습을 해보아야겠다.


다음 포스트에는 DBMS를 GUI로 이용이 가능하게 해주는 프로그램인 MySQL Workbench에 대해서 사용하려고 한다.
MySQL Workbench는 구글에서 쉽게 다운로드 및 설치가 가능하다.

profile
공부한 내용들을 정리하기 위해 사용하는 블로그입니다.

0개의 댓글