[러닝하이] DataBase 설계(계정 생성, ERD Cloud)

수박이삼촌·2024년 3월 18일
0

러닝하이

목록 보기
2/11
post-thumbnail

이제 프로젝트 빌드까지 성공했으니, 데이터베이스를 정리할 때입니다.

저희 러닝 하이에서는 `MySQL 8.0.30'버전을 사용하고 있음을 알려드립니다.

🐳 MySQL 사용 이유

러닝하이 팀이 MySQL을 사용한 가장 큰 이유는 RDBMS인 점입니다.

RDBMS는 테이블 별로 필요한 데이터들만을 저장하고, 외래 키를 이용해 관련된 테이블의 데이터들을 저장할 수 있습니다. 데이터 수정 시에도 다른 테이블의 연관된 데이터도 일괄 수정되며 데이터 일관성을 가질 수 있습니다.

조회 시에도 조건을 추가하여 복잡한 쿼리로 상세한 데이터를 식별해서 조회가 가능하다는 점에서도 큰 장점을 갖고 있습니다. 트랜잭션을 이용해 동시성 제어가 되는 점도 선택의 이유 중 하나였습니다.

RDMS 중 MySQL은 오픈소스로 접근성이 가장 편했습니다. 다양한 커뮤니티가 형성되어 있어 래퍼런스가 많다는 것도 하나의 이유였습니다.

🕺🏻 DB 관리 계정 생성 및 권한 설정

로컬 환경에서도 개발 진행 시,
프로젝트 전용 DB에 전용 계정과 권한을 주어 다른 프로젝트에서 접근이 불가능하게 설정해두었습니다.


-- 1) 새로운 계정 만들기
CREATE USER 'new ID'@'%' IDENTIFIED BY  'Password'; -- 'localhost' 대신 '%'를 쓰면 외부 ip로 접속 가능합니다.

-- 2) 데이터베이스 생성 후 계정에 권한 부여
-- 데이터베이스(스키마) 생성
CREATE DATABASE DB;
-- CREATE SCHEMA DB;
-- MySQL은 개념적으로 database와 schema를 구분하지 않습니다.
-- (CREATE DATABASE와 CREATE SCHEMA가 같은 개념입니다.)

GRANT ALL PRIVILEGES ON midnight.* TO 'midnight'@'%';    -- menu에 대한 모든 권한 부여

SHOW GRANTS FOR 'midnight'@'%';

🪜 ERD Cloud

이전에 진행했던 이벤트 스토밍을 통해 정리된 AggregateEntity를 기준으로 Table을 만들어 논리적/물리적 DataBase 설계를 진행하였습니다.

확실히 이벤트 스토밍을 통해서 이벤트를 정리하니 DB 연관 관계를 손쉽게 연결했어요🤣🤣!

  • 즐겨찾기 테이블은 생성과 삭제가 빈번하게 발생할 것 같아 복합 키로 구성하였습니다.

  • 게시글, 댓글, 이미지, 회원에서 행 삭제가 이루어지지 않고 상태 값으로 삭제 여부를 판단합니다. 그 이유는, 악성 사용자의 악의적인 행위를 삭제하지 않고 기록하기 위해서입니다.

profile
Today I Learned

0개의 댓글