Database

강현구·2021년 12월 6일
0
post-custom-banner

데이터베이스(Database)

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

1. Database란?

데이터 : 수,단어,이미지,영상 등의 형태로 된 의미의 단위이다.
웹페이지에 표시되는 모든 것들이 전부 각각의 데이터!
client - server model
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
한걸음씩
post-custom-banner

0개의 댓글