[TIL-34] 데이터베이스

da.circle·2022년 10월 14일
0

TIL

목록 보기
34/44

데이터베이스란?

  • 컴퓨터 시스템에 저장된 정보나 데이터를 모두 모아놓은 집합
  • 데이터베이스 관리 시스템(DBMS, DataBase Management System)에 의해 관리된다.
  • 데이터, DBMS, 연관된 다른 어플리케이션을 한번에 “데이터베이스 시스템”이라고 하기도 한다.(더 짧게는 “데이터베이스”, “DB”라고도 한다.)

데이터베이스를 사용하는 이유

  • 데이터 장기 저장 및 보존 : 단순히 컴퓨터 메모리에 데이터를 저장하게 되면 어플리케이션 종료 시 데이터가 날라간다.
  • 데이터 관리 : 데이터를 체계적으로 보존하고 관리하기 위함.

종류

  • 관계형 데이터베이스(RDBMS) : 데이터 사이의 관계에 기초를 둔 데이터베이스 시스템
  • 비관계형(Non-relational) 데이터베이스

관계형 데이터베이스

특징

  • 2차원 테이블로 구성된다.
  • Column(열) : 테이블의 각 항목(id, 메뉴명, 가격)
  • Row(행) : Column의 실제 값(커피, 3000 등)
    id메뉴명가격
    1커피3000
    2아이스티2500
    3밀크티3500

Promary Key

  • 고유 키
  • 보통 테이블의 맨 처음 컬럼은 id (엑셀에서 맨 왼쪽에 있는 숫자같은 느낌)
  • 고유한 값

관계형 데이터베이스는 각 테이블이 상호관련성을 가지고 서로 연결되어있다.
테이블과 테이블이 서로 연관되어 있다!


관계 종류

  1. One To One relation

    • 일대일 관계
    • A테이블의 Row와 B테이블의 Row가 일대일 매칭이 된다.
    • 1 : 1

    예시) 한명의 한국인은 하나의 주민등록번호를 갖는다.

    Users

    idName
    1홍길동
    2김둘리

    Identitication numbers

    idIdentification Numberuser_id
    1980101 - 12345672
    2950404 - 99999991

    → Identification numbers 테이블의 user_id는 Users의 id를 참조한다.

    ⇒ Identification numbers 테이블의 user 컬럼은 users 테이블의 id(pk)를 참조한다.

    idIdentification Numberuser
    1980101 - 1234567김둘리
    2950404 - 9999999홍길동

    ⇒ users 테이블이 있는데 굳이 또 이름을 저장할 필요가 없기 때문에 참조한다.

    결론 : Users 테이블과 Identification numbers 테이블은 서로 일대일 관계이다.

  2. One To Many relation

    • 일대다 관계
    • A테이블의 Row가 B테이블의 여러 Row와 매칭이 된다.
    • 하나의 Row에 해당하는 테이블이 One, 여러 Row에 해당하는 테이블은 Many에 해당한다.
    • 1 : N

    예시)

    한 출판사는 여러 도서를 출판한다.

    한 권의 도서는 하나의 출판사에 의해 출판된다.

publisher

idname
1A
2B

book

idnamepublisher_id
1myBook2
2yourBook1
3ourBook1

→ book 테이블의 publisher_id 는 publisher 테이블의 id를 참조한다.

→ “yourBook”의 출판사는 A이고, “ourBook”의 출판사도 A이다.

→ publisher의 Row 하나는 book의 여러 Row와 연결된다.

book의 Row 하나는 publisher의 여러 Row와 연결된다.

publisher테이블은 One, book테이블은 Many이다.

  1. Many To Many relation

    • 다대다 관계
    • A테이블의 여러 Row가 B테이블의 여러 Row와 매칭이 된다.
    • N : M

    예시) 한 고객은 여러 도서를 구매할 수 있다.

    한 도서는 여러 고객에 의해 구매될 수 있다.

    customer

    idnameorderprice
    1김길동yourBook20000
    2김길동ourBook35000
    3홍길동myBook15000
    4고길동yourBook20000

    → name과 order, price 컬럼의 데이터가 반복된다!

    이렇게 되면 구매 한 건이 생기면 똑같은 데이터를 여러번 입력해야 한다.

    book

    idnameprice
    1myBook15000
    2yourBook20000
    3ourBook35000

    customer

    idname
    1김길동
    2홍길동
    3고길동

    order

    iduser_idbook_id
    112
    213
    321
    432

    → Foreign Key(참조키)를 사용하면 위의 테이블처럼 중복된 데이터를 줄일 수 있다.

    ⇒ 서로 다른 두 테이블의 조합을 입력하기 위한 중간 테이블이 생성된다.(order 테이블)

    ⇒ customer테이블과 book테이블은 다대다 관계이다.


    테이블간의 관계에 익숙해지려면 시간이 좀 걸릴것같다. 앞으로 웹페이지를 볼 때 어떤 테이블이 필요할지, 테이블간에 관계는 어떻게 되어있을지 조금씩 자주 생각해보면 좋을것같다.

profile
프론트엔드 개발자를 꿈꾸는 사람( •̀ ω •́ )✧

0개의 댓글