发表于: 2016-11-23 21:04:56

4 2117


今天完成的事情:

任务一有更新,再将任务一更新的部分做完,进度如下

1)配置mysql(之前用的oracle),下载navicat

2)参考(http://www.cnblogs.com/xdp-gacl/p/3617243.html),整理业务模型,感觉需要三个实体对象,推荐人(属公司内部人员表),学员(报名表),修真类型(职业表),推荐人和学员、修真类型和学员都是多对一的关系(请帮忙看下理解对不对)

3)完成建表,根据任务要求进行简单的增删改查,建立索引,插入10条数据比较查询速度的区别(数据量太小,差别不太大)

表结构如下

4)navicat进行sql格式的备份与恢复

右键表备份成sql格式,删除数据,右键表所在数据库,运行sql文件

5)在电脑上安装虚拟机启动abuntu,在abuntu中部署tomcat及jdk、jre环境变量,无数次修改后终于启动tomcat成功

安装crt,在linux系统下配置ssh,成功进行远程连接

6)查看深度思考中Mysql相关的一些问题(求指导)

①为什么DB的设计中要使用Long来替换掉Date类型

好像是时区因素?存为long值一劳永逸,不怕时区错乱

②自增ID有什么坏处?什么样的场景下不使用自增ID?

如果删除了某些数据,id就不具有连续性了,对于某些需求属于弊端
java代码中设计model的时候,由于id是自增的,新建一个对象,调用对象的时候,对象属性值是不完整的,会出一些未知的问题
查阅资料,很多人都推荐GUID

③什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?

暂时不知道多大的数据量下索引会有影响,,,写测试代码的时候再试一下

一般来说,在某个字段经常作为查询条件的时候建立该字段的索引比较好

④唯一索引和普通索引的区别是什么,什么时候需要建唯一索引?

区别:唯一索引下的字段值不能重复,但可以为空;普通索引不存在这种限制

在某个字段有这样的需求,可以为空但必须唯一,这时候适合建唯一索引

⑤如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?

个人认为不需要吧,可以在insert语句中加入ignore关键字

INSERT IGNORE INTO table VALUES(,,,);

尝试sql语句加入一条重复数据(重复字段已经设置了唯一索引),会报错如下

[Err] 1062 - Duplicate entry '李博宇' for key 'index_name'

⑥CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?

个人理解,create_at在insert语句执行时赋值,update_at在update语句执行时赋值。

是否应该开放给外部调用的接口。。。似乎跟接口开发规范有关。。。搜了很多资料也没弄明白接口开发

⑦修真类型应该是直接存储Varchar,还是应该存储int?
varchar吧,里面不是单纯整数啊

⑧varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?

为了防止非法数据的进入,varchar不宜过长

个人是根据实际数据的长度,再增加两到三倍的长度,凑个整数来定。。不知同门们是怎么定的。。?网上没有搜到什么规则。。

变长字段定义的长度虽然不会影响服务器数据空间大小,但是对于客户端的内存有影响,客户端在用SQL从数据库读取数据时,首先会取到字段定义的长度,然后分配足够的内存,也就是说如果你定义的字段长度是1K,实际长度是10字节,要取1K记录,那客户端会分配1MB的内存, 但只保存了10K有效数据。这将会比较严重的浪费客户端内存。特别是一些高并发或者是取大量数据的场景,容易产生内存溢出

区别:text和longtext比varchar能够接收的字符串更多,与varchar不同的是text和longtext不可以有默认值,一般能用varchar的就不用text

明天计划的事情:

按照禅道中的计划走。。

遇到的问题:

linux的基本命令不熟悉,很不熟悉

mysql使用dos客户端查询时,中文显示乱码,因为mysql是使用utf8来显示数据的,但是操作系统是中文操作系统,默认字符集是gb2312,解决办法set character_set_results=gb2312

收获:

学习了数据库索引的基本概念

学习了数据模型


返回列表 返回列表
评论

    分享到