使用 MySQL 设计网站功能:用户管理、资源管理、论坛和活动

本设计方案使用 MySQL 数据库,实现一个包含用户管理、资源管理、论坛和活动模块的网站功能。

1. 系统管理模块

  • **用户注册、登录:**系统包含游客、注册用户和管理员三种用户类型。
  • **个人信息查看、修改:**注册用户可以查看和修改个人信息,包括密码修改。
  • **密码找回:**系统根据注册用户提供的资料向注册用户的邮箱发送密码找回邮件。
  • **用户管理:**管理员可以管理用户权限,包括封禁和删除用户。
  • **资源类别管理:**管理员可以增加、修改和删除资源类别。
  • **资源内容管理:**管理员审核注册用户发布的资源内容。
  • **合同管理:**注册用户获取资源发布权限时,需要与网站签定收费资源费用分成合同。
  • **收费接口:**模拟实现第三方付费接口。
  • **热门资源推荐:**管理员根据资源点击量推荐热门资源。
  • **消息、公告管理:**管理员可以发布消息或公告。
  • **活动管理:**管理员审核和管理用户发布的活动。
  • **论坛管理:**管理员管理论坛,审核用户发布的论题和帖子。

2. 用户模块

  • 游客:
    • 浏览网站所有的公告、消息和免费资源。
    • 部分参与论坛讨论。
  • 注册用户:
    • 拥有游客的所有权限。
    • 通过身份认证,获取资源发布权限。
    • 发布资源,并设置是否收费。
    • 购买网站上的收费资源。
    • 发起活动。
    • 在论坛发帖讨论。

数据库设计

以下 SQL 语句创建数据库表,实现上述功能,不使用外键关系。

-- 用户表
CREATE TABLE user (
    user_id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    'password' VARCHAR(50) NOT NULL,
    email VARCHAR(50) NOT NULL,
    user_type ENUM('guest','registered','admin') NOT NULL DEFAULT 'guest',
    is_banned BOOLEAN NOT NULL DEFAULT FALSE
);

-- 个人信息表
CREATE TABLE user_info (
    user_info_id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    real_name VARCHAR(50),
    gender ENUM('male','female'),
    birthday DATE,
    phone_number VARCHAR(20),
    address VARCHAR(100)
    -- CONSTRAINT fk_user_info_user FOREIGN KEY (user_id) REFERENCES user(user_id)
);

-- 资源类别表
CREATE TABLE resource_category (
    resource_category_id INT PRIMARY KEY AUTO_INCREMENT,
    category_name VARCHAR(50) NOT NULL,
    description VARCHAR(200)
);

-- 资源内容表
CREATE TABLE resource_content (
    resource_content_id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    resource_category_id INT NOT NULL,
    title VARCHAR(100) NOT NULL,
    content TEXT NOT NULL,
    is_approved BOOLEAN NOT NULL DEFAULT FALSE,
    is_free BOOLEAN NOT NULL DEFAULT TRUE,
    price DECIMAL(8,2),
    publish_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
    -- CONSTRAINT fk_resource_content_user FOREIGN KEY (user_id) REFERENCES user(user_id),
    -- CONSTRAINT fk_resource_content_category FOREIGN KEY (resource_category_id) REFERENCES resource_category(resource_category_id)
);

-- 合同表
CREATE TABLE contract (
    contract_id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    resource_content_id INT NOT NULL,
    contract_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
    -- CONSTRAINT fk_contract_user FOREIGN KEY (user_id) REFERENCES user(user_id),
    -- CONSTRAINT fk_contract_resource FOREIGN KEY (resource_content_id) REFERENCES resource_content(resource_content_id)
);

-- 消息表
CREATE TABLE message (
    message_id INT PRIMARY KEY AUTO_INCREMENT,
    message_text TEXT NOT NULL,
    publish_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

-- 公告表
CREATE TABLE announcement (
    announcement_id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    announcement_text TEXT NOT NULL,
    publish_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

-- 活动表
CREATE TABLE activity (
    activity_id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    title VARCHAR(100) NOT NULL,
    description TEXT NOT NULL,
    start_date DATETIME NOT NULL,
    end_date DATETIME NOT NULL,
    is_approved BOOLEAN NOT NULL DEFAULT FALSE
    -- CONSTRAINT fk_activity_user FOREIGN KEY (user_id) REFERENCES user(user_id)
);

-- 论坛帖子表
CREATE TABLE forum_post (
    forum_post_id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    title VARCHAR(100) NOT NULL,
    content TEXT NOT NULL,
    is_approved BOOLEAN NOT NULL DEFAULT FALSE,
    publish_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
    -- CONSTRAINT fk_forum_post_user FOREIGN KEY (user_id) REFERENCES user(user_id)
);

-- 在线调查表
CREATE TABLE survey (
    survey_id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    description TEXT NOT NULL,
    start_date DATETIME NOT NULL,
    end_date DATETIME NOT NULL
);

-- 投票表
CREATE TABLE vote (
    vote_id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    survey_id INT NOT NULL,
    option_id INT NOT NULL
    -- CONSTRAINT fk_vote_user FOREIGN KEY (user_id) REFERENCES user(user_id),
    -- CONSTRAINT fk_vote_survey FOREIGN KEY (survey_id) REFERENCES survey(survey_id),
    -- CONSTRAINT fk_vote_option FOREIGN KEY (option_id) REFERENCES survey_option(option_id)
);

-- 投票选项表
CREATE TABLE survey_option (
    option_id INT PRIMARY KEY AUTO_INCREMENT,
    survey_id INT NOT NULL,
    option_text TEXT NOT NULL
    -- CONSTRAINT fk_survey_option_survey FOREIGN KEY (survey_id) REFERENCES survey(survey_id)
);

-- 购买记录表
CREATE TABLE purchase_record (
    purchase_record_id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    resource_content_id INT NOT NULL,
    purchase_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
    -- CONSTRAINT fk_purchase_record_user FOREIGN KEY (user_id) REFERENCES user(user_id),
    -- CONSTRAINT fk_purchase_record_resource FOREIGN KEY (resource_content_id) REFERENCES resource_content(resource_content_id)
);

备注:

  • 表中所有字段的含义和业务意义都已在 SQL 语句注释中说明。
  • 以上设计方案仅供参考,实际应用中可能需要根据具体需求进行调整。
使用 MySQL 设计网站功能:用户管理、资源管理、论坛和活动

原文地址: https://www.cveoy.top/t/topic/mXVp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录