Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 코드잇da
- t-test
- 코드잇데이터분석
- 코드잇
- 지원후기
- 스프린트
- 데이터분석가
- 1종오류
- 코드잇스프린트수료후기
- T검정
- 스프린터의봄
- 대립가설
- 선발후기
- 코드잇스프린트
- p값
- 코드잇스프린트프리코스
- codeitconference2025
- 대응표본T검정
- 코드잇스프린트da
- 독립표본T검정
- 통계적가설검정
- 2종오류
- 데이터분석
- 이상치
- 수료후기
- 단일표본t검정
- 결측치
- 코드잇스프린트후기
- 데이터전처리
- 취업까지달린다
Archives
- Today
- Total
Ori's IT 공부일지
[미션17] Fandom-K 서비스 DB 구축하기 본문
Fandom-K는 K-pop 아티스트와 팬을 이어주는 글로벌 조공 플랫폼으로, 해당 서비스의 DB 구축해보는 미션
[내가 좋아하는 아이돌을 가장 쉽게 덕질하는 방법, Fandom-K]
주요 기능
1.후원하기
- 크레딧은 Fandom-K에서 사용하는 가상 화폐
- 소유하고 있는 크레딧을 유저가 원하는 조공에 후원 가능
- 후원할 크레딧은 유저가 보유하고 있는 크레딧 내에서 자유롭게 결정 가능
- 여러 유저의 후원을 통해 크레딧 목표치가 달성되면 조공 이루어짐
2. 이달의 아티스트 투표하기
- 카테고리 별로 유저가 원하는 아티스트에게 투표 가능
- 한 번 투표하는 데 일정 크레딧 소모 ( 예시 화면 : 1000크레딧 소모 )
- 한 유저가 여러 아티스트에게 투표 가능, 투표 횟수 무제한
3. 나만의 아티스트
- 마이페에지에서 좋아하는 아티스트 팔로우 가능 (여러 명 가능)
- 팔로우한 아티스트의 여러 소식을 메인 화면에서 확인 가능
4. 충전하기
- 원하는 만큼 크레딧 충전 가능
- Fandom-K의 주요 매출은 크레딧 판매 수수료로 발생
1. ERD Cloud 캡쳐본

2. SQL DDL문
CREATE DATABASE FandomK;
USE FandomK;
CREATE TABLE `user` (
user_id INT NOT NULL,
`name` VARCHAR(10) NOT NULL,
gender ENUM('m','f') NOT NULL,
birthday DATETIME NOT NULL,
address TEXT NOT NULL,
mail TEXT NOT NULL,
sign_up_day DATETIME NOT NULL,
PRIMARY KEY (user_id)
);
CREATE TABLE artist (
artist_id INT NOT NULL,
`name` VARCHAR(10) NOT NULL,
`group` VARCHAR(20) NULL,
company VARCHAR(20) NOT NULL,
real_name VARCHAR(20) NOT NULL,
gender ENUM('m','f') NOT NULL,
birthday DATETIME NOT NULL,
PRIMARY KEY (artist_id)
);
CREATE TABLE favorite_artist (
user_id INT NOT NULL,
artist_id INT NOT NULL,
artist_news_id INT NOT NULL,
created_date DATETIME NOT NULL,
category ENUM('관심추가','관심해제') NOT NULL
);
CREATE TABLE artist_news (
artist_news_id INT NOT NULL,
artist_id INT NOT NULL,
title VARCHAR(300) NOT NULL,
content TEXT NOT NULL,
created_date DATETIME NOT NULL,
update_date DATETIME NOT NULL
);
CREATE TABLE credit_now (
credit_now_id INT NOT NULL,
user_id INT NOT NULL,
now_amount INT NOT NULL,
created_date DATETIME NOT NULL,
update_date DATETIME NOT NULL
);
CREATE TABLE credit_charge (
credit_cg_id INT NOT NULL,
user_id INT NOT NULL,
credit_now_id INT NOT NULL,
cg_amount INT NOT NULL,
payment INT NOT NULL,
pay_method ENUM('card','cash') NOT NULL,
`date` DATETIME NOT NULL
);
CREATE TABLE credit_use (
credit_use_id INT NOT NULL,
user_id INT NOT NULL,
credit_now_id INT NOT NULL,
used_amount INT NOT NULL,
purpose ENUM('support','vote') NOT NULL,
use_date DATETIME NOT NULL
);
CREATE TABLE sales (
sales_id INT NOT NULL,
credit_cg_id INT NOT NULL,
pay_range INT NOT NULL,
percent FLOAT NOT NULL,
sales INT NOT NULL
);
CREATE TABLE support (
support_id INT NOT NULL,
ad_id INT NOT NULL,
user_id INT NOT NULL,
credit_use_id INT NOT NULL
);
CREATE TABLE vote (
vote_id INT NOT NULL,
chart_id INT NOT NULL,
user_id INT NOT NULL,
artist_id INT NOT NULL,
credit_use_id INT NOT NULL,
vote_summary_id INT NOT NULL
);
CREATE TABLE vote_summary (
vote_summary_id INT NOT NULL,
artist_id INT NOT NULL,
vote_counts INT NOT NULL,
vote_rank INT NOT NULL,
`year` INT NOT NULL,
`month` INT NOT NULL
);
CREATE TABLE advertisement (
ad_id INT NOT NULL,
artist_id INT NOT NULL,
title TEXT NULL,
category ENUM('지하철광고','생일카페','커피차','간식차','기타') NOT NULL,
total_credit_target INT NOT NULL,
deadline_date DATETIME NOT NULL,
total_credit INT NOT NULL,
`status` ENUM('모금중','조공완료','달성실패') NOT NULL
);
CREATE TABLE charts (
chart_id INT NOT NULL,
category ENUM('이달의 여자 아이돌','이달의 남자 아이돌','이달의 그룹 아이돌') NOT NULL
);
-- favorite_artist pk 설정
ALTER TABLE favorite_artist
ADD CONSTRAINT `PK_favotie_artist`
PRIMARY KEY (user_id, artist_id);
-- artist_news pk 설정
ALTER TABLE artist_news
ADD CONSTRAINT `PK_artist_news`
PRIMARY KEY (artist_news_id);
-- credit_now pk 설정
ALTER TABLE credit_now
ADD CONSTRAINT `PK_credit_now`
PRIMARY KEY (credit_now_id, user_id);
-- credit_charge pk 설정
ALTER TABLE credit_charge
ADD CONSTRAINT `PK_credit_charge`
PRIMARY KEY (credit_cg_id);
-- credit_use pk 설정
ALTER TABLE credit_use
ADD CONSTRAINT `PK_credit_use`
PRIMARY KEY (credit_use_id);
-- sales pk 설정
ALTER TABLE sales
ADD CONSTRAINT `PK_sales`
PRIMARY KEY (sales_id,credit_cg_id);
-- support pk 설정
ALTER TABLE support
ADD CONSTRAINT `PK_support`
PRIMARY KEY (support_id, ad_id);
-- vote pk 설정
ALTER TABLE vote
ADD CONSTRAINT `PK_vote`
PRIMARY KEY (vote_id, chart_id);
-- vote_summary pk 설정
ALTER TABLE vote_summary
ADD CONSTRAINT `PK_vote_summary`
PRIMARY KEY (vote_summary_id);
-- advertisement pk 설정
ALTER TABLE advertisement
ADD CONSTRAINT `PK_advertisement`
PRIMARY KEY (ad_id);
-- charts pk 설정
ALTER TABLE charts
ADD CONSTRAINT `PK_charts`
PRIMARY KEY (chart_id);
-- favorite_artist fk 설정
ALTER TABLE favorite_artist
ADD CONSTRAINT `FK_user_to_favorite_artist_1`
FOREIGN KEY (user_id)
REFERENCES `user` (user_id);
ALTER TABLE favorite_artist
ADD CONSTRAINT `FK_artist_TO_favorite_artist_2`
FOREIGN KEY (artist_id)
REFERENCES artist (artist_id);
ALTER TABLE favorite_artist
ADD CONSTRAINT `FK_artist_TO_favorite_artist_3`
FOREIGN KEY (artist_news_id)
REFERENCES artist_news (artist_news_id);
-- artist_news fk 설정
ALTER TABLE artist_news
ADD CONSTRAINT `FK_artist_TO_artist_news_1`
FOREIGN KEY (artist_id)
REFERENCES artist (artist_id);
-- credit_now fk 설정
ALTER TABLE credit_now
ADD CONSTRAINT `FK_user_TO_credit_now_1`
FOREIGN KEY (user_id)
REFERENCES `user` (user_id);
-- credit_charge fk 설정
ALTER TABLE credit_charge
ADD CONSTRAINT `FK_user_TO_credit_charge_1`
FOREIGN KEY (user_id)
REFERENCES `user` (user_id);
ALTER TABLE credit_charge
ADD CONSTRAINT `FK_credit_now_TO_credit_charge_1`
FOREIGN KEY (credit_now_id)
REFERENCES credit_now (credit_now_id);
-- credit_use fk 설정
ALTER TABLE credit_use
ADD CONSTRAINT `FK_user_TO_credit_use_1`
FOREIGN KEY (user_id)
REFERENCES `user` (user_id);
ALTER TABLE credit_use
ADD CONSTRAINT `FK_credit_now_TO_credit_use_1`
FOREIGN KEY (credit_now_id)
REFERENCES credit_now (credit_now_id);
-- sales fk 설정
ALTER TABLE sales
ADD CONSTRAINT `FK_credit_charge_TO_sales_1`
FOREIGN KEY (credit_cg_id)
REFERENCES credit_charge (credit_cg_id);
-- support fk 설정
ALTER TABLE support
ADD CONSTRAINT `FK_ad_TO_support_1`
FOREIGN KEY (ad_id)
REFERENCES advertisement (ad_id);
ALTER TABLE support
ADD CONSTRAINT `FK_user_TO_support_1`
FOREIGN KEY (user_id)
REFERENCES `user` (user_id);
ALTER TABLE support
ADD CONSTRAINT `FK_credit_use_TO_support_1`
FOREIGN KEY (credit_use_id)
REFERENCES credit_use (credit_use_id);
-- vote fk 설정
ALTER TABLE vote
ADD CONSTRAINT `FK_charts_TO_vote_1`
FOREIGN KEY (chart_id)
REFERENCES charts (chart_id);
ALTER TABLE vote
ADD CONSTRAINT `FK_user_TO_vote_1`
FOREIGN KEY (user_id)
REFERENCES `user` (user_id);
ALTER TABLE vote
ADD CONSTRAINT `FK_artist_TO_vote_1`
FOREIGN KEY (artist_id)
REFERENCES artist (artist_id);
ALTER TABLE vote
ADD CONSTRAINT `FK_credit_use_TO_vote_1`
FOREIGN KEY (credit_use_id)
REFERENCES credit_use (credit_use_id);
ALTER TABLE vote
ADD CONSTRAINT `FK_vote_summary_TO_vote_1`
FOREIGN KEY (vote_summary_id)
REFERENCES vote_summary (vote_summary_id);
-- vote_summary fk 설정
ALTER TABLE vote_summary
ADD CONSTRAINT `FK_artist_TO_vote_summary_1`
FOREIGN KEY (artist_id)
REFERENCES artist (artist_id);
-- advertisement fk 설정
ALTER TABLE advertisement
ADD CONSTRAINT `FK_artist_TO_advertisement_1`
FOREIGN KEY (artist_id)
REFERENCES artist (artist_id);
3. MySQL ERD 캡쳐본

'코드잇 스프린트' 카테고리의 다른 글
| [코드잇] 코드잇 스프린트 후기 - 데이터 분석가 과정 수료 후 변화 및 성장 (1) | 2025.07.11 |
|---|---|
| [코드잇] 코드잇 스프린트 후기 - 고민 끝에 다시 데이터 분석의 길로...! (0) | 2025.07.11 |
| [코드잇] 스프린터의 봄🌸: Sprint Conference 2025 참여 후기 (0) | 2025.04.14 |
| [코드잇] 코드잇 스프린트 DA 5기 프리코스 수강후기 (3) | 2024.11.22 |