
데이터베이스는 데이터를 효율적으로 저장, 관리, 검색할 수 있는 구조화된 저장소이다.
데이터베이스를 사용하면 대량의 데이터를 체계적으로 관리하고 접근할 수 있다.

DBMS는 데이터베이스를 운영하고 관리하는 소프트웨어이다.
DBMS는 구조에 따라 여러 종류로 나뉘며, 일반적으로 관계형(RDBMS)과 비관계형(NoSQL)으로 구분한다.

계층형 DBMS: 트리의 형식으로 데이터를 모으고 관리한다. 검색할 때 root부터 아래로 탐색한다.
망형 DBMS: 계층형 모델에 다대다 관계를 추가한 구조로, 하위 노드 간에도 연결이 가능하다.
객체지향형 DBMS: 데이터를 객체 형식으로 저장하고 관리한다.
객체관계형 DBMS: 관계형 + 객체지향형 DBMS의 특징을 혼합한 DBMS이다.
관계형 DBMS(RDBMS): Relational DBMS로 많은 DBMS가 이에 속한다. 데이터는 테이블이라는 단위로 구성되며 테이블은 행과 열로 이뤄진다.
관계형 DBMS는 SQL(Structured Query Language)를 사용하여 데이터를 관리한다.
비관계형 DBMS(NOSQL): 비정형, 반정형 데이터를 처리하는 데 최적화된 DB모델이다. 대용량 데이터의 빠른 읽기/쓰기, 유연한 스키마가 필요할 경우 사용한다.
SQL은 데이터를 관리하고 조작할 때 사용하는 언어이다.

SQL은 데이터의 무결성(정확성, 일관성)을 보장하기 위해 사용한다.
테이블에 잘못된 값이 들어가지 않도록 제약을 거는 장치라 생각하면 된다.

DB를 디자인하기 시작할 때 가장 먼저 하는 것이 entity를 정의하는 것이다. entitiy라 DB에 입력될 데이터의 집합이다. 예를 들어 도서관 앱에서의 entitiy는 책, 사용자, 대출 기록 등이 될 수 있다.
이러한 entity를 정하면 entity간에 관계를 정해야한다. 관계를 정의할 때는 다음의 3가지 개념이 적용된다.
관계명: 말 그대로 어떤 관계인지를 표현한다. '장르'와 '노래' entity가 있을 때
장르는 노래를 포함하고 노래는 장르에 소속된다.
관계 차수: entity 관계 차수의 종류는 3가지가 있다.
1:1, 1:N, N:M 관계.
이때 N:M 관계의 경우 entity를 분리해서 1:N, N:1의 관계로 바꿔주어야 한다.
관계 선택성: 관계가 필수적으로 성립하는 지 아니면 선택적인지를 나타낸다.
대학생과 전공수업이 필수 관계라면 교양과목은 선택적 관계이다.
참고
https://velog.io/@xilver0203/DataBase-DBMS%EC%9D%98-%EC%A2%85%EB%A5%98%EC%99%80-%EB%B9%84%EA%B5%90)