数据库设计

sql

CREATE TABLE illustration (
                              id           BIGINT PRIMARY KEY AUTO_INCREMENT,
                              story_id     BIGINT NULL,
                              file_path    VARCHAR(255) NOT NULL COMMENT '本地或对象存储路径',
                              CONSTRAINT fk_illustration_story
                                  FOREIGN KEY (story_id) REFERENCES story(id)
                                      ON UPDATE CASCADE
                                      ON DELETE SET NULL
)


CREATE TABLE sound (
                              id           BIGINT PRIMARY KEY AUTO_INCREMENT,
                              story_id     BIGINT NULL,
                              file_path    VARCHAR(255) NOT NULL COMMENT '本地或对象存储路径',
                              CONSTRAINT fk_sound_story
                                  FOREIGN KEY (story_id) REFERENCES story(id)
                                      ON UPDATE CASCADE
                                      ON DELETE SET NULL
)

CREATE TABLE story (
                       id               BIGINT PRIMARY KEY AUTO_INCREMENT,
                       title            VARCHAR(120) NOT NULL,
                       body             TEXT   NOT NULL COMMENT '正文',
                       keywords         VARCHAR(255) NOT NULL,
                       status           INT DEFAULT 1
                       );

-- 给story表添加生成时间字段,默认值为当前时间,非空
ALTER TABLE story
    ADD COLUMN create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '故事生成时间',
-- 添加user_id字段,类型与user表的id一致(BIGINT UNSIGNED),非空
    ADD COLUMN user_id BIGINT UNSIGNED NOT NULL COMMENT '关联用户表的主键ID(外键)';

-- 给user_id创建外键,关联user表的id字段
ALTER TABLE story
    ADD CONSTRAINT fk_story_user_id
        FOREIGN KEY (user_id) REFERENCES user(id)
-- 可选:设置删除用户时的行为,如CASCADE(级联删除故事)/RESTRICT(禁止删除有故事的用户)/SET NULL(需user_id允许为空)
            ON DELETE RESTRICT
            ON UPDATE CASCADE;

-- 给story表添加点赞量字段,默认值0(初始无点赞),非负整数
ALTER TABLE story
    ADD COLUMN like_count INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '故事点赞量(非负整数,默认0)';

-- 1. 建表(MySQL 语法)
CREATE TABLE story_status (
                              id   BIGINT PRIMARY KEY AUTO_INCREMENT,
                              name VARCHAR(10)
);

-- 2. 先灌入 3 条最常用状态
INSERT INTO story_status(name) VALUES
                                   ('故事'),
                                   ('有图'),
                                   ('有声');


-- 创建用户表(基础版)
CREATE TABLE user (
                        id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户唯一ID(主键)',
                        username VARCHAR(50) NOT NULL COMMENT '用户名(登录名/昵称)',
                        phone CHAR(11) NOT NULL COMMENT '手机号(唯一,用于登录/验证)',
                        email VARCHAR(100) DEFAULT NULL COMMENT '邮箱(唯一,可为空)',
                        password VARCHAR(100) NOT NULL COMMENT '密码(加密存储,如BCrypt/SHA256)',
                        PRIMARY KEY (`id`),
                        UNIQUE KEY `uk_phone` (`phone`), -- 手机号唯一索引
                        KEY `idx_username` (`username`) -- 用户名普通索引
);

-- 新增一个INT类型的字段(默认可为空,无默认值)
ALTER TABLE user
    ADD COLUMN count INT NOT NULL DEFAULT 3 COMMENT '用量',
    ADD COLUMN zan INT NOT NULL DEFAULT 0 COMMENT '点赞数';


posted @ 2025-10-18 18:48  QixunQiu  阅读(5)  评论(0)    收藏  举报