当前位置: 首页 > wzjs >正文

有一个做ppt的网站目前推广平台都有哪些

有一个做ppt的网站,目前推广平台都有哪些,oss如何做网站,一个专门做特产的网站1. 前言 在自己独立开发一个项目的过程中,我发现了一些以往写小 Demo 从来没有遇到过的问题。 最近在独立制作一个全栈的通知管理平台。一开始我没有考虑太多,直接根据头脑中零星的想法就开撸后端数据库 model 和 API,用的是学了半成品的 M…

1. 前言

在自己独立开发一个项目的过程中,我发现了一些以往写小 Demo 从来没有遇到过的问题。

最近在独立制作一个全栈的通知管理平台。一开始我没有考虑太多,直接根据头脑中零星的想法就开撸后端数据库 model 和 API,用的是学了半成品的 MongoDb。

结果就是写到后面在遇到复杂的数据库依赖关系时,我感到崩溃。这才想起指导老师给我发了一篇计算机的论文,我便开始虚心研究。

做一个项目要经过这些过程:

  • 系统分析
    • 可行性分析
    • 用户需求分析
    • 整体功能模块分析
    • 技术分析
    • 系统流程分析
  • 系统设计
    • 系统功能模块设计
    • 系统结构设计
    • 数据库概念设计
      • 数据库设计
      • 数据库表设计
  • 系统实现
    • 功能模块的实现
    • API 接口功能的实现
  • 系统测试
    • 黑盒和白盒测试
    • 测试环境与条件
    • 功能测试

敲代码的时候思维很局限,总觉得完成了某一个单个功能就算成功。真到让我独立设计一个项目,我还真就难住了。这里就来讲讲我第一个遇到的问题,数据库怎么设计?

本文用到的工具:

eraser.io

2. 构建实体

打开一额eraser.io文件,在左侧写入所有的实体Entity,例如:

  • 用户
  • 班级
  • 通知

然后在canvas中添加一个Diagram as Code > Entity Relationship也就是E-R图。

✨ 一个最佳实践:总是从用户表User-Table开始着手你的 E-R 图设计。
这是因为,一切都是为了用户用户就是上帝。

从用户表开始,并从用户的注册开始。

我们的用户表可以是这样:

User {id string pkusername string uniqueemail stringbio string
}

20250331011304

强调一点:业务逻辑永远不要成为主键,例如这里除了id外所有的属性皆是如此。

也许你不需要一个createdAt键,但一个很中肯的建议是添加它,总有一天你会需要它的,当你需要它的时候可不能后悔。

User {id string pkusername string uniqueemail stringbio stringcreatedAt timestamp
}

同样的方法,添加班级、通知,完成后如下图所示:

20250331013108

3. 构建关系

关系分为多种:

  • 一对一
  • 一对多
  • 多对多

这里用户和班级之间存在多对多的关系,构建关系时我们也总遵循从User表开始的原则,正如之前提到的,用户是整个产品的核心。

为了加深对关系的了解,这里举个用户发推文的例子:一个用户能发多个推文,每一条推文只有一个用户作为作者。这是一对多的关系,一个用户对应多个推文,但每一条推文只能对应一个用户。

在这里,假如我希望一个班级对应多条通知,在eraser.io中可以使用这样的语法来表示:

# 一对多
Classes.id < Notifies.classId

这里用到的关系符号是<,同样的还有一对一和多对多,分别用-<>符号表示数量关系。

观察上面的代码你会发现一个问题:通知实体并没有classId这个键。

这就是我们需要创建的,这里classId是一个外键,表示引用了一个其他表的主键。

我们修改通知Entity的结构:

Notify {id string pktitle stringcontent stringcreatedAt timestampclassId string pk
}Class.id < Notify.classId

修改后大概是这样:

pk

这里我们再添加一个Media实体:

Media {id string pkfileUrl stringtype enumcreatedAt timestamp
}

很显然,一个班级对应多条通知,一条通知可能对应了多个媒体,所以媒体也需要一个类似的外键来唯一的引用一个它所对应的通知。

你有没有想过为什么反过来不行,为什么不是通知的外键引用到媒体呢?
很显然,通知对应多个媒体,一条外键是不够的,而媒体只对应一个通知,一个外键就刚好。

添加完成后我们再来加上颜色和图标就是这个效果:

20250331015205

关键其实还有语义化的功能,在看到这个外键后就知道通知与某个班级有关,媒体与某条通知相关。

在这种情况下外键是很有意义的。

如果我们的用户能够在每一条通知下进行评论,就需要一个Comments实体。很明显他用外键和唯一的用户关联表示该用户的评论。

20250331020311

在这里,用户和评论是一对多的关系,通知和评论也是一对多的关系,所以你能看到在评论的身上有两条外键分别拉到了用户和通知身上。

根据同样的一对多的原理,我们来制造一个like,也就是用户对评论的点赞:

20250331021319

4. 多对多

根据上面的例子我们不难发现,要处理一对一、一对多的关系都能直接使用外键来处理。

但是多对多呢?

用户的好友是一个多对多的关系,用户可以有多个好友,很多人也可以加这个用户作为好友。

我们的班级和用户之间也是这样的关系,班级可以有很多成员而成员也能加入很多班级。

对于多对多的关系我们一般新建一个表,例如,用户好友的关系。

20250331022917

这里比较令人困惑,要仔细看看。

这张表实际上就是单独跟踪了谁关注了谁,有两个字段:关注follow,粉丝follower

如果要查询用户的粉丝可以用select * from Friends where follow = user_id就能查询到用户的所有粉丝。

如果要查询用户的关注列表就是:select * from Friends where follower = user_id

5. 总结

关于数据库的设计关键是将所有实体抽象出来,并理清楚实体之间的关系。

本次实验🧪的链接:https://app.eraser.io/workspace/1GT4Nb82OR4LTYIuOmkT

http://www.dtcms.com/wzjs/51766.html

相关文章:

  • 长春建站免费模板网络营销成功的案例及其原因
  • 做门名片设计网站自媒体营销
  • 网站计费系统怎么做杭州网络推广公司
  • 企业网站 seo怎么做微信上如何投放广告
  • 公司网站设计解决方案彼亿营销
  • 台湾做的h游戏下载网站有哪些浏览器观看b站视频的最佳设置
  • 用jsp做的网站在不同浏览器显示效果差异很大如何解决网站关键词快速排名软件
  • html5网站后台怎么做佛山seo网站排名
  • 七牛视频wordpress长沙seo服务哪个公司好
  • wordpress 谷歌收录超级seo助手
  • 西宁思帽网站建设东莞网站seo优化
  • 高级网页设计师证朔州seo
  • 个人电脑建立网站会中文域名查询官网
  • 武汉做优化网站公司seo店铺描述
  • 天长做网站的谷歌google下载安卓版 app
  • 怎么做盗号网站手机爱站关键词搜索
  • 榆林网站制作百度推广网页版
  • 微信app下载安装官方版平板百度关键词seo优化
  • 网站建设用户画像例子百度站长之家工具
  • 做网站先买域名推广活动策划方案范文
  • 如何提高网站文章收录百度今日数据统计
  • 门户网站建设软件编写网站
  • 网站设计运行费用荆州seo推广
  • 贵港购物网站开发设计怎样在百度上发布免费广告
  • 石家庄企业商城网站建设刷关键词怎么刷
  • 网站建设费要摊销视频外链在线生成
  • 章丘做网站单位哪家好西安seo网站排名
  • 专门做asmr的网站北京seo优化分析
  • WordPress可以做政府网站吗公司网络营销推广
  • 网站建设全新闻摘抄四年级下册