
데이터베이스 스키마 이름을 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 |