본문 바로가기

블록체인 기반 핀테크 및 응용 SW개발자 양성과정 일기

[36일차 복습 및 정리] sequelize 찍먹, mySQL JOIN에 대해 (mySQl left join, right join, inner join, full outer join)

반응형

오늘 수업은 sequelize 이론, db스키마 등 큰 그림(?) 그리는 걸 배웠다. 

 

Sequelize 는 orm 의 일종이다. sequelize는 다양한 dbms에 사용 가능하다. (dbms들이 보통 테이블 형태이기 때문) 

Orm(Object Relational Mapping ) 이란 ?? = DATA를 객체로 표현하는 것 (JavaScript의 객체를 공부 더 해봐야겠다. ) 

* mapping - 엑셀 (객체(?)) 처럼 똑같이 사용되는 ? 

* 매핑

 

매핑(mapping)이란 하나의 값을 다른 값으로 대응시키는 것을 말한다. 한자로는 사상(寫像)이라고 한다. '맵핑'이 아니라 '매핑'이 올바른 표기법이다. 매핑은 지도를 뜻하는 맵(map)에서 나온 말이다. 지도에 표시한 정보가 현실 세계와 1:1로 대응하듯이, 매핑을 통해 하나의 값을 다른 값으로 1:1 대응시키는 것을 말한다. 네임서버 도메인 이름 IP 주소로 매핑시키는 역할을 한다. 컴퓨터의 기억장치를 각각의 루틴이나 데이터 영역에 할당하는 것도 매핑의 일종이다.

 

 

관계 정의하기 324p 

게시판을 만들 때 순서는 데이터베이스 스키마를 먼저하는 편이 좋다고 한다. 

회색 -table명, 흰색 - field명 

 

 

 

-----------------------------------------------------------------------------------------------------------------------------

 

  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 수를 줄여준다.

키워드 중복 묶음-> 데이터 효율화 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

--------------------------------------------------------------------------------------------------------------------------

 

데이터 베이스 스키마 작성해보기 

 

* 스키마란? 데이터베이스 구조와 제약조건에 관해 전반적인 명세를 기술한 것 

* 화면 정의 (기획 영역이지만 개발자들도 머릿속에 그려져 있어야 한다. ) 

-> 이걸 보고 백엔드 구축 

 

스키마란? 

jwprogramming.tistory.com/47

 

스키마란? (개념스키마, 내부스키마, 외부스키마)

Database의 시작을 무엇으로 할 까 하다가.. 스키마에 대한 내용으로 시작하게 되었습니다. 스키마의 소개와 개념/내부/외부 스키마의 정의와 특징에 대해 살펴보겠습니다. 먼저 스키마란 - 데이

jwprogramming.tistory.com

 

 

저번 주부터 해온 게시판을 다시 그림판으로 그리면서 정리해봤다. 

 

이렇게 그림판으로 안그려도 편리하게 할 수 있는 카카오 오븐 online prototype tool

ovenapp.io/

 

OvenApp.io

Oven(오븐)은 HTML5 기반의 무료 웹/앱 프로토타이핑 툴입니다. (카카오 제공)

ovenapp.io

 

-------------------------------------------------------------------------------------------------------------------------

 

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  

아래에 문법과 예시 공부 겸 정리했다. 뭔가 수학의 교집합할 때가 생각나는..... 

blckchainetc.tistory.com/90

 

[36일차 복습 및 정리2] MySQL JOIN 정리 (left join, right join, inner join, full outer join, union etc. )

먼저 mySQL에 data가 있어야 join이 가능하기 때문에 database와 tables를 만들어 준다. join은 교집합의 의미이므로 tables는 최소 2개 이상 만들기! Visual Studio 에서 sql 파일을 만들고 아래 코드를 작성 CR..

blckchainetc.tistory.com

 

 

 

 

 

 

 

sequelize 다루기

baeharam.netlify.app/posts/Node.js/Node.js-Sequelize-%EB%8B%A4%EB%A3%A8%EA%B8%B0

 

[Node.js] Sequelize 다루기 - 배하람의 블로그

개요 ORM(Object-Relational Mapping)은 객체지향 패러다임을 활용하여 관계형 데이터베이스(RDB)의 데이터를 조작하게 하는 기술이다. 이를 활용하면 쿼리를 작성하지 않고도 객체의 메서드를 활용하는

baeharam.netlify.app

 

반응형