본문 바로가기

개념정리

12/2[TIL]SQL

SQL이란?

DB용 프로그래밍 언어

DB에 query(저장되어 있는 정보를 필터 하기 위한 질문)를 보내 원하는 데이터만을 뽑아 올 수 있게 한다.

 

DB가 필요한 이유

기존에 in-memory기법은 서버를 끄게 되면 데이터가 사라지게 된다.

File I/O같은 경우에도 원하는 데이터를 가지고 올 수 없고 항상 모든 데이터를 가져온 후 서버에서 필터링이 필요하다. 그렇게 되면 서버 과부하가 생기게 된다.

 

그렇기에 필터링 외에도 File I/O로 구현이 힘든 관리를 위한 여러 기능들을 가지고 있는 데이터에 특화된 서버인 DB를 사용하게 된다.

 

스키마란?

DB에서 data가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명으로 DB의 청사진과 같다.

 

엔티티 는 고유한 정보의 단위, DB에서는 테이블로 표시할 수 있다.

해당 엔티티를 특성을 설명하는 것은 필드라고 한다. 행렬에서의 열 부분에 속한다.

레코드는 테이블에 저장된 항목으로 행렬에서 행 부분에 속한다.

 

기본키

각 테이블에 고유한 id라는 필드가 있는데 각 테이블의 레코드 하나를 가리키는 숫자로 데이터가 추가될 때마다 자동적으로 그 값이 증가한다. 이러한 id 필드는 해당 테이블의 기본키 역할을 한다.

 

외래키

다른 테이블에서 테이블의 기본 키를 참조할 때 해당 값을 외래 키라고 한다.

 

한 열에 여러 값을 저장하게 되면 상수 시간에 대한 검색 손실이 발생하게 된다. 그렇기에 여러 개의 레코드를 만드는 방법을 생각해 볼 수 도 있지만 이 경우에도 하나의 출처라고 볼 수 없는 등 에러 사항이 발생한다.

 

1대 N 관계 (선생님과 과목의 관계)

1대 N 관계를 표현할 때는 1인 테이블을 N인 테이블에 저장을 해두는 것이 가장 합리적인 방법이다.

 

N대 N 관계 (과목과 학생의 관계)

1대 N 관계가 두 번 이루어진다고 생각하면 된다. 이를 join 테이블이라고 한다.

 

 

 

 

'개념정리' 카테고리의 다른 글

12/9[TIL]Authentication  (0) 2020.12.09
12/7[TIL]MVC Pattern  (0) 2020.12.07
11/24[TIL]Redux  (0) 2020.11.24
11/23[TIL]Module / Bundler / 비동기 / Virtual Dom / Hooks  (0) 2020.11.23
11/19[TIL]React  (0) 2020.11.19