学号20162321 2016-2017-2 《程序设计与数据结构》第九周学习总结

时间:2021-10-17 15:54:59

教材学习内容总结

关键概念:

  • 数据库是为其他程序提供数据的应用软件
  • 关系数据库通过唯一的标识符在不同表的记录间建立联系
  • 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的关系中的每个属性都不可再分。

例如将书中的例子改为
学号20162321 2016-2017-2 《程序设计与数据结构》第九周学习总结
就不符合第一范式的要求

  • 第二范式

    • 仅仅符合1NF的设计,仍然会存在数据冗余过大,插入异常,删除异常,修改异常的问题
    • 其改进是,2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。

同样用书中的例子
学号20162321 2016-2017-2 《程序设计与数据结构》第九周学习总结

如果数据过多,同地区的人地址出现多次——数据冗长
加入新来一人,还没有具体住址,那么无法单独将地址填入表中——填入异常
如果一人搬家了,那么需要修改几处信息

  • 函数依赖

    若在一张表中,在属性(或属性组)X的值确定的情况下,必定能确定属性Y的值,那么就可以说Y函数依赖于X,写作 X → Y。也就是说,在数据表中,不存在任意两条记录,它们在X属性(或属性组)上的值相同,而在Y属性上的值不同。

同理书中的表有如下依赖

  • personID → firstName
  • personID → locationID
  • locationID → city

  • 第三范式

    3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。也就是说, 如果存在非主属性对于码的传递函数依赖

代码调试中的问题和解决过程

  • 问题1:MyDC程序中出现的问题

代码托管

学号20162321 2016-2017-2 《程序设计与数据结构》第九周学习总结

上周考试错题总结

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小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料