使用 MySQL 设计网站功能:用户管理、资源管理、论坛和活动
使用 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 语句注释中说明。
- 以上设计方案仅供参考,实际应用中可能需要根据具体需求进行调整。
原文地址: https://www.cveoy.top/t/topic/mXVp 著作权归作者所有。请勿转载和采集!