发表于: 2018-04-03 22:16:48

2 799


今天完成的事情:

1. 整理出业务模型

上述信息除9外属于个人基本信息,可以组建为一张基本表,以ID作为主键,可以定为register表。其中3类型可以另开一张表type作为外键,9的话也可以考虑一个一对多,从师兄表elder_brother中找一个外键。

 

2.下载并安装配置mysql:之前已完成

3.下载navicat

由于之前使用的是SQLyog,本次下载navicat后稍有点不顺手,具体问题参见后文今日遇到的问题。

4-5.创建业务表设计mysql数据库

报名表

其中ID选择自动递增

 

type

 

elder_brother

在这里我考虑到数据条数较少,将brotherid类型直接改成名字表示,如果数据量较大的话我觉得可以改成bigint形式,即对应师兄的线上ID号,这样整个表就利于管理。

 

 

type表中插入相应数据

Elder_brother表中为测试暂时插入如下数据

一对多中多的一方添加外键

 

6.从报名贴中找一条最近报名的师弟,用Mysql插入这条数据,并能够根据姓名查出来这条记录

利用navicat的插入数据,由于其中日期格式采取long,所以这里采用了如下格式。

但这里我考虑到一点这样的日期格式肯定不是正确的,首先它没有一个实际意义,这样写我为什么不转换为日期格式或者字符串呢?而且根本用不到Long类型。我找了一点资料觉得日期这块应该写成时间戳的形式。

 

mysql中关于时间记录一块的内容,我查找了部分资料:

一般有三种存储方式

1、时间戳(bigint

优点:存储性能好,精度要求高

缺点:可视化不佳,不利于数据查找

2datetime

优点:可视化好。

缺点:精度长度稍显不足

3、字符串

字符串比起事件类型,数字类型占用空间更大。

 

总结:datetime更节约空间,有更好的查询性能,如果datetime的长度或精度不满足需求,建议存储bigint类型的时间戳,没有必要将时间类型存为char

参考知乎:https://www.zhihu.com/question/27910664

 

时间和和时间戳的互换函数:

select FROM_UNIXTIME(1156219870);  

Select UNIX_TIMESTAMP('2006-11-04 12:23:00');

 

之后我使用mysql语句插入报名数据,截图如下:

这是两者之间的对比:

 

查询该条数据:

select * from register where ID=3;

 

7.分别用NavciatSql语句去将本条数据记录的报名宣言改成老大最帅

 

表上修改如图所示:简简单单的几个输入,帅气的老大便跃然纸上(不对不对是屏幕上,哈哈)

 

Sql语句修改:

update register set hope='老大最帅' where id=1;

果然老大还是最帅的。

 

8.将表导出成Sql文件,并使用navciatSql分别尝试删除此条数据,并用之前备份的Sql恢复。

navciat导出:

sql存储到相应位置。

不妨试着用sublime来看看里面是什么:

首先如果数据库中有register表就删除

然后创建了一张新表,添加了字段类型并且设置好了主键和外键。

最后插入了我之前的两条数据。

 

②删除数据:

Navicat删除

 

Mysql语句删除:

delete from register where ID=1;

 

3、导入sql文件

 

结果正确。

 

明天计划的事:

完成mysql剩余内容,并且安装好maven,新建maven项目测试一下。

 

遇到的问题:

由于之前一直使用SQLyog,下载了navicat后发现找不到视图管理器,一下子配主外键都弄不清除了,系统一致报外键约束的错,这一块也是因为我对sql主外键约束不是理解很透测导致的,在通过两个软件共同使用中,我终于意识到一对多关系,外键约束都是多方在维护。

 

收获:

1、学会navicat的初步使用

2、理解了表主外键约束的关系

3、认真分析了日期类型数据的存储方式,使用时间戳将日期数据存储为Long形式



返回列表 返回列表
评论

    分享到