데이터베이스 스키마 이름을 instar_db로 지정하여 만든다.
users, photos 테이블 만들기
photos 외래키 설정
comments 테이블 만들기
comments 외래키 설정
likes 테이블만들기
likes 외래키 설정
follows 테이블 만들기
follows 외래키 설정
tags 테이블 만들기
photo_tags 테이블 만들기
photo_tags 외래키 설정
DROP DATABASE IF EXISTS instar_db;
CREATE DATABASE instar_db;
USE instar_db;
CREATE TABLE users (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE photos (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
image_url VARCHAR(255) NOT NULL,
user_id INTEGER NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
FOREIGN KEY(user_id) REFERENCES users(id)
);
CREATE TABLE comments (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
comment_text VARCHAR(255) NOT NULL,
photo_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
FOREIGN KEY(photo_id) REFERENCES photos(id),
FOREIGN KEY(user_id) REFERENCES users(id)
);
CREATE TABLE likes (
id INTEGER AUTO_INCREMENT PRIMARY KEY
user_id INTEGER NOT NULL,
photo_id INTEGER NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
FOREIGN KEY(user_id) REFERENCES users(id),
FOREIGN KEY(photo_id) REFERENCES photos(id),
PRIMARY KEY(user_id, photo_id)
);
CREATE TABLE follows (
id INTEGER AUTO_INCREMENT PRIMARY KEY
follower_id INTEGER NOT NULL,
followee_id INTEGER NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
FOREIGN KEY(follower_id) REFERENCES users(id),
FOREIGN KEY(followee_id) REFERENCES users(id),
PRIMARY KEY(follower_id, followee_id)
);
CREATE TABLE tags (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
tag_name VARCHAR(255) UNIQUE,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE photo_tags (
id INTEGER AUTO_INCREMENT PRIMARY KEY
photo_id INTEGER NOT NULL,
tag_id INTEGER NOT NULL,
FOREIGN KEY(photo_id) REFERENCES photos(id),
FOREIGN KEY(tag_id) REFERENCES tags(id),
PRIMARY KEY(photo_id, tag_id)
);
데이터 삽입
'MySQL' 카테고리의 다른 글
MySQL) Instargram (3) : 프론트엔드 개발자에게 보낼 데이터 만들기 (0) | 2024.05.20 |
---|---|
MySQL) Instargram (2) : 인스타그램 데이터 분석하기 (0) | 2024.05.17 |
MySQL) 3개 이상의 테이블 조인하기 (0) | 2024.05.16 |
MySQL) 외래 키 제약 조건 설정에서 참조 무결성 변경하기 (RESTRICT , CASCADE , SET NULL , NO ACTION) (1) | 2024.05.16 |
MySQL) 두 개의 테이블 조인하기 (2) | 2024.05.16 |