Database

강현구·2021년 12월 6일
0

데이터베이스(Database)

(개발자 영역에서 필수적이면서도 심도있는 영역...)

1. Database란?

데이터 : 수,단어,이미지,영상 등의 형태로 된 의미의 단위이다.
웹페이지에 표시되는 모든 것들이 전부 각각의 데이터!
client - server model

요청과 응답으로 구성되는 데이터 통신 모델
클라이언트가 요청을 하면, 서버는 그에 따른 응답을 준다.

데이터베이스는 컴퓨터 시스템에 저장된 정보이다.(데이터를 모아둔 집합체를 의미한다.)
데이터를 저장하는 것은 데이터베이스말고도 HDD,SSD,클라우드 등 다양한 매체로 가능하다.
데이터베이스에서도 요청과 응답이 있다.
이 작업을 가능하게 만들어 주는것, 이것을 관리하는 것이 DBMS(Database Management System)이다.
DBMS를 통해서 CRUD를 할 수 있다.
C : Create
R : Read (Retrieve)
U : Update
D : Delete

2. Database를 왜 사용하는가?

  1. 데이터를 오랜기간 저장 및 보존하기 위해서!

데이터를 오랫동안 저장하기 위해서는 하드디스크를 사용해야한다.
코드에서 변수와 같은 정보는 메모리(RAM)에 저장된다.

  1. 데이터를 체계적으로 보존하고 관리학 위해서!

원하는 자료를 쉽게 읽어낼 수 있어야만 의미있는 정보이다.

3. 관계형 Database (RDBMS)

데이터베이스에서 메인!

-모든 데이터들은 2차원의 데이터로 표현된다.
Row, Column으로 구성된다.

-테이블의 각 행은 저만의 고유키 (Primary key, PK)가 있다.
고유 키는 중복값이 없다.

-각각의 테이블들은 서로 상호 관련성을 가지고 서로 연결될 수 있다.
다수의 테이블들이 서로 관계를 가지고 연결된 것이 관계형 데이터베이스이다.

관계유형
일대일 (one to one)
일대다 (one to many)
다대다 (many to many)

  • 일대일

주민등록번호와 같은 것들.
정보와 정보가 하나씩만 매칭된다.
일대일로 매칭되는 데이터의 테이블이 여러개가 있을 수 있다.
연결 관계를 보여주기 위해 외래키(Foreign Key, FK)를 사용한다.
일대일에서는 외래키를 두 테이블 중 아무쪽에나 줘도 상관은 없다.
> 하지만 다른쪽에 의존적인 관계를 갖고 있는 테이블에 주는 것이 옳다.

  • 일대다

주인과 애완동물!
데이터 하나에 매칭되는 데이터 값이 여러개일 수 있다.
일대다에서는 왜래키는 '일'쪽이 아니라 '다'쪽에서 갖고있어야 한다.
> 그래야 데이터의 중복이 없다. // FK의 중복은 가능

-정규화(normalization): 테이블을 분리해서 참조하는 관계를 만들면서 중복을 줄이는 작업을 해준다.

  • 다대다

상품 주문이나 수강 신청 목록 등.
한 사람이 여러과목을 수강할 수 있고, 반대로 각 과목은 여러사람이 들을 수 있다.
중간테이블(Junction table) : 중간에 연결해주는 테이블을 사용한다.
한 셀에 여러개의 데이터가 들어가서는 안된다.
> 정규화로 데이터를 분리
> 분리된 데이터는 row별로 중복이 있을것이다.
> 중간테이블을 만들어서 연결고리를 만들어 주고 별개의 테이블로 분리해준다.
(중간 테이블은 양쪽의 FK를 갖고 있다.)

데이터모델링

데이터 보델링 단계에서는 row에 실제로 어떤 값이 들어 있는 지가 중요한게 아니다.
Datatype이 중요!

-데이터베이스의 컨벤션(convention)
데이터베이스 이름은 주로 소문자의 복수형태로 만든다.
junction table은 두 테이블 이름을 합쳐서 언더바(_)를 걸어준다.
junction table의 FK를 묶어서 PK가 된다. (이렇게 하면 중복 없이 유니크한 Key가 된다.)

추가 공부 : 정규화 (normalization)
단계별 정규화하는 방법에 대한 공부!
*실무에서는 주로 3단계 정도의 정규화까지 하고, 그 이상은 성능을 고려하며 진행한다.

profile
한걸음씩

0개의 댓글