create_tables_script(数据库创建脚本)
数据库创建脚本
CREATE TABLE IF NOT EXISTS Users(
Id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
Username VARCHAR(255) NOT NULL,
Nickname TEXT NOT NULL,
Avatar VARCHAR(255),
Email VARCHAR(255) NOT NULL,
PasswordHash VARCHAR(255) NOT NULL,
Role VARCHAR(20) NOT NULL DEFAULT 'user',
CreatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
Status INT NOT NULL DEFAULT 0,
UNIQUE (Username)
);
CREATE TABLE IF NOT EXISTS Posts (
Id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
UserId BIGINT UNSIGNED NOT NULL,
Title TEXT NOT NULL,
Content TEXT NOT NULL,
CreatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
Status INT NOT NULL DEFAULT 0,
FOREIGN KEY (UserId) REFERENCES Users(Id)
);
CREATE TABLE IF NOT EXISTS Comments (
Id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
PostId BIGINT UNSIGNED NOT NULL,
UserId BIGINT UNSIGNED NOT NULL,
Content TEXT NOT NULL,
CreatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (PostId) REFERENCES Posts(Id),
FOREIGN KEY (UserId) REFERENCES Users(Id)
);
CREATE TABLE IF NOT EXISTS Likes (
Id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
UserId BIGINT UNSIGNED NOT NULL,
PostId BIGINT UNSIGNED,
CommentId BIGINT UNSIGNED,
CreatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (UserId) REFERENCES Users(Id),
FOREIGN KEY (PostId) REFERENCES Posts(Id),
FOREIGN KEY (CommentId) REFERENCES Comments(Id),
CHECK ((PostId IS NOT NULL AND CommentId IS NULL) OR (PostId IS NULL AND CommentId IS NOT NULL))
);
CREATE TABLE IF NOT EXISTS Images (
Id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
PostId BIGINT UNSIGNED NOT NULL,
Url TEXT NOT NULL,
CreatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (PostId) REFERENCES Posts(Id)
);
CREATE TABLE IF NOT EXISTS Categories (
Id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(50) NOT NULL,
Description VARCHAR(255),
UNIQUE (Name)
);
CREATE TABLE IF NOT EXISTS PostCategories (
PostId BIGINT UNSIGNED NOT NULL,
CategoryId BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (PostId, CategoryId),
FOREIGN KEY (PostId) REFERENCES Posts(Id),
FOREIGN KEY (CategoryId) REFERENCES Categories(Id)
);
CREATE TABLE IF NOT EXISTS Favorites (
Id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
UserId BIGINT UNSIGNED NOT NULL,
PostId BIGINT UNSIGNED NOT NULL,
CreatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (UserId) REFERENCES Users(Id),
FOREIGN KEY (PostId) REFERENCES Posts(Id)
);
CREATE TABLE IF NOT EXISTS Messages (
Id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
SenderId BIGINT UNSIGNED NOT NULL,
ReceiverId BIGINT UNSIGNED NOT NULL,
Content TEXT NOT NULL,
CreatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (SenderId) REFERENCES Users(Id),
FOREIGN KEY (ReceiverId) REFERENCES Users(Id)
);
Last updated