오늘 수업은 sequelize 이론, db스키마 등 큰 그림(?) 그리는 걸 배웠다.
Sequelize 는 orm 의 일종이다. sequelize는 다양한 dbms에 사용 가능하다. (dbms들이 보통 테이블 형태이기 때문)
Orm(Object Relational Mapping ) 이란 ?? = DATA를 객체로 표현하는 것 (JavaScript의 객체를 공부 더 해봐야겠다. )
* mapping - 엑셀 (객체(?)) 처럼 똑같이 사용되는 ?
* 매핑
매핑(mapping)이란 하나의 값을 다른 값으로 대응시키는 것을 말한다. 한자로는 사상(寫像)이라고 한다. '맵핑'이 아니라 '매핑'이 올바른 표기법이다. 매핑은 지도를 뜻하는 맵(map)에서 나온 말이다. 지도에 표시한 정보가 현실 세계와 1:1로 대응하듯이, 매핑을 통해 하나의 값을 다른 값으로 1:1 대응시키는 것을 말한다. 네임서버는 도메인 이름을 IP 주소로 매핑시키는 역할을 한다. 컴퓨터의 기억장치를 각각의 루틴이나 데이터 영역에 할당하는 것도 매핑의 일종이다.
관계 정의하기 324p
게시판을 만들 때 순서는 데이터베이스 스키마를 먼저하는 편이 좋다고 한다.
-----------------------------------------------------------------------------------------------------------------------------
1:N
ex) 게시판 안의 하나의 게시물에 달린 댓글들
FK 라는 개념을 처음 알게되었다.
Foreign Key - 내가 참조할 idx 값
1:1
id, pw, name만 받고 (로그인, 메인화면 등 자주 쓰는 field를 따로 빼놓고)
상세정보들은 따로 분리하는 것 (데이터적으로 쌓아놓는 부분)
N:M
ex) 인스타그램 tag 기능
첫 번째 피드에 1번 내용이 있다.
tag를 달게 되면 여러개의 해시태그나 나온다.
태그들을 1:n으로 만든다.
(? 잘 모르겠다. 무슨말인지..)
만약 게시판에 필드가 여러개 있다고 생각해보면
#맞팔 #소통해요 이런 겹치는 해시태그들이 많을 것이다.
=> 요런 것들을 하나로 묶는다.
이게 N:M
피드 - 여러명의id가 사용
피드가 피드tag 창조
피드tag가 tag 창조
table row 수를 줄여준다.
키워드 중복 묶음-> 데이터 효율화
--------------------------------------------------------------------------------------------------------------------------
데이터 베이스 스키마 작성해보기
* 스키마란? 데이터베이스 구조와 제약조건에 관해 전반적인 명세를 기술한 것
* 화면 정의 (기획 영역이지만 개발자들도 머릿속에 그려져 있어야 한다. )
-> 이걸 보고 백엔드 구축
스키마란?
저번 주부터 해온 게시판을 다시 그림판으로 그리면서 정리해봤다.
이렇게 그림판으로 안그려도 편리하게 할 수 있는 카카오 오븐 online prototype tool
-------------------------------------------------------------------------------------------------------------------------
table 3개 만들기
CREATE DATABASE board;
use board;
CREATE TABLE boardTB(
idx INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
subject VARCHAR(100) NOT NULL,
userId VARCHAR(50) NOT NULL,
content TEXT,
today DATETIME DEFAULT CURRENT_TIMESTAMP,
hit INT(11) DEFAULT 0
) AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
CREATE TABLE userTB(
userId VARCHAR(100) NOT NULL UNIQUE,
userPw VARCHAR(255) NOT NULL,
userName VARCHAR(30) NOT NULL,
userImage VARCHAR(255) NOT NULL
)DEFAULT CHARSET=utf8mb4;
CREATE TABLE commentTB(
idx INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
userId VARCHAR(50) NOT NULL,
content TEXT,
today DATETIME DEFAULT CURRENT_TIMESTAMP
)DEFAULT CHARSET=utf8mb4;
교집합 JOIN
* join을 사용하려면 tables 안에 data가 있어야함.
* left join
* join문을 사용할 수 있어야 설계할 때 가능, tables를 쪼개면서 내가 필요한 부분들을 가져올 수 있어야 제대로된 db를 사용할 수 있다.
* table관계도에 대해 업그레이드를 위함.
JOIN
아래에 문법과 예시 공부 겸 정리했다. 뭔가 수학의 교집합할 때가 생각나는.....
sequelize 다루기
baeharam.netlify.app/posts/Node.js/Node.js-Sequelize-%EB%8B%A4%EB%A3%A8%EA%B8%B0
'블록체인 기반 핀테크 및 응용 SW개발자 양성과정 일기' 카테고리의 다른 글
[37일차 복습 및 정리] MySQL sequelize 시퀄라이즈 세팅, Node.js express CRUD 시퀄라이즈 사용법 (0) | 2021.05.05 |
---|---|
[37일차] 20210504 sequelize 세팅하기(visual studio) , sequelize 사용해보기 (0) | 2021.05.04 |
[36일차 복습 및 정리2] MySQL JOIN 정리 (left join, right join, inner join, full outer join, union etc. ) (0) | 2021.05.03 |
[36일차] 2021053 sequelize database 스키마 작성해보기/ JOIN (0) | 2021.05.03 |
[36일차 예습 숙제] Sequelize 시퀄라이즈란?? (0) | 2021.05.03 |