本小节我们将手把手讲解小程序的数据库应该如何设计。
现在我们开始来学习,如何对一个系统进行数据库设计,设计的第一步是,我们需要根据系统功能,分析出应该有哪些信息需要存储,最终系统应该有哪些数据库表。
首先我们来看第一个功能,用户自动登录,那就需要存储用户的基本信息,所以需要建立一个用户表
第二个功能,展示搜索的热词,那么我们就需要提前存储词汇的信息,所以需要建立一个词汇表;
第三个功能,搜索某个词的近义词,那我们就需要一个表存储近义词信息,所以需要建议一个近义词关联表;
第四个功能,对搜索结果点赞,点赞的对象其实是一组近义词的关联度,也就是说使用之前的近义词关联表进行存储就行了;
第五个功能,联系和反馈,需要建立一个表存储用户的反馈信息,也就是反馈表;
剩下的功能都是直接操作反馈表就可以实现了,不再需要新的表了;
那我们再进一步总结,我们总共需要4个数据表,第一个是用户表,存储用户信息;第二个是词汇表,存储词汇;第三个是近义词关联表,存储近义词组间的关联信息;第四个是反馈表,存储用户的反馈信息。
现在,我们就开始手把手设计“近义词查询”的数据库。
首先,我们新建用户表,命名为user,用来存储用户信息。
对于一个字段,我们应该考虑这么几个要素,字段名,数据类型,该字段的值是否允许为空,其它的一些要求,最后是这个字段的中文备注。
第一个字段名是_id,类型为字符串,不允许为空,这个是系统默认自动存在的,我们可以把它当做这个表的主键,整个数据表中,主键只能有一个,它就像指定了这个id字段做为这个数据表的每条记录的唯一标识,就像人们的身份证号一样,根据身份证号,就一定可以找到对应的人的身份信息,而且是唯一的。所以,同样,我们可以根据这个字段_id,找到对应的唯一的那条数据;
第二个字段名是nickName,代表的是用户名,类型为字符串,然后不允许为空;
第三个字段名是avatarUrl,类型为字符串,不允许为空,存储用户头像的地址,这里请注意,是用户头像的地址,不用用户头像的图片。
第四个字段名是gender,代表的是用户的性别,类型是数字,1表示男,2表示女
第五个字段名是openid,这个是最重要的一个字段,存储用户的微信id
第六个字段名是is_admin,类型是数字,代表当前用户是否为管理员,1是管理员,0是普通用户;
第七个字段名是sginTime,类型是时间,代表用户的注册时间
我们新建一个词汇表,命名为word。
同样,第一个字段是_id,字符串类型,作为该表的主键。
第二个字段是id,字符串类型,表示该词汇的id,这个字段的值是我们自己定义的。
第三个字段是word,字符串类型,表示该词汇;
第四个字段是hot,数字类型,默认为0,表示搜索热度,每被搜索一次,则+1
我们新建一个近义词关联表,命名为word_similar_relation。
同样,第一个字段是_id,字符串类型,作为该表的主键。
第二个字段是id,字符串类型,表示该关联关系的id,这个字段的值是我们自己定义的。
第三个字段是word_id,字符串类型,表示某个词汇的id;
第四个字段是word_name,字符串类型,表示某个词汇;
第五个字段是similar_word_id,字符串类型,表示与当前词汇构成近义词关系的某个词汇的id;
第六个字段是similar_word_name,字符串类型,表示与当前词汇构成近义词关系的某个词汇;
第七个字段是correlation,数字类型,默认为0,表示这两个词汇间的关联强度,每被用户点赞一次,则+1;
最后一个字段是type,数字类型,默认为1,表示关联的类型,1表示近义词,2表示反义词,方便以后拓展。
需要提醒大家的是,我们这里是通过word_id和word表中的id字段进行关联。
最后新建一个反馈表,命名为feedback。
同样,第一个字段是_id,字符串类型,作为该表的主键。
第二个字段是content,字符串类型,表示用户反馈的内容;
第三个字段是email,字符串类型,表示反馈者的邮箱;
第四个字段是wechat_account,字符串类型,表示反馈者的微信号;
第五个字段是picture_url,字符串类型,表示反馈者上传的图像的存储地址;
第六个字段是openid,字符串类型,表示反馈者的微信id;
第七个字段是type,数字类型,默认为0,表示反馈类型;
最后一个字段是create_time,时间类型,表示用户提交反馈的时间。
到目前为止,我们已经把“近义词查询”小程序的所有数据表建立完成了,希望同学们可以自己多看几遍本视频,理解为什么要这样设计数据库表。