1+2+…+n = n(n+1)/2,先验证 n=1 是否成立。
计算机基础 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
8 位里,-1 的补码是全 1(11111111),想想为什么 +1 会变成 0?
AND 门:输入 1 和 0,输出是?
用文件存全校成绩,会遇到什么麻烦?
把这四件事记下来。
设计一张"图书"表,列出它的列。
学生表的主键该选什么?
借书记录表该有哪些外键?
班级和学生,外键放哪张表?
选课关联表有哪些列?
参考答案(家长):11111111+1 溢出丢掉最高位 = 00000000
参考答案(家长):左=1,右=1×2/2=1,成立
参考答案(家长):查一个人要扫全文件、两个人同时改会冲突、写到一半崩了会损坏。
参考答案(家长):0
参考答案(家长):如书号、书名、作者、出版年、库存。
参考答案(家长):学新概念时对照,就知道它是为了解决哪一件。
参考答案(家长):书号指向图书表,读者号指向读者表。
参考答案(家长):学号,不能选姓名(会重名)。
参考答案(家长):学号和课号,两个合起来当主键。
参考答案(家长):放学生表,存班级编号。
这种重复带来的问题叫什么?
怎么改才符合?
选课表里放"课程名"合适吗?
该怎么改?
这体现了什么思想?
这和写程序有什么不同?
"查所有三班同学的姓名",用了哪两个?
按什么列连接学生表和成绩表?
不建索引会怎样?
"每个班的平均分"怎么表达?
参考答案(家长):单独建一张爱好表,一行一个。
参考答案(家长):数据冗余,容易造成不一致。
参考答案(家长):班主任放班级表,学生表只留班级编号。
参考答案(家长):不合适,课程名只依赖课号,该放课程表。
参考答案(家长):程序是命令式(说步骤),查询是声明式(说目标)。
参考答案(家长):工程是权衡,没有绝对正确的设计。
参考答案(家长):学号。
参考答案(家长):先选择(三班),再投影(姓名)。
参考答案(家长):按班级分组,对成绩求平均。
参考答案(家长):可能要扫描两表所有组合,数据一大就慢得无法接受。
取第 3 页每页 10 条,该跳过多少?
索引像书里的什么?
为什么不用二叉树?
这体现了什么设计原则?
什么样的列适合建索引?
为什么?
建了(班级,成绩)索引,只查成绩能命中吗?
它靠什么估算代价?
发现"全表扫描"意味着什么?
转账最需要哪一条?
参考答案(家长):像索引页,能直接翻到那一页。
参考答案(家长):20 条。
参考答案(家长):针对最慢的那个环节(硬盘读取)来优化。
参考答案(家长):二叉树太高,每层一次硬盘读取,太慢。
参考答案(家长):索引的价值在于能快速排除大部分数据。
参考答案(家长):经常用来查询和连接、且取值比较分散的列。
参考答案(家长):靠统计信息,如每张表有多少行、某列有多少不同值。
参考答案(家长):通常不能,要从最左列开始。
参考答案(家长):原子性,绝不能只扣不加。
参考答案(家长):没走索引,数据量大时会很慢。