发表于: 2021-05-16 23:52:49

2 1258


一,今天完成的事情

任务三1-3

1.查看垂伦小室的产品资料(PPT,原型图,禅道)

首先仔细看,理解需求。

任务3需要完成的是前台接口。网站模块几个,前台后台都看,才能理解。不知道作者每天希望或者预估每天访问的人数是多少,每人平均访问多少次。但是应该不多。

并且,因为是任务1,2的承接,所以还是选SSM(Spring+SpringMVC+MyBatis)完成此项目。

客户的要求都常见。同一个类有层级结构的有 导航栏,回复和评论,只算自己类目前此项目只有2层。我的代码可以扩展层数。有逻辑,逻辑最难的也只是算法middle难度。不同的递归,递归看情况,tree不搭配其它也算easy级别的算法。


游客不自动分配名称。


是前台。有的公司经常说“中台开发”。这不是指前端,不是指后端。


2,我现在看到的任务三要求2是:依据一对一,一对多,多对多的原则去拆解需求,理清实体表和关系表,依据需求设计DB,建立好索引,要求具备可拓展性(如当前设计导航为二级目录,当业务拓展为三级、四级目录时代码在不变更或者少量变更的情况下可继续使用),遵循Java编码规范,注意命名,并在本机建立好数据库,并对数据库的数据量做好预估。


为了达到工程目的,没有绝对的对和错。我看到有的帅哥美女字段和别人设计的不一样,被批评的挺惨的。可是能用最重要。考虑扩展,多设计1-n张表也不能算错。必须的字段不能少。但是多设计不一定必要的字段也不一定错。

我设计的表能满足本项目前台的要求。根据项目要求使用解决方案,当然有其它可以达到目的的方案。


数据库必修部分告知有6范式。不容易理解,但是只要是数据库的课程都会提。数据库理论,数据库基础,oracle,SQL server都提。


建议多看一对一关系。前台功能可能用到user 用户表,但是对于前台显示几乎无影响,所以没建立user表。


(1)一对一,一对多,多对多的原则去拆解需求,理清实体表和关系表

本项目我没使用多对多关系,所以没使用关系表。

我差点没注意工作室管理中上传图片可以上传多张,和其它实体不同,其它实体如果上传图片,每种类型的图片只有一张,所以直接属于那个实体。差点漏了一个一对多。

一对一:banner作品(或者artworkUrl,后台原型图给的作品链接)。编辑人工作室管理/工作室管理的图片/作品/banner/评论回复/导航栏。(编辑人应该就是user。)

一对多:工作室管理 →工作室管理的图片。作品 评论。作品 回复。评论回复(应该没限制一条回复)。上级导航栏→下级导航栏。一/二级导航栏作品。

如下图,我建立了art_room数据库。下图6张表从上到下代表:工作室管理,工作室管理的图片,作品,banner,评论回复,导航栏。


(2)索引

主键id是主键,肯定有主键索引。

如果根据先后排序,选用的是哪个字段,比如updated_at字段,在这个字段上建立了索引。

根据除了主键id是主键,如果需要常常查询其它id,也在其它id上建立了索引。比如


(3)不用外键。我一般不用外键。选用的策略都是根据实际的,一般不用外键。


(4)表设计。看后台设计,上传的时候如果值为空,前端有部分提醒。根据我看到的情况,设置可以不为null的值。我的status都使用int,这样能表示更多属性。加是否属性的时候可以不加列。int 有32位,可以有32种是否状态,直接数字扩展。需要的时候加一个status表来说明各种状态。

artstudio。数量不多可以不加主键外的索引

其中image_url,是使用的时候,从artstudio_image查询各图片url的情况进行组装。多图url用逗号隔开。展示图片数量我不Limit,因为上传的时候已经限制图片张数。每个artstudio可以有0-n张图。空就是没上传图。


artstudio_image。条目目前不大,可不用主键外的索引



artwork

数据量可能不小。二级导航的id经常会被查询,找到相应的作品。而且一般是新的放在前面,旧的放在后面,所以加上索引如下



banner

banner, artwork 和 artstudio都有 id 创建时间 修改时间 编辑人。是否显示。还都有图片。但是这3个总体的父,需要表示的状态差的有点远,后台管理的时候管理员是分开管理。所以还是分开3个类别。条目目前不大,可不用主键外的索引


comment_reply

这里也是status中,0是不展示。1是展示,并且1是别人的评论。作者的回复全部展示,所以给一个状态2表示作者管理员回复即可。

parent_id如果是art_work,那就是0。在artwork_id中已经知道是对应哪个作品。因为要组装作者回复给别人的评论,才需要再设置父id,就是别人评论的id。和status一起区分是评论,还是作者管理员回复。

经常查找这个表的artwork_id,来找到对应的评论回复。

通过updated_at从新到旧展示。

所以给这2个加上索引,如



manu

这个是我的导航表。上面的 评论回复 表的的评论回复经常增加,有时候减少,总之变化的可能比较大。而且条目很可能上万,比较多。

但是导航一般不会修改。条目也不会太多,每个上级条目包含的下级条目很少超过100条。总之是读多写少。所以我设置了children_ids字段,用逗号隔开下级id,null就是叶子节点。后端,前端处理都会更方便。虽然有parent_id,直接给前端,前端已经能处理。


数据量不大,一般直接根据id查所有属性,数据库一般用children_ids不用parent_id。不建立主键外索引



(5)数据库的数据量。

作者管理的条目不多,20条内,每个能上传若干(5个)图片,预计作者管理的图片100条内。


banner目前最多展示6个,有的暂时不展示,预计10条内。

导航栏,各级不多,预计100条内。


变数最大的是作者的作品。如果作者确定上架的作品是700,那artwork的数据量大概就是700。

留言对于每个作品限制展示50条,且不是每条留言都会被作者回复,也可能被作者回复多次,那留言和回复的数据量就算每个作品100。70000条。


每条数据各个字段,算长度。相加为每条。乘以预估数据条数。


3,

banner,作品集,作品集分类在后台原型图可以拖拽列表项来完成列表的重新排序,在后台管理按顺序显示。在相应表中,可能需要加order顺序这样的条目来记录顺序。但是前台展示是不是按这个order不明确。因为我只实现前台,没加这个字段。如果使用这个字段,数据库或者对象按照字段排序即可。



二,今天问题

况帅哥好。如果用接口生成工具,目前用哪个接口生成工具?现在看到的风格接近swagger。docway优秀。

有的前端喜欢我直接把接口的,传入,输出都直接用json写出,就是给假数据。而不是给类似如下风格的表格

字段

说明

类型

备注

是否必填

id

作品id

Long

 


三,今天的收获

复习数据库一对多,多对多,一对一。工程灵活使用。

banner,作品集,作品集分类在后台原型图可以拖拽列表项来完成列表的重新排序,在后台管理按顺序显示。在相应表中,可能需要加order顺序这样的条目来记录顺序。但是前台展示是不是按这个order不明确。因为我只实现前台,没加这个字段。

这个项目我没分模块。可能结合任务2说分模块。父子模块通信没问题就可以。


四,明天的计划

任务三 1-9


返回列表 返回列表
评论

    分享到