관리 메뉴

Dev Blog

11. Databases 본문

BootCamp_Codestates/IM Tech Blog

11. Databases

Yongjae Kim 2021. 1. 13. 20:49

Structured Query Language with Database

Server with Database

 

Achievement Goals

Learn SQL

  • SQL과 Schema가 무엇인지 스스로 정의할 수 있다.
  • 1:N, N:N 관계를 이해하고, 데이터베이스에서 테이블을 조작할 수 있다.
  • Learn SQL에서 다루는 SQL을 사용 혹은 활용할 수 있다.

Chatterbox Database

  • Database가 무엇인지 스스로 정의할 수 있다.
  • persistance의 개념을 이해하고, 데이터베이스의 필요성을 인지한다.
  • schema를 설계할 수 있다.
  • 클라이언트의 http 요청에 따라 CRUD API를 구현할 수 있다. (CRUD: Create, Read, Update, Delete)

Database & SQL

 

Database : 필터링 외에도 File I/O 로 구현이 힘든 관리를 위한 여러 기능들을 가지고 있는 데이터 특화된 서버

SQL: 구조화된 Query 언어. 저장되어 있는 정보를 필터 하기 위한 질문으로 server 에서 database 로 query 를 보내 원하는 데이터만을 뽑아올 수 있다.

 

 

 

Learn SQL

문법은 여기에서 공부: www.w3schools.com/sql/default.asp

Quiz: www.w3schools.com/quiztest/quiztest.asp?qtest=SQL

Practice:www.w3schools.com/sql/sql_exercises.asp

 

주요 문법

 

Schema & Query Design

 

  • 데이터 간의 다양한 관계를 알아본다.
  • 데이터 간 관계를 기술하는 언어인 SQL 을 익힌다.
  • 합리적이고, 효율적인 방법으로 데이터베이스를 구성하는 방법을 이해한다.
  • SQL 쿼리를 작성하여 데이터베이스에서 관련 정보를 찾는 방법을 배운다.

Schema?

 

스키마는 데이터베이스에서 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명이다. 데이터베이스의 청사진.

https://dbdiagram.io/home 에서 연습해볼 수 있다.

1. 구성요소

 

1) Entities?

고유한 정보의 단위로 테이블이다.

 

여기에서 entity 는 Teachers, Classes, Students

 

2) Field?

엔티티의 특성을 설명하는 부분으로 행렬에서 Column 에 해당한다.

 

3) Record?

각 테이블에 저장된 항목으로 행렬에서는 row 다.

2. 관계

 

1) 1:1 (one to one, 일대일 관계)

일반적인 1:1 관계는 *Foreign Key(외래키)를 서로 주고 받아 관계를 형성합니다.

만약, 직원 당 사무실을 제공하는 회사가 있다고 가정하면 아래와 같이 표현할 수 있습니다.

출처: https://advenoh.tistory.com/31

*Foreign Key(외래키), 두 테이블을 서로 연결하는 데 사용되는 키.

 

2) 1: N (one to many, 일대다 관계)

한 교사는 여러 수업을 진행할 수 있지만, 하나의 수업은 단 한 명의 교사에 의해 진행된다. 따라서 1: N의 관계이다.

(단, 만약 하나의 수업을 다수의 다른 교사가 진행할 수 있다면 N:N 의 관계가 될 것이다.)

 

해결책

FK 가 포함된 테이블을 자식 테이블, FK 값을 제공하는 테이블을 부모 테이블이라 한다.

1:N = Teachers:Classes 이므로, Teachers 가 부모 테이블이다.

 

Teachers 테이블의 필드중 하나인 Primary Key(고유 Key. 여기에서 ID) 를 Classes 테이블의 필드인 TeacherID 가

가리키게 만드는 방법으로, 이로써 부모테이블의 PK 가 Classes 의 Foreign Key 로 지정된다.

The FOREIGN KEY constraint is used to prevent actions that would destroy links between tables.

The FOREIGN KEY constraint also prevents invalid data from being inserted into the foreign key column, because it has to be one of the values contained in the table it points to.

 

Classes 테이블의 구현 코드는 아래와 같다.

CREATE TABLE Classes (
    ID int NOT NULL,
    Name int NOT NULL,
    Room Num. int,
    PRIMARY KEY (ID),
    FOREIGN KEY (TeacherID) REFERENCES Teachers(ID)
); 

Teachers 테이블의 ID 필드가 생성되면 자동으로 Classes 의 해당 TeacherID 도 생성된다.

 

 

3) N:N (many to many 다대다 관계)

 

각 수업은 여러 명의 학생들로 구성되어 있고, 각 학생들은 여러개의 수업을 들을 수 있기 때문에 N:N 관계이다.

 

해결책

 

이 경우 JOIN 테이블을 만들어 두 테이블을 연결할 수 있는데,

Join(Classes/Students) 테이블의 ClassID 칼럼 값(Foreign Key)에는 Classes 의 ID(Primary Key) 값이,

StudenID 칼럼 값(Foreign Key)에는 Students 의 ID(Primary Key) 값이 들어간다.

 

따라서 전체 모습은 다음과 같다.

.

문제

 

'Kelly' 라는 교사가 당일 수업을 취소한다는 이메일을 해당 수업 학생들에게 보내야 하는 상황일 때,

해당 학생들의 이름과 이메일을 출력하는 방법은 무엇인가?

 

주어진 테이블은 다음과 같다.

 

정답

연결 순서: Students -> Classes/Students -> Classes - Teachers

구하고 싶은 칼럼을 포함한 테이블을 기준(출발점)으로 하여 조건을 주고 싶은 테이블까지 inner join (교집합) 으로 연결하여 구현한다.

여기에서 출발점은 Students 테이블, 조건은 Teachers 테이블에서 부여한다.

'BootCamp_Codestates > IM Tech Blog' 카테고리의 다른 글

13. authentication  (0) 2021.01.20
10. Redux  (0) 2021.01.11
8-1. React 데이터흐름 & State 끌어올리기  (0) 2021.01.05
8. React Part1  (0) 2021.01.01
5. Asynchronous & Promise  (0) 2020.12.21
Comments