[TIL] - Database

Sean yang~~·2022년 8월 26일
0
post-thumbnail

🔌 데이터베이스란??

  • 데이터베이스란 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임이다.
  • 데이터란 수 , 단어, 이미지, 영상 들의 형태로 된 의미 단위이다.

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

  • 데이터베이스가 아니라 서버에 데이터를 저장하면 안될까??
    - 서버에서도 저장할 수 있지만, DBMS만큼 효율적으로 관리하기가 쉽지 않음
    • 회사에서 데이터는 여러 서비스에 걸쳐 사용될 확률이 너무 높은데, 각 서버가 데이터를 모두 가지고 있다면, 서버자마 다른 데이터를 가지게 되어 문제가 생길수 있음.
    • 따라서 데이터를 한 곳에 저장하여 일관되게 관히나는 것이 매우 중요
  • 데이터를 체계적으로 보관 및 관리해야 한다.
    - 데이터는 체계적으로 보관하여 관리해야 언제나 원하는 정보를 찾는다.

🔌 데이터베이스 관리 시스템 (DBMS)

  • 데이터베이스 관리 시스템이란 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어들을 의미한다.
  • 데이터베이스 관리 시스템이 존재하기 이전에는 파일 시스템을 이요하여 데이터를 관리하였다.
  • 파일 시스템은 응용 프로그램을 이용해 데이터를 파일로 관리하는 것이다.
  • 데이터베이스는 곧 데이터베이스 관리 시스템이라 할만큼 데이터베이스 관리 시스템은 중요하다고 볼 수 있다.
  • 데이터베이스 관리 시스템을 전문적으로 운영하는 인력을 DBA라 한다.

🔌 데이터베이스 관리 시스템의 특징

  • 데이터베이스 관리 시스템은 파일시스템의 문제점을 해결하기 위해 만들어졌기 때문에 데이터베이스 관리 시스템의 특징은 곧 파일 시스템의 단점을 의미한다.
  1. 데이터의 독립성

    • 물리적 독립성: 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 들리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다.
    • 논리적 독립성: 데이터베이스는 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있다.
  2. 데이터의 무결성

    • 여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능으로 데이터의 유효성 검사를 통해 데이터의 무경성을 구현하게 된다.
  3. 데이터의 보안성

    • 허가된 사용자들만 데이터베이스나 데이터베이스 내의 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정함으로써 모든 데이터에 보안을 구현할 수 있다.
  4. 데이터의 일관성

    • 연관된 정보를 논리적인 구조로 관리함으로써 어떤 하나의 데이터만 변셩했을 경우 발생할 수 있는 데이터의 불일치성을 배제할 수 있다. 또한 작업 중 일부 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우의 수를 배제할 수 있다.
  5. 데이터의 중복 최소화

    • 데이터베이스는 데이터를 통합해서 관리함으로써 데이터 중복 문제를 해결할 수 있다.

🔌 관계형 데이터베이스(RDBMS)

  • 관계형 데이터 모델에 기초를 둔 database 시스템을 의미
  • 관계형 데이터란 데이터를 서로 상호 관련성을 가진 형태로 표현할 것
  • Mysql, Postgresql, Oracle, Mysql

특징

  • 모든데이터들은 2차원 테이블로 표현할 수 있다.
  • 테이블의 각 행은 자신만의 고유키가 있다.
  • 각각의 테이블은 서로 상호 관령성을 가지고 연결될 수 있다.

🔌 테이블 사이 관계의 종류

One to one

테이블 A의 로우와 B의 로우가 정확히 일대일 매칭이 되는 관계를 one to one 관계라고 한다.

  • 테이블 user : 한국 사람들의 이름 정보를 갖고 있는 테이블
  • 테이블 Identification numbers : 한국 사람들의 주민등록 번호를 갖고 있는 테이블

예를 들어, 대한민국 사람은 주민등록 번호를 오로지 단 한개만 가질 수 있습니다. 주민등록번호를 변경하는 것은 가능하지믄, 그렇다고해서 한사람이 두 개의 주민들옥번호를 가실 수는 없죠. 한 사람은 하나의 주민등록 번호를 갖습니다. 주민등록 번호 입장에서도 마찬가지잆니다. 하나의 주민등록번호는 오로지 한 사람의 것입니다. 하나의 주민등록 번호가 두 명의 사람을 갖진 않겟죠???

One to Many

테이블 A의 로우가 테이블 B의 여러 로우와 연결이 되는 관계를 one to many 관계라고 합니다.

Users 테이블의 로우 하나는 Pets 테이블의 여러 로우와 연결됩니다. Pets 테이블의 로우 하나는 User 테이블의 로우 하나와 연결됩니다.

한 테이블의 로우 하나가 다른 테이블의 여러 로우와 연결되는 경우를 One to Many 관계 혹은 일대다 관계 라고 부른다.

예를 들어, 한 명의 사람이 여러마리의 반려동물을 키운다고 가정할 수 있겟습니다. 한 명의 주인은 여러 반려 동물을 데리고 있지만, 반려동물 한 마리에게는 한 명의 주인 밖에 없습니다.

Many to Many

Many to Many는 책과, 해당 책을 쓴 작가 사이의 관계를 볼 수 있습니다.

  • 한 작가는 여러 권의 책을 쓸 수 있습니다
  • 한 책에도 작가는 여러명이 될 수 있습니다.

위의 사진의 단점은 중복이 너무 많다는 것입니다. 이것을 Foreign Key 를 이용해서 해결할 수 있습니다.

데이터베이스에서 Foreign Key 를 사용하는 이유 가운데 가장 큰 것이 이러한 중복된 데이터를 획기적으로 줄이기 위해서 입니다.

Authors 테이블의 로우 하나는 Books 테이블의 여러 로우와 연결됩니다. Books 테이블의 로우 하나 또한 Authors 테이블의 여러 로우와 연결 됩니다.

두 테이블이 서로 각자 다른 테이블의 여러 데이터와 연결 될 때에는 두 테이블에 속한 데이터의 조합을 입력하기 위한 중간테이블이 하나 생성됩니다. Many to Many 관계는 N:N 이라고 표현하기도 합니다.

🔌 어떻게 테이블과 테이블을 연결하는가?

  • Foreign Key(외부키)라는 개념을 사용하여 주로 연결합니다.
  • 앞서 본 one to one 예에서 user_profiles 테이블의 user_id 컬럽은 user 테이블에 결려있는 외부 키라고 지정합니다,
  • 즉 데이터베이스에세 user_id의 값은 users 테이블의 id 값이며 그러므로 users 테이블의 id 컬럼에 존재하는 값만 생성될 수 있습니다.
  • 만일 users 테이블에 없는 id값이 user_id 에 지정되면 에러가 발생합니다.

🔌 왜 테이블들을 연결하는가?

  • 하나의 테이블에 모든 정보를 다 넣으면 동일한 정보들이 불필요하게 중복되어 저장됩니다.
  • 더 많은 디스크를 사용하게 되고, 잘못된 데이터가 저장 될 가능성이 높아집니다.
  • 예를 들어, 고객의 아이디는 동일한데 이름이 서로 다른 로우들이 있다면??
  • 여러 테이블에 나누어서 저장한후 필요한 테이블끼리 연결 시키면 위의 문제가 사라집니다.
    - 중복된 데이터를 저장하지 않음으로 디스크를 더 효율적으로 쓰고,
    • 또한 서로 같은 데이터지만 부분적으로 내용이 다른 데이터가 생기는 문제가 없어집니다.
    • 이것은 normalization(정규화) 이라고 합니다.
profile
나는 프론트엔드 개발자다!

0개의 댓글