基于MySQL的 CMS(内容管理系统)的表结构设计
目录
1. 用户管理 (Users)
2. 内容管理 (Content/Posts)
3. 分类 (Categories)
4. 标签 (Tags)
5. 内容与分类关系 (Content_Category)
6. 内容与标签关系 (Content_Tag)
7. 媒体库 (Media)
8. 设置 (Settings)
9. 评论 (Comments)
10. 活动日志 (Activity_Log)
11. 菜单 (Menus)
1. 用户管理 (Users)
| 字段名 | 类型 | 描述 |
|---|---|---|
id | INT (PK) | 用户ID |
username | VARCHAR(50) | 用户名 |
email | VARCHAR(100) | 邮箱 |
password | VARCHAR(255) | 加密密码 |
role | ENUM('admin', 'editor', 'author', 'subscriber') | 用户角色 |
status | ENUM('active', 'inactive') | 状态 |
created_at | TIMESTAMP | 创建时间 |
updated_at | TIMESTAMP | 更新时间 |
2. 内容管理 (Content/Posts)
| 字段名 | 类型 | 描述 |
|---|---|---|
id | INT (PK) | 内容ID |
title | VARCHAR(255) | 标题 |
slug | VARCHAR(255) | 友好的URL路径 |
content | TEXT | 内容正文 |
author_id | INT (FK) | 作者ID(关联Users.id) |
status | ENUM('draft', 'published', 'archived') | 状态 |
published_at | TIMESTAMP NULL | 发布时间 |
created_at | TIMESTAMP | 创建时间 |
updated_at | TIMESTAMP | 更新时间 |
3. 分类 (Categories)
| 字段名 | 类型 | 描述 |
|---|---|---|
id | INT (PK) | 分类ID |
name | VARCHAR(100) | 分类名称 |
slug | VARCHAR(100) | 友好的URL路径 |
parent_id | INT (FK NULL) | 父分类ID(自关联) |
created_at | TIMESTAMP | 创建时间 |
updated_at | TIMESTAMP | 更新时间 |
4. 标签 (Tags)
| 字段名 | 类型 | 描述 |
|---|---|---|
id | INT (PK) | 标签ID |
name | VARCHAR(100) | 标签名称 |
slug | VARCHAR(100) | 友好的URL路径 |
created_at | TIMESTAMP | 创建时间 |
5. 内容与分类关系 (Content_Category)
| 字段名 | 类型 | 描述 |
|---|---|---|
id | INT (PK) | 记录ID |
content_id | INT (FK) | 内容ID(关联Content.id) |
category_id | INT (FK) | 分类ID(关联Categories.id) |
6. 内容与标签关系 (Content_Tag)
| 字段名 | 类型 | 描述 |
|---|---|---|
id | INT (PK) | 记录ID |
content_id | INT (FK) | 内容ID(关联Content.id) |
tag_id | INT (FK) | 标签ID(关联Tags.id) |
7. 媒体库 (Media)
| 字段名 | 类型 | 描述 |
|---|---|---|
id | INT (PK) | 媒体ID |
file_name | VARCHAR(255) | 文件名 |
file_path | VARCHAR(255) | 文件路径 |
file_type | VARCHAR(50) | 文件类型(如image/png) |
uploaded_by | INT (FK) | 上传者ID(关联Users.id) |
uploaded_at | TIMESTAMP | 上传时间 |
8. 设置 (Settings)
| 字段名 | 类型 | 描述 |
|---|---|---|
id | INT (PK) | 设置ID |
key | VARCHAR(100) | 设置键 |
value | TEXT | 设置值 |
updated_at | TIMESTAMP | 更新时间 |
9. 评论 (Comments)
| 字段名 | 类型 | 描述 |
|---|---|---|
id | INT (PK) | 评论ID |
content_id | INT (FK) | 内容ID(关联Content.id) |
author_name | VARCHAR(100) | 评论作者名 |
author_email | VARCHAR(100) | 评论者邮箱 |
comment | TEXT | 评论内容 |
status | ENUM('pending', 'approved', 'spam') | 状态 |
created_at | TIMESTAMP | 创建时间 |
10. 活动日志 (Activity_Log)
| 字段名 | 类型 | 描述 |
|---|---|---|
id | INT (PK) | 日志ID |
user_id | INT (FK NULL) | 用户ID(关联Users.id,可以为空) |
action | VARCHAR(255) | 动作描述 |
entity | VARCHAR(100) | 实体(如Content, Media等) |
entity_id | INT (FK NULL) | 实体ID |
timestamp | TIMESTAMP | 时间戳 |
11. 菜单 (Menus)
| 字段名 | 类型 | 描述 |
|---|---|---|
id | INT (PK) | 菜单ID |
name | VARCHAR(100) | 菜单名称 |
slug | VARCHAR(255) | 友好的URL路径 |
parent_id | INT (FK NULL) | 父菜单ID(自关联) |
order | INT | 菜单顺序 |
created_at | TIMESTAMP | 创建时间 |
updated_at | TIMESTAMP | 更新时间 |
相关文章:
基于MySQL的 CMS(内容管理系统)的表结构设计
目录 1. 用户管理 (Users) 2. 内容管理 (Content/Posts) 3. 分类 (Categories) 4. 标签 (Tags) 5. 内容与分类关系 (Content_Category) 6. 内容与标签关系 (Content_Tag) 7. 媒体库 (Media) 8. 设置 (Settings) 9. 评论 (Comments) 10. 活动日志 (Activity_Log) 11. …...
2.13 转换矩阵
转换矩阵引用了库nalgebra,使用时研究具体实现。 use std::ops;use nalgebra::Perspective3;use crate::Scalar;use super::{Aabb, LineSegment, Point, Triangle, Vector};/// An affine transform #[repr(C)] #[derive(Debug, Clone, Copy, Default)] pub struct…...
【C语言】遗传算法matlab程序
遗传算法matlab程序 遗传算法是一种模拟自然选择过程的优化技术,用于解决复杂问题。在MATLAB中编写遗传算法程序,通常包括以下几个步骤: 初始化种群:创建一个初始解集(种群),每个解代表一个问题…...
Java LinkedList 详解
LinkedList 是 Java 集合框架中常用的数据结构之一,位于 java.util 包中。它实现了 List、Deque 和 Queue 接口,是一个双向链表结构,适合频繁的插入和删除操作。 1. LinkedList 的特点 数据结构:基于双向链表实现,每个…...
mac-mini的时间机器,数据备份到alist 中的网盘
苹果的时间机器不能直接将备份存储在 alist 上的网盘,但可以通过一些中间步骤来实现类似的效果,以下是具体介绍: 方法原理 通过将支持 WebDAV 协议的网络存储挂载到本地,再将其设置为时间机器的备份磁盘,从而间接实现…...
【HarmonyOS】鸿蒙应用加载读取csv文件
【HarmonyOS】鸿蒙应用加载读取csv文件 一、问题背景: 1. csv文件是什么? csv是一种文本文件格式,与json类似。会存储一些文本内容,应用需要读取该文件,进行UI内容得填充等。 文件中的数据是以纯文本形式存储的&…...
Java retainAll() 详解
在 Java 中,retainAll() 是 Collection 接口(List、Set 等集合类实现该接口)的一种方法,用于保留集合中与指定集合交集的元素,删除其他所有元素。 以下是对 retainAll() 方法的详细讲解。 1. 方法定义 方法签名 boo…...
Redis的基本数据类型
初识Redis缓存 Redis缓存: 实际开发中经常使用Redis作为缓存数据库,从而提高数据存取效率,减轻后端数据库的压力。 可以将经常被查询的数据缓存起来,比如热点数据,这样当用户来访问的时候,就不需要到MyS…...
通过vite+vue3+pinia从0到1搭建一个uniapp应用
最近项目上要做一个app,选择了用uniapp作为开发框架;我大概看了一下uniapp的文档,根据文档从0到1搭了一个uniapp应用供大家参考。 因为本人习惯使用了WebStorm编译器,但是uniapp官方推荐使用HBuilder搭建,如果和我一样…...
Linux的桌面
Linux的桌面是可以卸载的 的确,Linux并不像Windows,Linux本身是一个基于命令行的操作系统,在内核眼中,桌面只不过是个普通的应用程序,所以,在Linux的桌面中可以完成的事情,命令行中也基本可以完…...
Easyexcel(5-自定义列宽)
相关文章链接 Easyexcel(1-注解使用)Easyexcel(2-文件读取)Easyexcel(3-文件导出)Easyexcel(4-模板文件)Easyexcel(5-自定义列宽) 注解 ColumnWidth Data…...
操作系统实验 C++实现死锁检测算法
实验目的 模拟实现死锁检测算法 实验内容 1、 输入: “资源分配表”文件,每一行包含资源编号、进程编号两项(均用整数表示,并用空格分隔开),记录资源分配给了哪个进程。 “进程等待表”文件&…...
小鹏汽车智慧材料数据库系统项目总成数据同步
1、定时任务处理 2、提供了接口 小鹏方面提供的推送的数据表结构: 这几个表总数为100多万,经过条件筛选过滤后大概2万多条数据 小鹏的人给的示例图: 界面: SQL: -- 查询车型 select bmm.md_material_id, bmm.material_num, bm…...
1、HCIP之RSTP协议与STP相关安全配置
目录 RSTP—快速生成树协议 STP STP的缺点: STP的选举(Listening状态中): RSTP P/A(提议/同意)机制 同步机制: 边缘端口的配置: RSTP的端口角色划分: ensp模拟…...
Linux云服务器docker使用教程
诸神缄默不语-个人CSDN博文目录 我用的是腾讯云服务器,操作系统是OpenCloudOS 9,基本上可以当特色版CentOS用。 docker安装跟各个系统关系太大了,我就不写了。OpenCloudOS 9安装docker见这篇博文:腾讯云服务器使用教程 文章目录 …...
如何从android的webview 取得页面上的数据
要从Android的WebView中获取页面上的数据,通常有几种常见的方法: JavaScript Interface:通过JavaScript和Android Interface进行通信。这种方法允许你在JavaScript中调用Android的方法,反之亦然。 Evaluate JavaScriptÿ…...
VTK知识学习(12)- 读取PNG图像
1、代码 private void ShowPngImage(){vtkPNGReader pngReader vtkPNGReader.New();pngReader.SetFileName("D:\\图像\\boxes\\cardboard_boxes_01.png");pngReader.Update();vtkImageActor imageActor vtkImageActor.New();imageActor.SetInputData(pngReader.Get…...
Springboot项目搭建(3)-更改用户信息与文件上传
1.概要 前一章节完成了用户信息的注册、登录、详细信息查询,以及线程池与拦截器技术。 这一章完善了用户信息更新/更改功能,包括昵称、邮箱、头像、密码等... 而后接触到了本地上传和云上传,其二者区别: 选择本地上传还是云上…...
Docker1:认识docker、在Linux中安装docker
欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...
python成绩分级 2024年6月python二级真题 青少年编程电子学会编程等级考试python二级真题解析
目录 python成绩分级 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python成绩分级 2024年6月 python编程等级考试二级编程题 一、题目要求 …...
拯救者R7000P显卡驱动安装避坑指南:从黑屏到流畅运行VSlam
1. 为什么R7000P装显卡驱动容易黑屏? 很多朋友拿到拯救者R7000P笔记本后,第一件事就是安装Ubuntu系统来跑VSlam开发环境。但往往在安装NVIDIA显卡驱动时,会遇到让人头疼的黑屏问题。我自己就经历过不下5次黑屏,最严重的一次甚至需…...
FinalBurn Neo:让经典街机游戏在现代设备上完美重生
FinalBurn Neo:让经典街机游戏在现代设备上完美重生 【免费下载链接】FBNeo FinalBurn Neo - We are Team FBNeo. 项目地址: https://gitcode.com/gh_mirrors/fb/FBNeo FinalBurn Neo是一款专注于经典街机游戏的开源模拟器,它基于FinalBurn和早期…...
程序员别再假装养生:你花3000块买保健品,却舍不得戒掉这3个坏习惯
深夜十一点,某程序员群突然炸了。有人发了张截图,是他双十一的购物记录:护肝片、维生素C、鱼油、钙片、褪黑素、护腰垫、人体工学鼠标......总价:6872元。底下评论清一色的"对自己好一点"、"程序员太难了"、&…...
Unity URP描边技术完全指南:从性能优化到视觉突破的实战方案
Unity URP描边技术完全指南:从性能优化到视觉突破的实战方案 【免费下载链接】Unity-URP-Outlines A custom renderer feature for screen space outlines 项目地址: https://gitcode.com/gh_mirrors/un/Unity-URP-Outlines 在3D游戏开发中,物体轮…...
Socket.IO-Client-Swift终极指南:构建实时iOS应用的第一步
Socket.IO-Client-Swift终极指南:构建实时iOS应用的第一步 【免费下载链接】socket.io-client-swift 项目地址: https://gitcode.com/gh_mirrors/so/socket.io-client-swift Socket.IO-Client-Swift是一个强大的开源库,为iOS开发者提供了简单高效…...
OmX企业解决方案:大型组织的AI编码助手部署全攻略
OmX企业解决方案:大型组织的AI编码助手部署全攻略 【免费下载链接】oh-my-codex OmX - Oh My codeX: Your codex is not alone. Add hooks, agent teams, HUDs, and so much more. 项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-codex OmX&#x…...
大麦网抢票自动化:从技术原理到实战落地的全方位指南
大麦网抢票自动化:从技术原理到实战落地的全方位指南 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 问题引入:抢票困境与技术破局 在热门演出票务竞争日益激烈的当下&am…...
当ai安装助手遇见dify:用快马生成能分析环境、智能决策的安装引导代码
最近在折腾Dify这个AI应用开发平台的安装,发现它的安装过程其实也能用AI来优化。刚好用InsCode(快马)平台试了试,发现AI辅助安装真的能省不少事。这里记录下我的实践过程,分享如何用智能脚本让安装流程更顺畅。 环境分析是智能安装的第一步 传…...
3个核心方案:用UNTRUNC工具修复损坏视频的专业指南
3个核心方案:用UNTRUNC工具修复损坏视频的专业指南 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 价值定位&am…...
为什么在银河麒麟上配置telnet?安全风险与替代方案探讨
银河麒麟系统中Telnet协议的深度安全剖析与现代替代方案 在国产操作系统银河麒麟上配置传统网络服务时,技术决策者常面临一个经典困境:是沿用熟悉的Telnet协议快速解决问题,还是投入资源迁移到更安全的现代方案?这个问题看似简单&…...
