티스토리 뷰

▶facebook 프로젝트 - 데이터베이스(Maria DB) 연결

 

🔎 데이터베이스 연결이 필요한 부분


  • 회원가입
    • 새로운 회원 정보를 저장
  • 로그인
    • 기존 회원의 정보인지, 있다면 값 비교
  • 홈 화면 게시물
    • 저장되어 있는 게시물 정보(제목, 내용, 사진 등) 불러오기
    • 게시물에 댓글 남기기
  • 게시판
    • 저장되어 있는 게시물 정보(제목, 내용) 불러오기
    • 새로운 게시물 저장하기
    • 기존 게시물 삭제하기
    • 기존 게시물 편집하기 

 

위와 같이 거의 모든 부분에서 데이터를 저장하고 불러오는 과정에서 데이터베이스가 필요했습니다.

 

🔎 Maria DB 설치 및 사용


Maria DB는 아래 사이트에서 쉽게 설치가 가능합니다.

 

Open Source Database (RDBMS) for the Enterprise | MariaDB

MariaDB provides open source database and database as a service (DBaaS) solutions to support scalability, mission-critical deployments, and more.

mariadb.com

참고로 저는 MySQL 포트 번호로 이미 3306번을 사용하고 있어서 Maria DB 포트 번호는 3310번으로 설정해 주었습니다.

 

Maria DB에 접속하는 방법은 MySQL ClientHeidiSQL이 있는데, ( Maria DB를 설치하면 생성됩니다 )

HeidiSQL이 훨씬 편하기 떄문에 이 방법을 이용하여 진행했습니다.

HeidiSQL

 

🔎 데이터베이스 생성 및 테이블 구성하기


위에서 데이터베이스가 필요한 부분에 대해서 생각해 보았었는데, 이를 바탕으로 데이터베이스를 생성하고 테이블을 구성하였습니다.

facebook 데이터베이스 후 테이블 구성

facebook이라는 본 프로젝트 데이터를 관리할 데이터베이스를 생성했습니다.

그 안에는 게시판 글에 대한 테이블(board), 댓글에 대한 테이블(comment), 사용자 정보와 관련된 테이블(users)를 생성해 주었습니다.

 

💼 board 테이블

board 테이블

  • boardid : 본 테이블의 PK. 게시물 하나하나 마다 고유한 값을 가짐. AUTO_INCREMENT를 기본값으로 주어 지정하지 않아도 값을 가지도록
  • title: 게시물 제목
  • text: 게시물 내용
  • regdate: 게시 날짜

 

💼 comment 테이블

comment 테이블

  • cmtid: 본 테이블의 PK. 댓글 하나하나가 고유한 값을 가짐. AUTO_INCREMENT를 기본값으로 주어 지정하지 않아도값을 가지도록
  • homeid: 댓글이 작성된 게시물의 id
  • text: 댓글 내용

 

💼 home 테이블

home 테이블

  • homeid: 본 테이블의 PK. 댓글 하나하나가 고유한 값을 가짐. AUTO_INCREMENT를 기본값으로 주어 지정하지 않아도값을 가지도록
  • title: 게시물 제목
  • subtitle: 게시물 부제목
  • tags: 게시물 내용 중 하나
  • url: 게시물 내용 중 하나
  • text: 게시물 내용
  • image: 게시물 이미지
  • likecount: 좋아요 수

 

💼 users 테이블

users 테이블

  • userid: 본 테이블의 PK. 댓글 하나하나가 고유한 값을 가짐. AUTO_INCREMENT를 기본값으로 주어 지정하지 않아도값을 가지도록
  • email: 이메일 정보
  • password: 비밀번호
  • birthday: 생일 정보
  • gender: 성별 정보
  • updatetime: 업데이트 타임
  • createtime: 생성 타임

 

🔎 Maria DB 연결


📌mysql 패키지 설치

$ npm i mysql

 

 

📌src/api/maria.js 생성

가장 먼저 방금 install한 mysql 패키지를 불러와야겠죠?

const mysql = require('mysql');

이제 데이터베이스를 연결하기 위해서 연결 설정 정보를 객체에 담아줄겁니다.

참고로 해당 정보들은 노출되어서는 안 되므로 따로 파일을 생성하여 관리합니다.

config/db.config.js 라는 파일을 만들어 정보를 담아 가져와 쓰는 방법이 더 좋은 방법일 거 같습니다.

const conn = {
  // 연결 설정 정보
  host: '127.0.0.1',
  port: '3310',
  user: 'root',
  password: '****',
  database: 'facebook',
};

이제 생성한 연결 설정 정보 객체를 이용하여 연결을 시도합니다.

const connection = mysql.createConnection(conn);
connection.connect();

앞으로는 Maria라는 객체에 쿼리문을 통해 리턴값을 받아내는 메서드를 정의하여 api 통신 때 하나씩 사용할 예정 입니다.

 

저는 파일 하나에 연결 정보를 같이 작성했지만, 그 정보를 따로 작성하고 사용하는 코드를 아래에 적어놓도록 하겠습니다!

 

📄 src/config/db.config.js

module.exports = {
    HOST: "localhost",
    USER: "root",
    PASSWORD: "123456",
    DB: "new_db"
};

 

📄 src/api/maria.js

const mysql = require("mysql");
const dbConfig = require("../config/db.config.js");

// 데이터베이스 연결 설정 정보
const conn = {
    host: dbConfig.HOST,
    user: dbConfig.USER,
    password: dbConfig.PASSWORD,
    database: dbConfig.DB
};

const Maria = {};

// Maria.findAccountid = ...
// 이런식으로 메서드를 만들어 나가고
// src/api/index.js에서 api와 같이 사용할 예정!

module.exports = Maria;

 

728x90
LIST
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함