概述
- -至此,我们已经学习了 Go Web 编程的基础知识。为了方便大家回顾,我将前面几篇文章放在下面:
- --
-
- Go Web 编程之 Hello World -
- Go Web 编程之 程序结构 -
- Go Web 编程之 请求 -
- Go Web 编程之 响应 -
- Go Web 编程之 模板(一) -
- Go Web 编程之 模板(二) -
- Go Web 编程之 静态文件 -
- Go Web 编程之 数据库 -
接下来,我们来完成一个实战项目,编写一个简单的社交平台功能。我们的社交平台有下面几个基本功能:
- --
-
- 用户注册和登录; -
- 用户可以发布帖子,其他用户可以回复帖子; -
- 用户可以关注其他用户,登录时主页上显示自己和其他用户的帖子信息; -
- 用户可以编辑自己的个人信息和帖子内容。 -
今天我们先完成数据库表的设计。
- -数据库设计
- -根据上面我们列出的功能需求,可知系统中存在下面几个实体:
- --
-
- 用户; -
- 帖子; -
- 评论。 -
我们还需要有一张表存储用户之间的关注关系。数据库表的设计推荐两个工具,SQL Designer和dbdiagram。前者比较轻量级,后者功能较为丰富,还可以根据设计导出 SQL 语句。我是使用后者进行设计:
- - - -dbdiagram 的使用比较简单,在左侧用它规定的语法定义表,以及表与表之间的外链关系,添加索引等。右侧会可视化显示表结构和关系。
- -用户表users
字段如下:
-
-
id
:自增id,主键;
-username
:用户名,唯一;
-email
:邮件,唯一;
-register_at
:注册时间;
-password
:密码。
-
为username
和email
设置唯一索引,用户名和邮件都不能重复。这里注意一点,我这里表中直接存储了密码。一般在生产环境中,直接存储密码是非常不安全的,容易受到攻击。这里只是为了简化处理。
帖子表posts
字段如下:
-
-
id
:自增id,主键;
-content
:内容;
-created_at
:创建时间;
-updated_at
:更新时间;
-user_id
:作者id。
-
这里user_id
外链到用户表users
。
评论表comments
字段如下:
-
-
id
:自增id,主键;
-content
:内容;
-created_at
:评论日期;
-post_id
:帖子id;
-user_id
:用户id。
-
这里post_id
外链到帖子表posts
,user_id
外链到用户表users
。
最后一个表follows
表示用户之间的关注关系,因为每个用户可以关注多个其他用户,也可以被多个其他用户关注,所以不能放在用户表users
中。
然后导出social.sql
:
-
|
-
-
|
在启动命令行,切换到social.sql
所在目录,连接mysql,创建数据库social
,切换到该数据库,执行source social.sql
,所有表就创建好了:
总结
- -参考
- --
-
- SQL Designer, https://ondras.zarovi.cz/sql/demo/ -
- dbdiagram, https://dbdiagram.io/d/5e44b95c9e76504e0ef1622f -
我
- - - -欢迎关注我的微信公众号【GoUpUp】,共同学习,一起进步~
- - - -