본문 바로가기
BackEnd

Database

by SoriKim 2023. 8. 15.
반응형

1.  Database 

데이터베이스는 컴퓨터 시스템에 저장된 정보나 데이터를 모두 모아 놓은 집합으로 보통 데이터베이스 관리시스템(DBMS, Database Management System)으로 제어하고 관리합니다. 

 

1-1. Database를 사용하는 이유

1. ) 데이터를 오래 저장하고 보존하기 위해

2. ) 데이터를 체계적으로 보존 및 관리하기 위해 

3. ) 필요한 정보를 언제든지 원하는 형태로 읽고 불러오기 위해 

 

2.  데이터베이스 종류 

Database에는 크게 관계형과 비관계형의 Database가 있습니다. 

2-1. 관계형 데이터베이스

관계형 데이터베이스(RDBMS, Relational DataBase Management System)는 이름 대로 데이터 사이의 관계에 

기초를 둔 데이터베이스 시스템을 말합니다. 

관계형 데이터베이스에서 모든 데이터는 2차원 테이블로 표현이 가능하며 행(row), 열(column)으로 구성 되어 있습니다. 

열은 각 항목이며 행은 각 항목들의 실제 값을 의미합니다.

 

2-1-1. 고유키

각 행에는 저만의 고유키인 Primary key가 존재하며 엑셀에 나타나는 번호(index)가 각 행에 매겨져 있는 것처럼 각각의 행들은

고유한 번호를 가지고 있습니다. 이런 번호들을 고유 키라고 부릅니다. (예를 들어 한 사람에게 주어지는 주민등록번호로도 고유키라고 말할 수 있습니다.) 이러한 고유키를 통해 특정 행을 찾거나 인용이 가능합니다. 

 

2-1-2. 테이블 연결 관계 종류

각 테이블들은 서로 상호관련성을 가지고 서로 연결되어 있으며 이러한 연결에는 3가지 종류가 있습니다. 

1. One to One(일대일)

2. One to Many(일대다)

3. Many to Many(다대다) 

 

위의 3가지 종류가 있으며 각 종류들에 대해 간단히 설명 드리겠습니다. 

1. One to One( 일대일 관계 )

Table A와 Table B의 row(행)이 일대일 매칭이 되는 관계를 말합니다. 

만약, 한 사람의 주민등록번호를 가진 테이블과 한 사람의 이름을 가지고 있는 테이블이 있다면 

각 한 사람에게 주어질 수 있는 주민등록번호는 오로기 단 한개로 각 테이블의 row(행)이 일대일 관계로 연결됩니다. 

각 테이블의 데이터들이 서로 하나씩만 연결된 경우 해당 테이블 사이의 관계를 일대일 관계라고 합니다. 

 

2. One To Many ( 일대다 )

Table A의 로우에 Table B의 여러 로우와 연결이 되는 관계를 말합니다. 

한 테이블의 로우 하나가 다른 테이블의 여러 로우와 연결되는 경우를 일대다라고 표현합니다. 

예를 들어 동물 한 마리에게 한 명의 주인만 등록이 되어 있습니다. 

이때 user 테이블과 pet 테이블이 있다면 user 테이블의 로우 하나는 pet 테이블의 여러 로우와 연결될 수 있습니다. 

 

3.  Many To Many ( 다대다 ) 

Table A의 여러 로우와 Table B 여러 로우가 연결되는 관계를 말합니다. 

이런 경우 두 테이블의 데이터 조합을 입력하기 위한 중간 테이블 하나가 더 생성 됩니다. 

한 책의 작가가 한명만 존재할 수도 있지만 여러 명의 작가가 존재할 수 있습니다.

이런 경우 user 테이블의 여러 로우와 author 테이블의 여러 로우와 서로 연결되고 참조하여 중간 테이블에 서로 연결되는 데이터 조합을 입력하는 중간 테이블로 연결시킬 수 있습니다. 

 

이렇게 여러 테이블에 나누어 저장하여 필요한 테이블끼리 연결 시키게 되면 중복된 데이터를 저장하지 않으며 같은 데이터지만 일부 다른 내용의 데이터가 저장되는 문제가 없어집니다. 이런 형식을 정규화(normalization)이라고 합니다. 

2-2. 비관계형 데이터베이스

비관계형 데이터베이스는 "NoSQL"로 명칭 되며 대표적인 데이터베이스로는 MongoDB가 있습니다. 

비관계형 데이터베이스는 관계형 데이터 베이스의 단점을 보완하기 위해 나왔으며 비정형 데이터들을

사용해 빠르게 개발할 수 있다는 장점이 존재합니다. 

 

반응형

'BackEnd' 카테고리의 다른 글

Wecode 2st Project 회고록  (0) 2023.09.03
Wecode 1차 프로젝트 회고록  (0) 2023.08.20
Linux & Terminal  (0) 2023.08.02
API에 대해 알아보기  (0) 2023.08.02
웹 서비스란? 웹 서비스의 역사와 발전  (0) 2023.07.31

댓글