• 基于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值。

    1. # 本次机器学习项目实战所需的资料,项目资源如下:
    2. 链接:https://pan.baidu.com/s/1zlxUra9Lp_mJZE7DJSVeqA
    3. 提取码:v48z
    4. create table `user` (
    5. `userID` int (11),
    6. `userName` varchar (60),
    7. `userPassword` varchar (60),
    8. `sex` varchar (30),
    9. `userEmail` varchar (60)
    10. );
    11. insert into `user` (`userID`, `userName`, `userPassword`, `sex`, `userEmail`) values('101','张艺兴','123456','男','234567@qq.com');
    12. insert into `user` (`userID`, `userName`, `userPassword`, `sex`, `userEmail`) values('102','佟丽娅','234567','女','234567@qq.com');
    13. insert into `user` (`userID`, `userName`, `userPassword`, `sex`, `userEmail`) values('103','杨幂','345678','女','345678@qq.com');
  • 相关阅读:
    400电话怎么办理
    内存自动释放工具-Mem Reduct
    【笔试题】【day17】
    时钟轮在 RPC 中的应用
    深度剖析集成学习Xgboost
    MATLAB使用OMP实现图像的压缩感知实例
    connection_reset解决方案
    Elasticsearch head 连接 阿里云ES
    【算法基础】分解质因数
    centos7安装LAMP
  • 原文地址:https://blog.csdn.net/weixin_42163563/article/details/125961509