데이터베이스 mysql 설치 스키마 구현

홍진우·2022년 3월 27일
0

Back-End

목록 보기
6/10

mysql 설치


본격적으로 데이터베이스와 api를 연동해보자!

가장 먼저, 앞서 설정한 가상환경에 mysql을 설치

이후, root 사용자의 비밀번호를 설정해주어야 한다.
잘 설치되었음을 알 수 있음

스키마 구현

미니터 (miniter) API에 MySQL 데이터베이스 관리 시스템 (RDBMS, Relation Databse Management System)을 연결하여 데이터를 저장하기 위한 스키마 정의

  • user_follow_list는 users테이블과 many to many 관계로 users table에 id를 통한 외부 키로 연결
  • tweets 테이블은 사용자의 트윗들을 저장한 테이블이며 users테이블과 one to many 관계

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;

명령어를 통해 생성된 테이블 확인 가능

profile
Yonsei Univ. Sports Industry studies/ Computer Science / Applied Statistics

0개의 댓글