대학교에서 정말 약간 접해보았던 Database 부분을 배웠다. 대학교 때 기본적인 개념들만 접하고 깊게 공부를 하지는 않아서 그런지 뭔가 그냥 새로운 것을 배우는 그런 기분이었다. 우리가 한 번씩은 들어보는 데이터가 저장되어 있는 곳이라고 불리는 Database는 발달해가면서 단점을 많이 보완하고 새롭게 나온 해결책(?) 없어서는 안 될 것이라고 생각하면 될 것 같다.
Database를 이야기 할 때는 SQL을 빼놓을 수 없는데 SQL은 구조화된 Query 언어이다. 그리고 데이터베이스용 프로그래밍 언어이며 쉽게 말해 데이터베이스에 query를 보내 원하는 데이터만을 뽑아 올 수 있다. 그렇다면 query는 무엇일까?
Query는 즉, 질의문 예를 들면 우리가 검색 엔진의검색창에 적는 검색어라고 보면 된다. 저장되어있는 정보를 필터 하기 위한 질문이라고도 볼 수 있다.
Database는 왜 필요한 것일까?
기존에 사용하는 in-memory 측면에서 보면 꺼지면 데이터가 없어지는 단점이 존재하고 File I/O 측면에서도 원하는 데이터만 가져올 수 없고 항상 모든 데이터를 가져온 뒤 서버에서 필터링 필요로 한다.
하지만 Database는 필터링 이외에도 File I/O 로 구현이 힘든 관리를 위한 여러 기능들을 가지고 있는 데이터에 특화된 서버이기에 많은 장점을 가지고 있다. Database는 우리가 기존에 알고 있는 스프레드시트 (엑셀)과 외면적인 측면에서 비슷함을 가지고 있다.
Database를 이루는 Rows(행)은 각 데이터들을 의미하며 Colums(열)이 있다. Database가 있다면 가공하지 않고 Server가 client에게 정보를 전달해 줄 수 있다.
Database에서 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명인 스키마는 쉽게 말해 데이터베이스의 청사진이라고 볼 수 있다. 여기서 위에 엔티티는 고유한 정보의 단위로 데이터베이스에서는 테이블로 표시된다.
엔티티에는 특성을 설명하는 필드가 있다 열(column)이 있고 레코드는 테이블에 저장된 항목 행(row)을 뜻한다.
그리고 각 테이블에 고유한 ID라는 필드가 존재, 각 테이블의 레코드 하나를 가리키는 숫자이다. 추가될 때마다 자동적으로 그 값이 증가하고 이 ID 필드는 해당 테이블의 기본 키의 역할을 한다. 그리고 변하지 않는 값이다.
기본 키 말고도 왜래키 라는 것도 있는데 외래키란 다른 테이블에서 테이블의 기본키를 참조할 때 해당 값을 뜻한다.
Colums(열)의 크기는 고정되기 때문에 ID를 담을 공간이 부족할 수 있고 한 Colums(열)에 여러 값을 저장하게 되면 상수 시간에 대한 검색 손실 발생 즉, 복잡도가 상승하게 된다. 뿐만 아니라 동일해야 하는 데이터가 하나라도 잘못되면 정확성이 깨지게 된다 그렇기에 소스는 한 군데에 정의되어야 이런 일이 생기지 않는다.
1:N의 관계에서는 1에 있는 키를 N에 추가하는 것이 더 효율성이 좋으며
N:N의 관계에서는 조인테이블을 사용하는 것이 효율적이다. 조인테이블이란 쉽게 말해 1:N 관계를 두 번 사용한 것과 같다고 보면 된다.
내가 최소한 Database 강의를 들으면 정리한 내용이고 SQL 내용도 적어야하는데 아직 공부 중이라 추후에 다시 정리하여야 할 것 같다.
대문자, 마지막 세미콜론(;), 문자입력시 따옴표... 꼭 기억해야지...
'개념정리' 카테고리의 다른 글
10/28[TIL]Authentication (0) | 2020.10.28 |
---|---|
10/26[TIL]MVC Patterns & ORM (0) | 2020.10.26 |
10/19[TIL]Routing (0) | 2020.10.21 |
10/7[TIL]React (2) & 모듈 (0) | 2020.10.07 |
10/6[TIL]React Life Cycle (0) | 2020.10.06 |