学号20162321 2016-2017-2 《程序设计与数据结构》第九周学习总结
教材学习内容总结
关键概念:
- 数据库是为其他程序提供数据的应用软件
- 关系数据库通过唯一的标识符在不同表的记录间建立联系
- JDBC API用来建立到数据库的链接
- CREATE TABLE SQL语句用来创建新的数据库表
- ALTER TABLE SQL语句用来修改已有的数据库表
- SHOW COLUMNS SQL语句用来获取表的各列和结构设置
- INSERT SQL语句用来向数据库表中添加新数据
- SELECT SQL语句用来得到数据库表中的数据
- 通过修改ResultSet可更新数据库
- DELETE FROM SQL语句用来删除数据库表中的数据
- DROP TABLE SQL语句用来删除整个数据库表
重点总结:
- 数据库管理系统对数据一般有四类基本操作:创建,读取,更新及删除(CRUD)
- 数据库是为了高效存储及查找来组织数据的大型仓库
教材学习中的问题和解决过程
- 问题1:关于数据库第一二三范式
- “关系”
“关系”和“关系模式”的区别,类似于面向对象程序设计中”类“与”对象“的区别。”关系“是”关系模式“的一个实例,你可以把”关系”理解为一张带数据的表,而“关系模式”是这张数据表的表结构。
- 第一范式
1NF的定义为:符合1NF的关系中的每个属性都不可再分。
例如将书中的例子改为
就不符合第一范式的要求
- 第二范式
- 仅仅符合1NF的设计,仍然会存在数据冗余过大,插入异常,删除异常,修改异常的问题
- 其改进是,2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。
同样用书中的例子
如果数据过多,同地区的人地址出现多次——数据冗长
加入新来一人,还没有具体住址,那么无法单独将地址填入表中——填入异常
如果一人搬家了,那么需要修改几处信息
- 函数依赖
若在一张表中,在属性(或属性组)X的值确定的情况下,必定能确定属性Y的值,那么就可以说Y函数依赖于X,写作 X → Y。也就是说,在数据表中,不存在任意两条记录,它们在X属性(或属性组)上的值相同,而在Y属性上的值不同。
同理书中的表有如下依赖
-
personID → firstName
-
personID → locationID
-
locationID → city
-
第三范式
3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。也就是说, 如果存在非主属性对于码的传递函数依赖
代码调试中的问题和解决过程
- 问题1:MyDC程序中出现的问题
代码托管
上周考试错题总结
sort.txt中的内容是:
aaa:10:1.1
ccc:20:3.3
ddd:40:4.4
bbb:30:2.2
eee:50:5.5
用“sort -t: -nk2 sort.txt”排序后的第二行是:B .ccc:20:3.3
解析:对每二列按数字升序排序
test.txt 中的内容是:
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
把第四列提取出来的Linux命令是:
A .cut -f 1 test.txt
B .cut -f 2 test.txt
C .cut -f 3 test.txt
D .cut -f 4 test.txt
正确答案: D
解析:cut 命令中第n列不是从0开始计数的。
Which of the following file streams should be explicitly closed to ensure that written data is properly retained(下面哪个文件输入流应该显式关闭,以确保数据能正确保存下来)?
A .output
点评过的同学博客和代码
其他(感悟、思考等,可选)
第一次接触数据库,感觉还是有点懵的,对此只想说多读多做
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 1/1 | 10/10 | |
第二周 | 300/500 | 1/2 | 10/20 | |
第三周 | 500/1000 | 2/4 | 15/35 | |
第四周 | 300/1300 | 1/5 | 15/50 | |
第五周 | 200/1500 | 2/6 | 20/70 | |
第六周 | 200/1700 | 1/7 | 10/80 | |
第七周 | 400/2100 | 1/8 | 10/90 | |
第八周 | 200/2300 | 1/9 | 10/100 | |
第九周 | 200/2500 | 1/10 | 10/110 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:XX小时
-
实际学习时间:XX小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)