43 lines
1.3 KiB
SQL
43 lines
1.3 KiB
SQL
CREATE DATABASE `hangyub_url_shortener`;
|
|
|
|
USE hangyub_url_shortener;
|
|
|
|
DROP TABLE IF EXISTS click_stat;
|
|
DROP TABLE IF EXISTS url_map;
|
|
DROP TABLE IF EXISTS users;
|
|
|
|
CREATE TABLE `users`(
|
|
`user_id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`user_email` VARCHAR(100) NOT NULL,
|
|
`user_password` VARCHAR(30) NOT NULL,
|
|
`user_nickname` VARCHAR(20) NOT NULL,
|
|
`user_created_at` DATETIME NOT NULL,
|
|
PRIMARY KEY(user_id)
|
|
);
|
|
|
|
CREATE TABLE `url_map`(
|
|
`url_map_id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`url_map_original` VARCHAR(255) NOT NULL,
|
|
`url_map_short` VARCHAR(20) NOT NULL,
|
|
`url_map_is_active` TINYINT(1) NOT NULL,
|
|
`user_id` BIGINT NULL,
|
|
`url_map_click` BIGINT NOT NULL DEFAULT 0,
|
|
`url_map_created_at` DATETIME NOT NULL,
|
|
`url_map_updated_at` DATETIME NOT NULL,
|
|
`url_map_expired_at` DATETIME NULL,
|
|
PRIMARY KEY(url_map_id),
|
|
FOREIGN KEY(user_id) REFERENCES users(user_id)
|
|
);
|
|
|
|
CREATE TABLE `click_stat` (
|
|
`click_stat_id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
`url_map_id` BIGINT NOT NULL,
|
|
`click_stat_clicked_at` DATETIME NOT NULL,
|
|
`click_stat_user_agent` VARCHAR(20) NOT NULL,
|
|
`click_stat_ip_addr` VARCHAR(30) NOT NULL,
|
|
PRIMARY KEY(click_stat_id),
|
|
FOREIGN KEY(url_map_id) REFERENCES url_map(url_map_id)
|
|
);
|
|
|
|
CREATE INDEX `click_stat_url_map_id` ON click_stat(url_map_id);
|