基于MYSQL的新闻发布系统数据库设计项目实战

说明:这是一个数据库课程设计实战项目(附带代码+文档+视频讲解),如需代码+文档+视频讲解可以直接到文章最后获取。

项目背景

网站上的新闻随处可见,新闻网站系统也越来越多,例如:新浪新闻、腾讯新闻、网易新闻等等。很多网站和管理系统使用MySQL数据库存储数据。本项目主要讲述新闻发布系统的数据库设计过程。

系统功能概述

本项目介绍的是一个新闻发布系统,管理员可以通过该系统发布新闻信息、管理新闻信息。一个典型的新闻发布系统网站至少应该包含新闻信息管理、新闻信息显示和新闻信息查询3种功能。

新闻发布系统所要实现的功能具体包括新闻信息添加、新闻信息修改、新闻信息删除、显示全部新闻信息、按类别显示新闻信息、按关键字查询新闻信息、按关键字进行站内查询。

本网站为一个简单的新闻信息发布系统,该系统具有以下特点。

● 实用:系统实现了一个完整的信息查询过程。

● 简单易用:为使用户尽快掌握和使用整个系统,系统结构简单但功能齐全,简洁的页面设计使操作起来非常简便。

● 代码规范:作为一个实例,文中的代码规范简洁、清晰易懂。

本系统主要用于发布新闻信息、管理用户、管理权限、管理评论等功能。这些信息的录入、查询、修改和删除等操作都是该系统重点解决的问题。

本系统的主要功能包括以下几点:

(1)具有用户注册及个人信息管理功能。

(2)管理员可以发布新闻、删除新闻。

(3)用户注册后可以对新闻进行评论、发表留言。

(4)管理员可以管理留言和对用户进行管理。

系统功能分析

新闻发布系统分为5个管理部分,即用户管理、管理员管理、权限管理、新闻管理和评论管理。本系统的功能模块如图所示:

图中模块的详细介绍如下:

  1. 用户管理模块:实现新增用户、查看和修改用户信息功能。

(2)管理员管理模块:实现新增管理员,查看、修改和删除管理员信息功能。

(3)权限管理模块:实现对管理员、对管理的模块和管理的评论赋权功能。

(4)新闻管理模块:实现有相关权限的管理员对新闻的增加、查看、修改和删除功能。

(5)评论管理模块:实现有相关权限的管理员对评论的审核和删除功能。

数据库结构设计

概念设计:E-R模型

根据系统功能和数据库设计原则,共设计9张表,分别是:用户表、管理员表、权限表、新闻表、栏目表、评论表、管理员_权限表、新闻_评论表、用户_评论表。

用户表(橙色属性为主码,蓝色属性为外码)

管理员表(橙色属性为主码,蓝色属性为外码)

 权限表(橙色属性为主码,蓝色属性为外码)

新闻表(橙色属性为主码,蓝色属性为外码)

栏目表(橙色属性为主码,蓝色属性为外码)

 评论表(橙色属性为主码,蓝色属性为外码)

管理员_权限表(橙色属性为主码,蓝色属性为外码)

新闻_评论表(橙色属性为主码,蓝色属性为外码)

 用户_评论表(橙色属性为主码,蓝色属性为外码)

数据库表设计

用户表user:

 管理员表admin:

权限表roles:

新闻表news:

 栏目表categroy:

评论表comment:

 管理员_权限表admin_Roles:

新闻_评论表news_Comment:

 用户_评论表users_Comment:

数据库程序设计与编码实现

数据库创建

 

数据表创建

创建用户表user:

 

创建管理员表admin:

创建权限表roles:

 

创建新闻表news:

创建栏目表categroy:

创建评论表comment:

创建管理员_权限表admin_Roles:

创建新闻_评论表news_Comment:

创建用户_评论表users_Comment:

索引创建

索引是创建在表上的,是对数据库中一列或者多列的值进行排序的一种结构。索引可以提高查询的速度。论坛系统需要查询论坛的信息,这就需要在某些特定字段上建立索引,以便提高查询速度。

在news表上建立索引

新闻发布系统中需要按照newsTitle字段、newsDate字段和newsRate字段查询新闻信息。

 

在categroy表上建立索引

在新闻发布系统中,需要通过栏目名称查询该栏目下的新闻,因此需要在这个字段上创建索引。

 

在comment表上建立索引

新闻发布系统需要通过commentTitle字段和commentDate字段查询评论内容,因此可以在这两个字段上创建索引。

 

视图创建

视图是由数据库中一个表或者多个表导出的虚拟表,作用是方便用户对数据的操作。在这个新闻发布系统中,也设计了一个视图改善查询操作。

在新闻发布系统中,如果直接查询news_Comment表,显示信息时会显示新闻编号和评论编号。这种显示不直观,为了以后查询方便,可以建立一个视图news_view。这个视图显示评论编号、新闻编号、新闻级别、新闻标题、新闻内容和新闻发布时间。创建视图news_view的SQL代码如下:

 

 

触发器创建

触发器由INSERT、UPDATE和DELETE等事件来触发某种特定的操作。满足触发器的触发条件时,数据库系统就会执行触发器中定义的程序语句。这样做可以保证某些操作之间的一致性。为了使论坛系统的数据更新更加快速和合理,可以在数据库中设计几个触发器。

创建UPDATE触发器

在设计表时,news表和news_Comment表的newsID字段的值是一样的。如果news表中的newsID字段的值更新了,那么news_Comment表中的newsID字段的值也必须同时更新。这可以通过一个UPDATE触发器来实现。创建UPDATE触发器update_newsID的SQL代码如下:

 

 其中,NEW.newsID表示news表中更新的记录的newsID值。

创建DELETE触发器

如果从user表中删除一个用户的信息,那么这个用户在users_comment表中的信息也必须同时删除。这也可以通过触发器来实现。在user表上创建delete_user触发器,只要执行DELETE操作,就删除users_comment表中相应的记录。创建delete_user触发器的SQL语句如下:

 

 其中,OLD.userID表示新删除的记录的userID值。

# 本次机器学习项目实战所需的资料,项目资源如下:

链接:https://pan.baidu.com/s/1zlxUra9Lp_mJZE7DJSVeqA 
提取码:v48z




create table `user` (
	`userID` int (11),
	`userName` varchar (60),
	`userPassword` varchar (60),
	`sex` varchar (30),
	`userEmail` varchar (60)
); 
insert into `user` (`userID`, `userName`, `userPassword`, `sex`, `userEmail`) values('101','张艺兴','123456','男','234567@qq.com');
insert into `user` (`userID`, `userName`, `userPassword`, `sex`, `userEmail`) values('102','佟丽娅','234567','女','234567@qq.com');
insert into `user` (`userID`, `userName`, `userPassword`, `sex`, `userEmail`) values('103','杨幂','345678','女','345678@qq.com');
  • 20
    点赞
  • 154
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张陈亚

您的鼓励,将是我最大的坚持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值