发表于: 2017-03-12 21:41:10
5 1770
task1-task9
【说明】
有些东西都是自己查了一些资料后上手的,觉得这些收集来的知识也很重要,
所以下面会区分开来,用【参考资料】和【自己实践】两个标签来完成,希望审核和阅读者知道这一点
一:今天完成
- T Task1.参考修真院线下报名贴(学习资料-线下报名-北京报名)中报名的格式,整理出业务模型,确定需要几个对象,每个对象的属性是什么,对象和对象之间的关系是一对一,还是一对多。
【参考资料】
1)采用面向对象的思想进行需求分析,提取业务模型
2)类图可以帮助我们识别业务需求中的人、业务概念、物品和事件等,并理清他们之间的关系。
需求中提到的各种业务概念、人物等,经过抽象后都可以视之为类。
3)类图包含了:类名、属性和方法三部分,其中减号表示private作用域,加号表示public作用域。
自己实践:
1)如果将学员抽象成类,可以做出下面的用例图
2)与之对应的对象有三个(报名学员,引荐师兄,审核师兄),他们之间的关系如下
3)下面是学院的类图(属性和方法先用中文代替,并且略有瑕疵,后面会修正)
Task2&3:mysql数据库和navicat数据库管理工具的安装
自己实践:
Task4:报名表的表结构
自己实践
stu_id | name | type | school_day | gra_university | online_id | day_report | wish | rec_senior | check_senior |
Task5:设计数据库(包括数据库的三个基本字段)
自己实践
还是第一次接触时间戳这个概念,主要拿来和datetime做对比,数据库也需要做出改变
【参考资料】
datetime
1、允许为空值,可以自定义值,系统不会自动修改其值。
2、不可以设定默认值,所以在不允许为空值的情况下,必须手动指定datetime字段的值才可以成功插入数据。
3、虽然不可以设定默认值,但是可以在指定datetime字段的值的时候使用now()变量来自动插入系统的当前时间。
timestamp
1、允许为空值,但是不可以自定义值,所以为空值时没有任何意义。
2、默认值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间。
3、数据库会自动修改其值,所以在插入记录时不需要指定timestamp字段的名称和timestamp字段的值,你只需要在设计表的时候添加一个timestamp字段即可,插入后该字段的值会自动变为当前系统时间。4、以后任何时间修改表中的记录时,对应记录的timestamp值会自动被更新为当前的系统时间。
【补充资料】
long是32位的,在数据库中可以用bigint或者numeric(x,y),x是长度,y是小数点后面的位数
修改ID为自动增长标识(参考)
alter table dbo.Tb_Customer_Assess drop column id
alter table dbo.Tb_Customer_Assess add id int primary key identity(1,1)
自己实践:
1)补充:查看mysql数据库版本
2) 后来增加了id自增,还有时间戳字段(不过自增Long是什么鬼?mysql没有这个类型啊,我用了bigint),
修改如下:
Task6: 从报名贴中找一条最近报名的师弟,用Mysql插入这条数据,并能够根据姓名查出来这条记录
自己实践
之前建表的时候把qq属性给漏了,现在补上
- TTask7. 分别用Navcat和Sql语句去将本条数据记录的报名宣言改成老大最帅
哈哈,改好了
- TTask 8. 将表导出成Sql文件,并使用navcat和Sql分别尝试删除此条数据,并用之前备份的Sql恢复。
【参考资料】
进入mysql命令行之后,怎么退出
一般mysql命令行中加;号代表一行命令的结束
\c 可以退出当前行命令,\q或者exit退出mysql命令行
APACHE用的多,负责居中调试,PHP进来了,引导给PHP来运算,JSP进来了,引导给TOMCAT
自己实践:
使用数据库查询表内容
删除是成功了,但是能不能恢复呢?可以!我的stu表又回来了
- TTask 9. 给姓名建索引,思考一下还应该给哪些数据建索引
【参考资料】
一个简单的对比测试
以我去年测试的数据作为一个简单示例,20多条数据源随机生成200万条数据,平均每条数据源都重复大概10万次,表结构比较简单,仅包含一个自增ID,一个char类型,一个text类型和一个int类型,单表2G大小,使用MyIASM引擎。开始测试未添加任何索引。
执行下面的SQL语句:
1 | mysql> SELECT id,FROM_UNIXTIME( time ) FROM article WHERE a.title= '测试标题' |
查询需要的时间非常恐怖的,如果加上联合查询和其他一些约束条件,数据库会疯狂的消耗内存,并且会影响前端程序的执行。这时给title字段添加一个BTREE索引:
1 | mysql> ALTER TABLE article ADD INDEX index_article_title ON title(200); |
再次执行上述查询语句,其对比非常明显:
建立索引,一般按照select的where条件来建立,比如: select的条件是where f1 and f2,那么如果我们在字段f1或字段f2上简历索引是没有用的,只有在字段f1和f2上同时建立索引才有用等。
自己实践:
结合上面说的那些,可以得出结论:除了给姓名做索引,还可以给学院的online_id建索引,因为它可以作为这个表的外键
创建成功!
添加成功!
二:明天计划
完成下面的几个任务(yes!)
- 10.插入10条数据,查看有索引和无索引的情况下,Sql语句执行的效率
- 11.查看深度思考中Mysql相关的一些问题,将自己思考的结果写在日报中,并查阅之前师兄的日报,看看是否有合自己思路接近或者是完全不一致的地方。
- 12.下载Java 7,并配置环境变量,百度搜索一下JDK和JRE的区别,并将结论用自己的话写在日报中。
- 13.下载Maven3,并配置好环境变量。
- 14.下载Eclipse或者是IDEA,配置好Maven。IDEA不用配置Maven,Eclipse也分自带或者外部,推荐使用外部Maven。
- 15.创建一个新的maven项目
- 16.在src/main/java下随便创建一个java文件,clean,install.查看本地的.m2下是否成功看到有Jar包。
- 17.编写DAO,注意写清楚Interface和Impl,注意遵守命名规范。
三:遇到问题
在navicat命令行工具里面输入准确命令不管用!
四:思考总结
往往一个任务如果仔细做的话,在查找资料的时候会发现好多其它知识点,这时候对资源的整合就尤其重要了,要迅速把握作者的意图和手段,筛选出对自己有用的那部分,其它的如果重要的话就先收藏了底下仔细研究。
如果在时间允许下应当一块复习了,毕竟技术哪有嫌多的。
因为是第一次真正做任务,难免会遇到很多问题,这时候沉下心来仔细想想问题的关键是什么!
评论