Backend session -3

SSO·2022년 5월 16일
0

LikeLion10th

목록 보기
13/16

Header, Params

  • Header : 리퀘스트 헤더에 포함된 파라미터. 보통 인증 혹은 권한 부여에 관련되어 있다.
  • query string 파라미터 : 사용자가 입력 데이터를 전달하는 방법 중의 하나
  • request params : api/posts/:id req.params resource path에서 값을 전달하는 방법
  • request body : api/posts req.body 클라이언트가 api로 보낸 데이터. 보통 json 형식으로 제출된다.

데이터베이스

데이터베이스란

  • 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임
  • 다수의 사용자가 사용하는 데이터들의 공유와 운영을 위해 저장해 놓는 공간.

데이터베이스는 두 가지의 분류로 나눌 수 있다.

1. RDB

RDB는 관계형 데이터베이스로 MySQL, SQLite, Oracle이 예시이다.
RDB는 데이터 간의 관계를 정의한다.

사용
- 데이터 구조가 명확하여 변경될 여지가 없을 때
- 명확한 스키마가 중요할 때
- 자주 변경이 되는 시스템

2. NoSQL

NoSQL은 비관계형 데이터베이스로 주로 MongoDB와 Redis를 예시로 들 수 있다.
이는 RDB와 다르게 데이터 간의 관계를 정의하지 않는다.

사용
- 정확한 데이터 구조를 알 수 없어, 변경/확장이 될 때
- 업데이트가 적은 시스템
- 막대한 데이터를 저장할 때
=> RDBMS보다 덜 제한적인 모델을 이용하는 데이터의 저장 및 검색을 위한 데이터베이스로 스키마가 없어 더 자유롭다!

스키마

: 데이터 모델 간의 관계 정의

  • 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조
  • 스키마 설계 - 모델 간의 관계 정의 → RDB
    데이터베이스 모델은 데이터베이스가 어떻게 구조화되고 쓰이는지를 알려주는 이론이나 상세한 설명을 말함

model

  • 여기서 말하는 모델은 데이터 모델
  • 데이터의 관계, 접근과 그 흐름에 필요한 처리 과정에 관한 추상화된 모형
  • db모델

key

: 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 속성 (후보키/기본키/외래키/슈퍼키/대체키)

후보키 (Candidate key)
각 테이블에서 각 튜플들을 구별하는 데에 기준이 되는 하나 혹은 그 이상의 칼럼들의 집합
후보키 중 하나가 기본키가 된다!

기본키 (Primary key)
후보키 중에서 선택한 주 키로 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
null값 x, 동일한 값 중복 저장 x

외래키 (foreign key)
관계를 맺고 있는 relation r1, r2에서 r1이 참조하고 있는 r2의 기본키와 같은 r1의 속성. 참조되는 relation의 기본키와 대응되어 relation 간의 참조관계를 표현하는 데에 중요한 도구!

대체키
후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키

슈퍼키
유일성과 최소성을 만족하는 키
- 유일성 : 하나의 키 값으로 하나의 튜플을 유일하게 식별할 수 있어야 한다.
- 최소성 : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어 있다. (무조건 하나일 필요 x)

관계

1:1
개체집합 A의 각 원소가 개체집합 B인 원소 한 개와 대응
→ 한 남자는 한 여자와, 한 여자는 한 남자와만 결혼할 수 있다.

1:N
개체집합 A의 각 원소는 개체집합 B의 원소 여러 개와 대응하고 있지만, 개체집합 B의 각 원소는 개체집합 A의 원소 한 개와 대응하는 관계
→ 자식은 부모 한 쌍만 가질 수 있지만, 부모는 여러 자식을 낳을 수 있다.

M:N
개체집합 A의 각 원소는 개체집합 B의 원소 여러개와 대응하고 개체집합 B의 각 원소도 개체집합 A의 원소 여러개와 대응
→ 학생은 학원을 여러개 다닐 수 있고, 학원도 학생을 여러명 등록할 수 있다.

MySQL 실습

실행
mysql -u root -p

데이터베이스 조회
show database;

테이블 조회
show tables;

데이터베이스 생성
create database 데이터베이스명;

조작어 (CRUD)

CREATE

CREATE TABLE 테이블명 (
	컬럼명1 타입,
	컬럼명2 타입,
	컬럼명3 타입,
	PRIMARY KEY(해당 컬럼명)
	foreign key (client_id) references client (id)
);
INSERT INTO 테이블명(컬럼명1, 컬럼명2) VALUES(1데이터값, 2데이터값);

READ

SELECT * FROM 테이블명;

UPDATE

UPDATE 테이블명 SET 바꿀컬럼=바꿀값 where 조건 

DELETE

DELETE FROM 테이블명 WHERE 조건;

JOIN

SELECT * FROM 테이블명 JOIN 조인할 테이블 ON 테이블명.컬럼 =  테이블명.컬럼;
profile
Github_qkrthdus605

0개의 댓글