본격적으로 데이터베이스와 api를 연동해보자!
가장 먼저, 앞서 설정한 가상환경에 mysql을 설치
이후, root 사용자의 비밀번호를 설정해주어야 한다.
잘 설치되었음을 알 수 있음
미니터 (miniter) API에 MySQL 데이터베이스 관리 시스템 (RDBMS, Relation Databse Management System)을 연결하여 데이터를 저장하기 위한 스키마 정의
root 사용자로 mysql 데이터 베이스에 로그인
-u: Mysql에 접속할 사용자의 아이디를 명시하는 옵션
-p: password를 직접 입력하겠다고 명시하는 옵션
CREATE DATABASE miniter
USE miniter;
명령어를 통해 데이터베이스 생성
mysql은 데이터베이스 시스템이며, 그 시스템안에 데이터베이스, 그 데이터베이스 안에 여러 테이블이 존재하는 구조
users table
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
hashed_password VARCHAR(255) NOT NULL,
profile VARCHAR(2000) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY (email)
) DEFAULT CHARSET=utf8;
users_follow_list table
CREATE TABLE users_follow_list (
user_id INT NOT NULL,
follow_user_id INT NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (user_id, follow_user_id),
CONSTRAINT users_follow_list_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id),
CONSTRAINT users_follow_list_follow_user_id_fkey FOREIGN KEY (follow_user_id) REFERENCES users(id)
) DEFAULT CHARSET=utf8;
tweets table
CREATE TABLE tweets (
id INT NOT NULL AUTO_INCREMENT,
user_id INT NOT NULL,
tweet VARCHAR(300) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
CONSTRAINT tweets_user_id_fkey FOREIGN KEY (user_id) REFERENCES users(id)
) DEFAULT CHARSET=utf8;
AUTO_INCREMENT: 해당 column의 값이 자동으로 1씩 증가
DEFAULT CURRENT_TIMESTAMP: 해당 column의 값이 없으면 default로 현재 시간을 사용
ON UPDATE CURRENT_TIMESTAMP: 해당 row의 어떤 column 값이 수정되면 해당 column의 값을 수정이 이루어진 시간의 값으로 자동생성
PRIMARY KEY: primary key 사용할 column을 지정
UNIKEY KEY: 해당 column의 값은 중복되면 안됨.
show tables;
명령어를 통해 생성된 테이블 확인 가능