当前位置: 首页 > 后端技术 > Node.js

Node项目的评分系统(二)——数据库设计

时间:2023-04-03 13:49:31 Node.js

经过前面的介绍,可以发现这其实是一个非常小的入门级项目,整个功能的实现就是简单的增删改查检查。添加主题、修改主题、删除主题或评分、查看所有主题或所有评分。根据需求,得到要实现的功能,然后根据大致的功能,就需要考虑如何设计数据库表了。这里我选择的是关系型数据库MySQL,所以最重要的是在开始项目之前设计好数据库表。人们常说,一个项目数据库设计好后,大部分工作就基本完成了。这话其实有一定的道理。一个好的数据表设计会让后续的编程更加容易。本项目功能简单,数据表自然也很简单。这里我只创建了三张数据表:message、vote和user,一张保存主题信息,一张保存评分信息,一张保存管理员帐号信息。如果对数据库SQL语句不熟悉,可以选择GUI工具,方便对数据库的操作,避免因为数据库的一些问题而阻碍整个项目的编程。这一点很重要,尤其是像我这样的新手,很有可能因为整个过程中的一点困难,而阻碍了整个编程工作,甚至放弃。我是在Windows平台上进行这个项目的,所以选择了一个简单的MySQLGUI工具——MySQL-Front,创建数据库、创建表、新建测试数据等都可以直接在软件上鼠标点击完成,大大简化了开发过程。整个数据表的设计也很简单:message:title:代表打分的话题author:话题作者average:话题的平均得分status:话题状态,是否允许打分createTime:创建时间endTime:关闭时间(该字段后面没有用到)vote:titleId:评分的主题idvoteIp:评分者的IP。由于内网环境,每台电脑对应一个IP地址。用于存放管理员帐号。由于项目比较简单,本人是数据库小白,看得出来这是一个非常简单的数据表结构,能够满足项目的需要。创建主题时,直接插入到消息中;删除主题时,从消息中删除;修改主题时,更新消息;搜索时,从消息中选择*。同理,投票评分表也是一样的。计算平均分时,使用titleId在投票表中求平均分(voteScore),然后更新到消息表中。以下SQL语句:selectavg(voteScore)averagefromvotev,messagemwherev.titleId=m.Idandv.titleId=titleId检查重复评分时,只需搜索titleId和voteIp是否存在。以下SQL语句:selectcount(*)voteNumfromvotewheretitleId=`titleId`andvoteIp=`voteIp`当结果为0时,表示没有给出分数。要获取每个主题的评分数,只需在投票表中查找与titleId对应的行数即可。SQL语句如下:selectcount(*)voteNumfromvotewheretitleId=`Id`整个后台数据库设计就是这些,并没有很复杂的结构。