├── .gitignore
├── LICENSE
├── readme.md
├── 复试个人笔记PDF版
├── readme.md
├── 数据库
│ ├── 10_数据库设计.pdf
│ ├── 1_绪论.pdf
│ ├── 2_关系数据库.pdf
│ ├── 3_SQL.pdf
│ ├── 4_数据库安全性.pdf
│ ├── 5_数据库完整性.pdf
│ ├── 6_关系数据库理论.pdf
│ ├── 7_关系查询处理和查询优化.pdf
│ ├── 8_数据库恢复技术.pdf
│ └── 9_并发控制.pdf
└── 汇编
│ ├── 1_预备知识.pdf
│ ├── 2_寻址方式.pdf
│ ├── 3_宏汇编语言.pdf
│ ├── 4_程序设计的基本方法.pdf
│ ├── 5_程序设计的其他方法和技术.pdf
│ └── 6_输入输出和WIN32编程.pdf
├── 数据库系统概论
├── 10_数据库恢复技术.assets
│ ├── image-20200228204028991.png
│ ├── image-20200229114452013.png
│ ├── image-20200229115123203.png
│ └── image-20200229115226989.png
├── 10_数据库设计.assets
│ ├── image-20200304104846783.png
│ ├── image-20200304120848896.png
│ ├── image-20200304121021608.png
│ └── image-20200304131934824.png
├── 10_数据库设计.md
├── 11_并发控制.assets
│ ├── image-20200229121927923.png
│ ├── image-20200229122022721.png
│ ├── image-20200229122220289.png
│ ├── image-20200229122631599.png
│ ├── image-20200229175018041.png
│ ├── image-20200229175032315.png
│ ├── image-20200229175042917.png
│ ├── image-20200229175226371.png
│ ├── image-20200229175342938.png
│ ├── image-20200229175854691.png
│ ├── image-20200229175930584.png
│ ├── image-20200229220218999.png
│ ├── image-20200229221338715.png
│ ├── image-20200229222052694.png
│ └── image-20200229222135769.png
├── 1_绪论.md
├── 2_关系数据库.assets
│ ├── image-20200224171821014.png
│ ├── image-20200224174943402.png
│ ├── image-20200224180304842.png
│ ├── image-20200224180316306.png
│ ├── image-20200224181243457.png
│ ├── image-20200224181645172.png
│ ├── image-20200224181733600.png
│ ├── image-20200224182607438.png
│ ├── image-20200224201505633.png
│ ├── image-20200224201512805.png
│ ├── image-20200224202843975-1582548771600.png
│ ├── image-20200224202843975.png
│ ├── image-20200224202941030.png
│ ├── image-20200224202953797.png
│ ├── image-20200224203009273.png
│ ├── image-20200224203251757.png
│ ├── image-20200224203422803.png
│ ├── image-20200224203645053.png
│ ├── image-20200224203750839.png
│ ├── image-20200224204416766.png
│ ├── image-20200224204502390.png
│ ├── image-20200224205155262.png
│ ├── image-20200224205728176.png
│ ├── image-20200224205804432.png
│ ├── image-20200224205833758.png
│ ├── image-20200224210007901.png
│ ├── image-20200411232257209.png
│ └── image-20200411232302789.png
├── 2_关系数据库.md
├── 3_SQL.assets
│ ├── image-20200227174619404.png
│ ├── image-20200227174653104.png
│ ├── image-20200227174900436.png
│ ├── image-20200227180212396.png
│ ├── image-20200227181259188.png
│ ├── image-20200227181358015.png
│ ├── image-20200227181624562.png
│ ├── image-20200228114638407.png
│ ├── image-20200228121639157.png
│ └── image-20200228145448525.png
├── 3_SQL.md
├── 4_数据库安全性.assets
│ ├── image-20200228180210763.png
│ ├── image-20200228180324764.png
│ ├── image-20200228180328324.png
│ ├── image-20200228181257547.png
│ ├── image-20200228182242392.png
│ └── image-20200228183153627.png
├── 4_数据库安全性.md
├── 5_数据库完整性.assets
│ └── image-20200228195404843.png
├── 5_数据库完整性.md
├── 6_关系数据库理论.assets
│ ├── image-20200303102031591.png
│ ├── image-20200303102304308.png
│ ├── image-20200303103941204.png
│ ├── image-20200303105713716.png
│ ├── image-20200303105819377.png
│ ├── image-20200303110052574.png
│ ├── image-20200303115546857.png
│ ├── image-20200303115603014.png
│ ├── image-20200303115622809.png
│ ├── image-20200303120058771.png
│ ├── image-20200303120111825.png
│ ├── image-20200303120201277.png
│ ├── image-20200303120238728.png
│ ├── image-20200303120257592.png
│ ├── image-20200303120322679.png
│ ├── image-20200303120334317.png
│ ├── image-20200303125452046.png
│ ├── image-20200303125622849.png
│ ├── image-20200303125730303.png
│ ├── image-20200303125748593.png
│ ├── image-20200303125810353.png
│ ├── image-20200303130343005.png
│ ├── image-20200303130642825.png
│ ├── image-20200303131655930.png
│ ├── image-20200303131808594.png
│ ├── image-20200303131836419.png
│ ├── image-20200303131931924.png
│ ├── image-20200303132157538.png
│ ├── image-20200303132328076.png
│ ├── image-20200303160033547.png
│ ├── image-20200303160547702.png
│ ├── image-20200303160750336.png
│ ├── image-20200303161403053.png
│ ├── image-20200303161453018.png
│ ├── image-20200303161508966.png
│ ├── image-20200303163142432.png
│ ├── image-20200314215156922.png
│ └── image-20200511184434515.png
├── 6_关系数据库理论.md
├── 7_关系查询处理和查询优化.assets
│ ├── image-20200301100605558.png
│ ├── image-20200301101827512.png
│ ├── image-20200413154529587.png
│ ├── image-20200413154539257.png
│ ├── image-20200413154549510.png
│ ├── image-20200413154606925.png
│ ├── image-20200413154619372.png
│ ├── image-20200413154635140.png
│ └── image-20200413154742198.png
├── 7_关系查询处理和查询优化.md
├── 8_数据库恢复技术.assets
│ ├── TIM图片20200508105352 (2).jpg
│ ├── TIM图片20200508105352.jpg
│ └── image-20200511210142567.png
├── 8_数据库恢复技术.md
├── 9_并发控制.assets
│ ├── image-20200508232827767.png
│ ├── image-20200508233642231.png
│ └── image-20200508233652340.png
├── 9_并发控制.md
├── Picture
│ ├── 20190327132121468.png
│ ├── image-20200224112001917.png
│ ├── image-20200224113135321.png
│ ├── image-20200224113527243.png
│ ├── image-20200224114730644.png
│ ├── image-20200224114923171.png
│ ├── image-20200224115522436.png
│ ├── image-20200224133720032.png
│ ├── image-20200224134640075.png
│ ├── image-20200224144419872.png
│ ├── image-20200224171821014-1616481687482.png
│ ├── image-20200224171821014.png
│ ├── image-20200224174943402.png
│ ├── image-20200224180304842.png
│ ├── image-20200224180316306.png
│ ├── image-20200224181243457.png
│ ├── image-20200224181645172.png
│ ├── image-20200301100605558.png
│ ├── image-20200411232302789.png
│ └── image-20200510100647230.png
├── 实验题.md
├── 往年真题.assets
│ ├── IMG_20200510_103422.jpg
│ ├── IMG_20200510_103426.jpg
│ ├── IMG_20200510_103611.jpg
│ ├── image-20200301100605558.png
│ ├── image-20200411232302789.png
│ ├── image-20200510100647230.png
│ └── image-20200511210133356.png
├── 往年真题.md
└── 课后题
│ ├── 1 绪论.md
│ ├── 10 数据库恢复技术.md
│ ├── 11 并发控制.md
│ ├── 2 关系数据库.md
│ ├── 3 SQL.md
│ ├── 4 数据库安全性.md
│ ├── 5 数据库完整性.md
│ ├── 6 关系数据库理论.md
│ ├── 7 数据库设计.md
│ ├── 9 数据库查询与优化.md
│ └── Picture
│ ├── 20200312165124563.png
│ ├── image-20200229175018041.png
│ ├── image-20200229175032315.png
│ ├── image-20200229175042917.png
│ ├── image-20200303120257592.png
│ ├── image-20200303120322679.png
│ ├── image-20200303120334317.png
│ ├── image-20200316203708279.png
│ ├── image-20200411232302789.png
│ ├── wps1.jpg
│ ├── wps10.jpg
│ ├── wps11.jpg
│ ├── wps12.jpg
│ ├── wps13.jpg
│ ├── wps14.jpg
│ ├── wps15.jpg
│ ├── wps19.jpg
│ ├── wps2.jpg
│ ├── wps20.jpg
│ ├── wps21.jpg
│ ├── wps22.jpg
│ ├── wps23.jpg
│ ├── wps24.jpg
│ ├── wps25.jpg
│ ├── wps26.jpg
│ ├── wps27.jpg
│ ├── wps28.jpg
│ ├── wps29.jpg
│ ├── wps3.jpg
│ ├── wps30.jpg
│ ├── wps31.jpg
│ ├── wps4.jpg
│ ├── wps5.jpg
│ ├── wps6.jpg
│ ├── wps7.jpg
│ ├── wps8.jpg
│ └── wps9.jpg
├── 汇编语言
├── 1_预备知识.assets
│ ├── IMG_20200508_220203.jpg
│ ├── image-20200304164828009.png
│ ├── image-20200304164835928.png
│ ├── image-20200304165235753.png
│ ├── image-20200304172235909.png
│ ├── image-20200304172327254.png
│ ├── image-20200304173933365.png
│ ├── image-20200304180930750.png
│ ├── image-20200304183740714.png
│ ├── image-20200304183854792.png
│ ├── image-20200304185042019.png
│ ├── image-20200304190239294.png
│ ├── image-20200304191100234.png
│ ├── image-20200304192906641.png
│ ├── image-20200304193107603.png
│ ├── image-20200304193421250.png
│ ├── image-20200304193739874.png
│ ├── image-20200304193958366.png
│ ├── image-20200304194303818.png
│ ├── image-20200304194322213.png
│ ├── image-20200304201328805.png
│ ├── image-20200304201704195.png
│ ├── image-20200330162510473.png
│ └── image-20200331181315782.png
├── 1_预备知识.md
├── 2_寻址方式.assets
│ ├── image-20200305114618414.png
│ └── image-20200305145037230.png
├── 2_寻址方式.md
├── 3_宏汇编语言.assets
│ ├── image-20200305181843207.png
│ ├── image-20200305185238425.png
│ ├── image-20200305185301835.png
│ ├── image-20200305191455924.png
│ ├── image-20200305201133225.png
│ ├── image-20200305203757352.png
│ ├── image-20200305203840719.png
│ ├── image-20200305204411034.png
│ ├── image-20200305211922294.png
│ ├── image-20200305213900416.png
│ ├── image-20200305214215984.png
│ ├── image-20200305214442647.png
│ ├── image-20200305214744288.png
│ ├── image-20200305215000663.png
│ ├── image-20200305215027638.png
│ ├── image-20200305215218613.png
│ ├── image-20200305215235881.png
│ ├── image-20200305215359758.png
│ ├── image-20200305215550847.png
│ ├── image-20200305215624987.png
│ ├── image-20200305215746353.png
│ ├── image-20200306121454635.png
│ ├── image-20200306121856979.png
│ └── image-20200306122039809.png
├── 3_宏汇编语言.md
├── 4_程序设计的基本方法.assets
│ ├── image-20200306163920607.png
│ ├── image-20200306175120648.png
│ └── image-20200306180305729.png
├── 4_程序设计的基本方法.md
├── 5_程序设计的其他方法和技术.assets
│ ├── IMG_20200509_165339.jpg
│ ├── IMG_20200509_165550.jpg
│ ├── IMG_20200509_172107.jpg
│ └── image-20200307214727932.png
├── 5_程序设计的其他方法和技术.md
├── 6_输入输出和WIN32编程.assets
│ ├── image-20200305114618414.png
│ ├── image-20200305145037230.png
│ ├── image-20200308185336054.png
│ ├── image-20200308191413472.png
│ ├── image-20200308191440370.png
│ ├── image-20200308191519136.png
│ ├── image-20200308192141107.png
│ ├── image-20200308192420551.png
│ ├── image-20200308193344868.png
│ ├── image-20200308194116922.png
│ ├── image-20200325221348233.png
│ ├── image-20200325224148214.png
│ └── image-20200327182051547.png
└── 6_输入输出和WIN32编程.md
├── 汇编部分代码及软件
├── 代码
│ ├── 2.asm
│ ├── 2.lst
│ ├── P117.asm
│ ├── P118.asm
│ ├── hello.asm
│ ├── hello.lst
│ ├── test.asm
│ ├── test.lst
│ ├── test2.asm
│ └── test2.lst
└── 软件
│ ├── DosBox.rar
│ └── masm
│ ├── CREF.EXE
│ ├── DEBUG.EXE
│ ├── EDIT.COM
│ ├── ERROUT.EXE
│ ├── EXE2BIN.EXE
│ ├── EXEMOD.EXE
│ ├── EXEPACK.EXE
│ ├── LIB.EXE
│ ├── LINK.EXE
│ ├── MAKE.EXE
│ ├── MASM.EXE
│ ├── README.DOC
│ ├── SETENV.EXE
│ ├── masm.IMg
│ └── readme.md
└── 补充资料
├── 数据库
├── 华科期末考试数据库试题4.rar
├── 数据库ppt
│ ├── 1 数据库系统概论.ppt
│ ├── 2 关系数据库.ppt
│ ├── 3 关系数据库SQL.ppt
│ ├── 4 数据库安全性.ppt
│ ├── 5 数据库完整性.ppt
│ ├── 第06章 关系数据理论-1.ppt
│ ├── 第06章 关系数据理论-2.ppt
│ ├── 第06章 关系数据理论-3.ppt
│ └── 第07章 数据库设计.ppt
└── 王珊《数据库系统概论》(第5版)笔记和课后习题详解.pdf
└── 汇编
├── 20170520_试卷A_final.doc
├── 20170520_试卷A_答案.doc
├── 20170520_试卷B.doc
├── 20180526_试卷A(答案与评分标准).doc
├── 20180526_试卷A.doc
├── 20180526_试卷B(答案).docx
├── 习题1.1和1.3解答.pdf
├── 习题1.4解答.pdf
├── 习题1.7和1.8解答.pdf
├── 寻址方式作业(教材2.1,2.3,2.4).pdf
├── 总复习.ppt
├── 总复习_第1章_复习习题.doc
├── 总复习_第2章_复习习题.doc
├── 总复习_第3章_复习习题.doc
├── 总复习_第4章_复习习题.doc
├── 总复习_第5章_复习习题.doc
├── 总复习_第6章_复习习题.doc
├── 教材3.1-3.4习题参考解答.pdf
├── 教材3.7、课堂练习2题参考解答.pdf
├── 教材3.8-3.10习题参考解答.pdf
├── 教材4.3、4.4作业参考解答.pdf
├── 教材4.5、4.6作业参考解答.pdf
├── 教材5.1、5.2、5.6、5.9作业参考解答.pdf
├── 教材6.1、6.2及课堂练习1题参考解答.pdf
├── 教材习题3.5和3.6参考解答.pdf
├── 汇编_第1章.pdf
├── 汇编_第2章.pdf
├── 汇编_第3章.pdf
├── 汇编_第4章.pdf
├── 汇编_第5章.pdf
├── 汇编_第6章.pdf
├── 第1次作业 (1).doc
├── 第1次作业_参考答案.doc
├── 第2次作业.doc
├── 第2次作业_参考答案.doc
├── 第3次作业.doc
├── 第3次作业_参考答案.doc
├── 第4次作业.doc
├── 第4次作业_参考答案.doc
├── 第5次作业.doc
├── 第5次作业参考答案.doc
├── 第6次作业.doc
├── 第6次作业参考答案.doc
├── 第一章习题1.2,1.5,1.6解答.pdf
└── 第一章习题1.9_1.13解答.pdf
/.gitignore:
--------------------------------------------------------------------------------
1 | /补充资料/机试/*
2 | /补充资料/华中科技大学复试资料/*
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 Jolson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | ## 使用说明
2 |
3 | 文本中可能会有`[toc]` `== ==` `[^1]:`这种符号,在网页中无法显示,这是Typora独有的Markdown语法,如需显示,可以自己clone一份到本地。
4 |
5 | ## 文档说明
6 |
7 | 1. 这是本人与2020年考研中,准备华中科技大学计算机系考研复试所做的一些笔记。
8 | 2. 当然期末复习的同学也可以看看,不过可能侧重点不一样。
9 | 3. 华科复试那几年一直是4选2,从`数据库,计算机系统组成原理,汇编语言,算法`中4选2。一般来说,计算机系统的内容繁杂,所以选的少。而华科官方给与的`算法`参考书,是一本比较古老的书,其书中的术语也很拗口,所以我也没选。所以大部分人会选数据库和汇编两门。
10 | 4. 本仓库主要包含了数据库和汇编语言的笔记,和一些寻找到的往年资料,由于已经过去一年了,我也忘了其中一些资料的出处在哪儿,貌似是在**华科的王道考研群**,总之,多谢各位的资料分享。本来说考研录取之后就整理笔记,结果拖了一年多才处理。
11 | 5. 我只记得汇编的重点是1~4章,数据库的重点有点分散。
12 |
13 | ### 汇编部分代码及软件
14 |
15 | - 这个部分主要放的是一些用dosbox写的汇编练习程序。为什么用dosbox,是因为在这玩意儿好调试,我貌似是在[这个视频](https://www.bilibili.com/video/BV1Nt411V7fa)中看到的,单用masm需要用命令行调试,没界面,比较麻烦。
16 | - 软件文档下放的dosbox和masm,我也忘了怎么使用的了。如果需要写汇编代码调试从而加深理解,可自行百度。
17 |
18 | ## 其它
19 |
20 | - 如果有人发现文档中的错误也可以指出并在文档上修改,也祝各位考研顺利。如果有什么问题可以留issues或评论。
21 | - 如果对你有用,可以点个star。
22 |
23 | 在gitee上也放了一份
24 |
25 | [本仓库github地址](https://github.com/Jolsonz/hust_kaoyan)
26 |
27 | [本仓库码云地址](https://gitee.com/Jolsonz/hust_kaoyan)
28 |
29 | 如果有需要其它资料的,例如往年期末试题,PPT等,也可以留言,我有保留,可以上传一份。
30 |
31 |
--------------------------------------------------------------------------------
/复试个人笔记PDF版/readme.md:
--------------------------------------------------------------------------------
1 | 这是PDF版的笔记,我没有仔细校对
2 |
--------------------------------------------------------------------------------
/复试个人笔记PDF版/数据库/10_数据库设计.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/数据库/10_数据库设计.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/数据库/1_绪论.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/数据库/1_绪论.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/数据库/2_关系数据库.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/数据库/2_关系数据库.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/数据库/3_SQL.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/数据库/3_SQL.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/数据库/4_数据库安全性.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/数据库/4_数据库安全性.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/数据库/5_数据库完整性.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/数据库/5_数据库完整性.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/数据库/6_关系数据库理论.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/数据库/6_关系数据库理论.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/数据库/7_关系查询处理和查询优化.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/数据库/7_关系查询处理和查询优化.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/数据库/8_数据库恢复技术.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/数据库/8_数据库恢复技术.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/数据库/9_并发控制.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/数据库/9_并发控制.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/汇编/1_预备知识.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/汇编/1_预备知识.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/汇编/2_寻址方式.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/汇编/2_寻址方式.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/汇编/3_宏汇编语言.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/汇编/3_宏汇编语言.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/汇编/4_程序设计的基本方法.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/汇编/4_程序设计的基本方法.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/汇编/5_程序设计的其他方法和技术.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/汇编/5_程序设计的其他方法和技术.pdf
--------------------------------------------------------------------------------
/复试个人笔记PDF版/汇编/6_输入输出和WIN32编程.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/复试个人笔记PDF版/汇编/6_输入输出和WIN32编程.pdf
--------------------------------------------------------------------------------
/数据库系统概论/10_数据库恢复技术.assets/image-20200228204028991.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/10_数据库恢复技术.assets/image-20200228204028991.png
--------------------------------------------------------------------------------
/数据库系统概论/10_数据库恢复技术.assets/image-20200229114452013.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/10_数据库恢复技术.assets/image-20200229114452013.png
--------------------------------------------------------------------------------
/数据库系统概论/10_数据库恢复技术.assets/image-20200229115123203.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/10_数据库恢复技术.assets/image-20200229115123203.png
--------------------------------------------------------------------------------
/数据库系统概论/10_数据库恢复技术.assets/image-20200229115226989.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/10_数据库恢复技术.assets/image-20200229115226989.png
--------------------------------------------------------------------------------
/数据库系统概论/10_数据库设计.assets/image-20200304104846783.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/10_数据库设计.assets/image-20200304104846783.png
--------------------------------------------------------------------------------
/数据库系统概论/10_数据库设计.assets/image-20200304120848896.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/10_数据库设计.assets/image-20200304120848896.png
--------------------------------------------------------------------------------
/数据库系统概论/10_数据库设计.assets/image-20200304121021608.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/10_数据库设计.assets/image-20200304121021608.png
--------------------------------------------------------------------------------
/数据库系统概论/10_数据库设计.assets/image-20200304131934824.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/10_数据库设计.assets/image-20200304131934824.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229121927923.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229121927923.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229122022721.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229122022721.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229122220289.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229122220289.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229122631599.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229122631599.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229175018041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229175018041.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229175032315.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229175032315.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229175042917.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229175042917.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229175226371.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229175226371.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229175342938.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229175342938.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229175854691.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229175854691.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229175930584.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229175930584.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229220218999.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229220218999.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229221338715.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229221338715.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229222052694.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229222052694.png
--------------------------------------------------------------------------------
/数据库系统概论/11_并发控制.assets/image-20200229222135769.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/11_并发控制.assets/image-20200229222135769.png
--------------------------------------------------------------------------------
/数据库系统概论/1_绪论.md:
--------------------------------------------------------------------------------
1 | [TOC]
2 |
3 | # 1.1 数据库系统概论
4 |
5 | 几个问题可以思考
6 |
7 | - 什么是数据库系统? 位于用户与操作系统之间的一层数据管理的系统软件
8 | - 产生DBMS的动机是什么? 文件系统的缺陷,计算机技术的成熟,需求的推动。
9 | - 如何设计数据库? 后面的数据库设计里有
10 | - DBMS的结构? 三级模式,二级映像
11 | - 数据库系统的组成?
12 | - 从外部应用程序员的角度 ——如何使用数据库?
13 | - 从数据库设计员的角度——如何构建数据库?
14 | - 从内部系统组成的角度——如何实现数据库系统软件?
15 |
16 |
17 |
18 | ## 1.1.1 四个基本概念
19 |
20 | 数据(Data):描述事物的==符号记录==,数据库中存储的基本对象。
21 |
22 | 数据库(DB):是**长期储存**在计算机内、**有组织的**、**有关联的**、**可共享**的**大量数据**的==集合==。
23 |
24 | 数据库管理系统(DBMS):位于用户与操作系统之间的一层数据管理==**系统软件**==,由一组相互关联的数据集合和一组访问这些数据的程序组成 。
25 |
26 | 数据库系统(DBS):在计算机系统中引入数据库后的**系统构成**,能提供数据存储、数据访问、数据共享,支持多进程安全并发访问及异常处理 。一般由DB,DBMS,应用系统,数据库管理员和用户构成。
27 |
28 | > 一般常把数据库系统简称为数据库。
29 | >
30 | > 下图就是
31 |
32 | 
33 |
34 |
35 |
36 | ### 系统如何理解数据的语义?
37 |
38 | 数据是有语义的,存放在计算机内的数据DBMS按照什么规则理解其语义
39 |
40 | > 例如 字符串‘李明男197205江苏南京市计算机系1990’语义是什么
41 |
42 | ### 数据库中的数据如何组织?
43 |
44 | 按**一定的数据模型**组织、描述和储存
45 |
46 | - 可为各种用户共享
47 | - 冗余度较小
48 | - 数据独立性较高
49 | - 易扩展
50 |
51 | ### DBMS的职责?
52 |
53 | **科学地组织和存储数据、高效地获取和维护数据**,为应用提供一个高效的数据支撑环境
54 |
55 |
56 | ### 数据库系统(DBS)包括哪些?(上面也提到了)
57 |
58 | - 数据库(DB)
59 | - 数据库管理系统(DBMS)(及其开发工具)
60 | - 应用系统
61 | - 数据库管理员 (DBA,DataBase Administrator)
62 |
63 | ## 1.1.2 数据管理技术的产生和发展
64 |
65 | 人工管理阶段->文件管理阶段->数据库系统阶段
66 |
67 | ### DBMS的产生动机
68 |
69 | - 应用**需求的推动**
70 | - 计算机硬件,软件的发展
71 |
72 | > 就是动力和条件都有了
73 |
74 | 
75 |
76 | ### 文件系统管理数据
77 |
78 | #### 相对于人工管理阶段的优点
79 |
80 | 1. 数据可以长期保存
81 | 2. 由文件系统管理数据(人工管理阶段是由应用程序来管理数据)
82 |
83 | #### 存在问题
84 |
85 | 1. 独立性差
86 | 对现有数据再加一些新应用会很困难,系统不易扩充。
87 | 2. 文件系统数据**冗余大,共享性差**
88 | 冗余是应为都要各自建立文件。就算有相同的数据也是一样。不能共享。
89 | 3. 应用程序**希望模糊查询**
90 | 文件系统一次一个记录的方式不支持
91 | 4. **完整性问题**
92 | 数据库中数据必须满足一致性约束,如**学号唯一**,只能通过**`应用程序来保证`**
93 | 5. **故障恢复**
94 | 计算机系统出现异常,数据库中数据应恢复到故障前状态文件系统不保证这种原子性问题。例如,**转账问题**
95 | 6. **共享数据并发访问异常**
96 | 文件系统只提供互斥访问共享数据,不考虑并发中的一致性保证。如,**对同一账号的两个并发取款操作**
97 | 7. **安全性问题**
98 | 数据库中共享数据要求更高的共享保护,文件系统中由于应用程序与数据**密切**结合,难于保证
99 |
100 | #### 解决方案
101 |
102 | - 开发一种比文件系统更加强大的数据管理系统,将数据的**结构语义、关联关系、冗余消除**等交给该系统管理,并提供**一次一集合**的数据访问方式。
103 |
104 | - 使用资源抽象、资源共享等**虚拟技术**,自动保证数据并发共享访问的安全性、隔离性。每个应用对各自的虚拟数据库操作,系统保证虚拟资源到物理资源的**映射**,保证物理数据库的**一致性、完整性**
105 |
106 | - 能自动解决**共享异常、原子性、完整性**问题
107 |
108 | 
109 |
110 | ### 数据库系统的目的
111 |
112 | 给用户提供整体数据的**抽象视图**,将磁盘上的所有物理数据集合抽象成整体结构化的**虚拟数据**,**隐藏了细节**。
113 |
114 | 系统通常采用**三层抽象**来完成:视图层、逻辑层、物理层
115 |
116 | 
117 |
118 | ## 1.1.3 数据库系统的特点
119 |
120 | ### 数据结构化(是与文件系统的根本区别)
121 |
122 | ==整体数据的结构化是数据库的主要特征之一==,同时也是与文件系统的根本区别
123 |
124 | 整体结构化的含义
125 |
126 | - 不再仅仅针对某一个应用,而是**面向全组织**
127 | - 不仅数据内部结构化,整体是结构化的,**数据之间具有联系**
128 |
129 | 数据库中实现的是数据的真正结构化
130 |
131 | - 数据的结构**用数据模型描述**,无需程序定义和解释
132 | - 数据可以变长
133 | - 数据的最小存取单位是数据项
134 |
135 | ### 数据的共享性高,冗余度低,易扩充
136 |
137 | 数据库系统从整体角度看待和描述数据,数据面向整个系统,可以被多个用户、多个应用共享使用。
138 |
139 | 数据共享的好处
140 |
141 | - 减少数据冗余,节约存储空间
142 | - 避免数据之间的不相容性与不一致性
143 | - 使系统**易于扩充**
144 |
145 | 但是显然使实现难度增加了。
146 |
147 | ### 数据独立性高
148 |
149 | - 物理独立性
150 |
151 | 指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的**物理存储改变了,应用程序不用改变。**数据再数据库中的存储方式由DBMS管理的,用户不需要了解。
152 |
153 | - 逻辑独立性
154 |
155 | 指用户的应用程序与数据库的逻辑结构是相互独立的。数据的**逻辑结构改变了,用户程序也可以不变。**
156 |
157 | > 这两个数据独立性是由DBMS的**二级映像功能**来保证的,DBMS能够提供两级独立性
158 |
159 | ---
160 |
161 | ### 数据由DBMS统一管理和控制
162 |
163 | DBMS提供的数据控制功能 (就是7-10这四章的内容)
164 |
165 | 1. 数据的安全性(Security)保护
166 |
167 | 保护数据,以防止不合法的使用造成的数据的泄密和破坏。
168 |
169 | 2. 数据的完整性(Integrity)检查
170 |
171 | 将数据控制在有效的范围内,或保证数据之间满足一定的关系
172 |
173 | 3. 并发(Concurrency)控制
174 |
175 | 对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果。
176 |
177 | 4. 数据库恢复(Recovery)
178 |
179 | 将数据库从错误状态恢复到某一已知的正确状态。
180 |
181 | # 1.2 数据模型
182 |
183 | 数据模型:是一种描述数据、数据联系、数据语义及一致性约束的**抽象工具**,就是**现实世界的模拟**。
184 | 通常由 数据结构,数据操作,数据完整性约束条件三部分组成。
185 |
186 | > 1. 数据结构
187 | > 描述数据库的组成对象以及对象之间的联系。
188 | > 非常重要,一般按数据结构的类型来命名数据模型(也可以说是按逻辑模型命名数据模型)
189 | > 网状结构就命名为网状模型
190 | > 2. 数据操作
191 | > 数据库中各种对象的值允许的操作的集合和相关规则
192 | > 3. 数据完整性约束条件
193 | > 实体完整性,参照完整性,用户自定义完整性。
194 |
195 | 数据库设计:用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。
196 |
197 | ## 1.2.1 两类数据模型
198 |
199 | 1. 概念模型**==(E-R模型)==**
200 | 按用户的观点来对数据和信息建模,用于数据库设计,主要基于对现实世界的这样一种认识:现实世界是由一组称为实体的基本对象以及这些对象间的联系组成
201 | 2. 数据模型 ==( 逻辑模型和物理模型 )==
202 | - **逻辑模型**主要包括网状模型、层次模型、**关系模型(要学的)**、面向对象模型等,按计算机系统的观点对数据建模,用于DBMS实现。
203 | - **物理模型是对数据最底层的抽象**,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法。
204 |
205 | 
206 |
207 | ## 1.2.2 概念模型(E-R模型)
208 |
209 | - 实体(Entity) 客观存在并可相互区别的事物,可以是具体的人、物或抽象的概念。
210 |
211 | - 属性(Attribute) 实体所具有的某一特性称为属性。实体可以由若干个属性来刻画。
212 |
213 | - 域(Domain) 属性的取值范围称为该属性的域。
214 |
215 | - 实体型(Entity Type) 用**实体名及其属性名集合**来抽象和刻画同类实体,例如**学生(学号,姓名....)**就是一个实体型,(也可以说是关系模式)
216 |
217 | - 实体集(Entity Set) 同一类型实体的集合称为实体集,例如**全体学生**。
218 |
219 | - 码(key) 可以**唯一标识实体**的最小属性集称为码。
220 |
221 | - 联系 (Relationship) 现实世界中事物内部以及事物之间的联系。例如1:1,1:n ,m:n这样的。
222 |
223 | **实体内部**的联系指组成实体的**各属性之间**的联系
224 | **实体之间**的联系通常是指**不同实体集之间**的联系
225 |
226 | ## 1.2.3 关系模型
227 |
228 | 逻辑模型中,层次模型和网状模型都有缺点[^1],现在用的最广泛的是关系模型。
229 |
230 | > 它两又被称作非层次模型。
231 | >
232 | > 用层次模型的话,现实中许多联系是非层次的,例如多对多联系。
233 | >
234 | > 而网状模型结构比较复杂,用户不易掌握,其DDL,DML语言也复杂,不易使用
235 |
236 | | **关系术语** | **一般表格的术语** |
237 | | :----------: | :------------------------------: |
238 | | 关系名 | 表名 |
239 | | 关系模式 | 表头(表格的描述) |
240 | | 关系 | (一张)二维表 |
241 | | 元组 | 记录或行 |
242 | | 属性 | 列 |
243 | | 属性名 | 列名 |
244 | | 属性值 | 列值 |
245 | | 分量 | 一条记录(一行)中的**一个列值** |
246 | | 非规范关系 | 表中有表(大表中嵌有小表) |
247 |
248 | > 关系模式就是对关系的描述,一般表示为
249 | >
250 | > 关系名(属性1,属性2,.....)
251 |
252 | ### 优点
253 |
254 | 关系模型把**存取路径向用户隐蔽起来**(即**存储路径对用户透明**),用户只需指出“干什么”,“找什么”,不需告知“怎么干”,“怎么找”。从而大大提高了数据的独立性,提高了用户的生产率。
255 |
256 | 概念单一,建立在严格的数学基础上。
257 |
258 | ### 缺点
259 |
260 | 存取路径对用户透明,导致**查询效率**不如非关系数据模型,因此为了提高性能,**需对用户的查询请求优化。增加了开发DBMS的难度**
261 |
262 | # 1.3 数据库系统的结构[^2]
263 |
264 | 从数据库应用开发人员的角度看,数据库系统通常采用**三级模式结构**,这是数据库系统内部的系统结构
265 |
266 | ## 1.3.1数据库系统程序结构
267 |
268 | 
269 |
270 | 几个简写:
271 |
272 | 1. DDL 数据定义语言 即Creat
273 | 2. DML 数据操纵语言 即Select,insert,delate,update等
274 | 3. DCL 数据控制语言 即 Grant,revock这种授予权限的。
275 |
276 | ## 1.3.2 数据库系统中数据结构
277 |
278 | “型” 和“值” 的概念 ——分别存放在**数据文件**和**字典**中
279 | 型(Type):对某一类数据的结构和属性的说明
280 | 值(Value):是型的一个具体赋值
281 |
282 | > 例如 学生记录型:(有点像那个关系模式,就是没有写表名而已)
283 | > (学号,姓名,性别,系别,年龄,籍贯)
284 | > 一个记录值:
285 | > (900201,李明,男,计算机,22,江苏)
286 |
287 | ### 数据库系统的三级模式结构
288 |
289 | 
290 |
291 | #### 模 式(Schema)
292 |
293 | > **仅涉及型,不涉及具体的值**,一个数据库只有一个。
294 |
295 | - 模式(也称逻辑模式)
296 | - 数据库中==全体数据的逻辑结构和特征==的描述
297 | - 所有用户的公共数据视图,综合了所有用户的需求
298 | - ==一个数据库只有一个模式==
299 | - 模式的地位:是数据库系统模式结构的**中间层**
300 | - **与数据的物理存储细节和硬件环境无关**
301 | - 与具体的应用程序、开发工具及高级程序设计语言无关
302 | - 模式的定义
303 | - 数据的逻辑结构(数据项的名字、类型、取值范围等)
304 | - 数据之间的联系
305 | - 数据有关的安全性、完整性要求
306 |
307 | #### 外模式(External Schema)
308 |
309 | > 通常是模式的子集。可有多个
310 |
311 | - 外模式(也称子模式或用户模式)
312 | - 数据库用户(包括应用程序员和最终用户)使用的==**局部数据**的逻辑结构和特征==的描述
313 | - 数据库用户的数据**视图**,是与某一应用有关的数据的逻辑表示
314 | - 外模式的地位:**介于模式与应用之间**
315 | - 模式与外模式的关系:一对多
316 | 一个数据库的多个外模式反映了不同的用户的应用需求。对模式
317 | 中同一数据,在外模式中的结构类型、保密级别等可以不同
318 |
319 | - 外模式与应用的关系:一对多
320 | 同一外模式也可以为某一用户的多个应用系统所使用
321 |
322 | - 但**一个应用程序只能使用一个外模式**
323 |
324 | > 看前面那个图很容易理解,就把它理解为视图也行
325 |
326 | - 是**保证数据库安全的一个有力措施**,每个用户只能看见和访问对应外模式中的数据,数据库中的其他数据是不可见的。
327 |
328 | #### 内模式(Internal Schema)
329 |
330 | > 一个数据库只有一个内模式
331 | > 内部存储方式
332 |
333 | - 是数据物理结构和存储方式的描述
334 | - 是数据在数据库内部的**组织方式**
335 | - 记录的存储方式(顺序存储、**B树结构**、hash存储)
336 |
337 | - 索引的组织方式(**B+树索引**,hash索引)
338 |
339 | - 数据是否压缩存储,是否加密
340 |
341 | > B树B+树可见数据结构,简单的说,B数的叶子节点是空的,意味着查找失败,B+树的叶节点才有信息,其他节点都是索引。王道数据结构2019版P251
342 |
343 | ## 1.3.3 数据库的二级映像功能与数据独立性
344 |
345 | > 三级模式是对数据的三个抽象级别
346 | > 二级映象在**DBMS内部**实现这三个抽象层次的**联系和转换**
347 | >
348 | > 这里不需要说外模式变了怎么办,要改变外模式,删了重新建一个就是,反正是1:n的关系,只有模式,和内模式是惟一的,改变之后的处理要做好。
349 | >
350 | > 具体实现细节不需要知道,知道这两个映像就行。
351 |
352 | ### 1 外模式/模式映像
353 |
354 | 外模式反应数据的局部逻辑结构,模式反应数据的全局逻辑结构。
355 |
356 | > 保证数据的**逻辑独立性**
357 | >
358 | > 对每一个外模式,都有一个此映象
359 |
360 | 当**模式改变**时[^3],数据库管理员修改有关的==外模式/模式映象==,使**外模式保持不变**
361 | 应用程序是依据数据的外模式编写的,从而**应用程序不必修改**,保证了数据与程序的逻辑独立性,简称**数据的逻辑独立性**。
362 |
363 | ### 2 模式/内模式映像
364 |
365 | > 保证了**物理独立性**。
366 | >
367 | > 模式,内模式两者都唯一,所以此映像**只有一个**。
368 |
369 | 当数据库的**存储结构改变(即内模式变了)**了(例如选用了另一种存储结构),数据库管理员修改==模式/内模式映象==,使**模式保持不变**,从而让应用程序不受影响。保证了数据与程序的物理独立性。
370 |
371 | # 1.4 数据库系统的组成
372 |
373 | 没啥好说的。
374 |
375 | - 硬件平台及数据库
376 | - 软件
377 | - DBMS
378 | - 操作系统
379 | - 与数据库接口的高级语言和编译系统
380 | - 人员
381 | - 数据库管理员(DBA)
382 | - 系统分析员,数据库设计人员
383 | - 应用程序员
384 | - 用户
385 |
386 |
387 |
388 | 
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 | [^1]: 书p26有相关解释。
399 | [^2]: 三级模式,两级映象
400 |
401 | [^3]: 例如增加新的关系,新的属性,改变属性的数据类型等。
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224171821014.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224171821014.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224174943402.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224174943402.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224180304842.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224180304842.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224180316306.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224180316306.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224181243457.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224181243457.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224181645172.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224181645172.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224181733600.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224181733600.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224182607438.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224182607438.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224201505633.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224201505633.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224201512805.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224201512805.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224202843975-1582548771600.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224202843975-1582548771600.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224202843975.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224202843975.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224202941030.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224202941030.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224202953797.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224202953797.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224203009273.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224203009273.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224203251757.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224203251757.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224203422803.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224203422803.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224203645053.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224203645053.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224203750839.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224203750839.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224204416766.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224204416766.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224204502390.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224204502390.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224205155262.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224205155262.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224205728176.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224205728176.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224205804432.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224205804432.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224205833758.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224205833758.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200224210007901.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200224210007901.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200411232257209.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200411232257209.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.assets/image-20200411232302789.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/2_关系数据库.assets/image-20200411232302789.png
--------------------------------------------------------------------------------
/数据库系统概论/2_关系数据库.md:
--------------------------------------------------------------------------------
1 | [toc]
2 |
3 | 为什么需要代数语言?
4 |
5 | > 为了使查询需求描述自动化,自然化
6 |
7 | 依然分成三个要素来将
8 |
9 | 按照数据模型的三个要素,关系模型分成:
10 | 关系数据结构,关系操作集合,关系完整性约束。
11 |
12 | # 2.1 关系数据结构及形式化定义
13 |
14 | 关系代数语言虽然**用户不友好**,但形成一套理论,可以指导数据库研究用户友好语言可以自动转换为关系代数语言,例如 SQL。
15 |
16 | ==关系数据结构——关系==
17 |
18 | ## 2.1.1 关 系
19 |
20 | ### **关系定义**
21 |
22 | 关系的本质就是一个二维表,是实体之间的多个属性的联系。
23 |
24 | 
25 |
26 | 域 属性Di的值集合 ,例如{男,女}是性别值的集合,也就是它的域。
27 |
28 | 关系R D1×D2×…×Dn 子集,**是一张表**
29 |
30 | 元组ti 表中一行,笛卡尔积中每一个元素 (d1,d2,…,dn)
31 |
32 | 分量 一行即笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量,用t[i]表示
33 |
34 | 元组变量t 关系中R中代表元组的变量,其域为所有元组
35 |
36 | ### 什么是码?
37 |
38 | 候选码:
39 | 设R是一个关系模式,K是R的子集。若对于R中任意两个不同的元组t1≠ t2,有t1[K]≠ t2[K],且K是这样的最小集,则称K是R的候选码
40 |
41 | - 候选码**可能有多个**;
42 | - 唯一确定元组;
43 | - 最小化;
44 |
45 | 主码: 若一个关系有多个候选码,则**选定其中一个**为主码
46 |
47 | 全码: 关系模式的**所有属性组**是这个关系模式的候选码
48 |
49 | 主属性: **候选码的诸属性称为主属性**,不包含在任何侯选码中的属性称为非主属性或非码属性
50 |
51 | ### 基本关系的性质[^1]
52 |
53 | 1. 列是同质的,每一列中的分量是同一类型的数据,来自同一个域
54 |
55 | 2. 不同的列可出自同一个域
56 |
57 |
58 |
59 | > 其中的每一列称为一个属性
60 | > 不同的属性要给予不同的属性名
61 |
62 | 3. 列的顺序无所谓,列的次序可以任意交换
63 |
64 | 4. 任意两个元组的**候选码不能相同**
65 |
66 | 5. 行的顺序无所谓,行的次序可以任意交换
67 |
68 | 6. 分量必须取原子值,每一个分量都要是不可再分的数据项。
69 |
70 | > 当然也不是所有数据库都有上面6条性质,关系数据库要满足这些吧。
71 |
72 | ### 关系数据库中表(三种表)
73 |
74 | 基本关系(基本表或基表):**实际存在**的表,是实际存储数据的逻辑表示
75 |
76 | 查询表:**查询结果**对应的表,虚表
77 |
78 | 视图表:由基本表或其他视图表导出的表,是**虚表**,不对应实际存储的数据
79 |
80 | ## 2.12 关系模式[^2]
81 |
82 | 关系模式是一个5元组,形式化为:
83 |
84 | `R (U,D,dom,F)`
85 |
86 | R:关系名(Relation)
87 |
88 | U:组成该关系的**属性名集合。**
89 |
90 | D:属性组U中属性所来自的域(Domin)
91 |
92 | dom:属性向域映象集合
93 |
94 | F:属性间数据的依赖关系集合
95 |
96 | 通常简记为`R(U)`或`R(A1,A2....An)`Ai为属性名。
97 |
98 | 关系是关系模式在某一时刻的状态或内容,==关系是动态的,关系模式是静态的==
99 |
100 | > 即属性名,表名,域等东西一般不变,其内容,数据会变
101 |
102 | # 2.2 关系操作
103 |
104 | - 关系操作 :对关系表进行运算的运算符,这些运算符描述了应用对数据库的数据处理需求
105 |
106 | - 关系代数语言:用对关系的代数运算表达式来表达查询要求 代表:ISBL
107 |
108 | - 关系演算语言: 用谓词逻辑语言来表达查询要求[^6]
109 | - 元组关系演算语言 谓词变元的基本对象是元组变量 代表:APLHA, QUEL
110 | - 域关系演算语言 谓词变元的基本对象是域变量 代表:QBE
111 |
112 | - **具有关系代数和关系演算双重特点的语言**
113 | 代表:**SQL**(Structured Query Language)
114 |
115 | > 集DML,DDL,DCL与一体
116 |
117 | - 关系操作特点
118 | 一次一集合。关系操作的结果是一个关系
119 |
120 | # 2.3 关系的完整性
121 |
122 | ### 三类完整性约束
123 |
124 | 实体完整性和参照完整性:
125 | 关系模型**必须满足**的完整性约束条件。称为==关系的两个不变性==,应该由关系系统自动支持
126 |
127 | 用户定义的完整性:
128 | 应用领域需要遵循的约束条件,体现了具体领域中的语义约束
129 |
130 | ### 实体完整性
131 |
132 | 若属性A是基本关系R的**主属性**(候选码的属性),则属性A不能取空值
133 |
134 | ### 外码/引用
135 |
136 | R:学生(学号,姓名,专业,专业号`F`,年龄)
137 |
138 | S:专业(专业号`Ks`,专业名)
139 |
140 | > F是R的外码
141 | >
142 | > R:参照关系
143 | >
144 | > S:被参照关系/目标关系
145 | >
146 | > R与S**不一定是不同关系**,同一关系内部可能存在引用
147 |
148 |
149 |
150 | ### 参照完整性规则
151 |
152 | 若属性(或属性组)F 是基本关系R 的外码,它与基本关系S 的主码Ks相对应(基本关系R 和S 不一定是不同的关系),则对于R 中每个元组在**F上的值**必须为:
153 |
154 | - 或者**取空值**(**外码F 的==每个属性值==均为空值**,这里是说外码F不一定只有一个属性列,可能有多个列,要取空值就都取空值)
155 | - 或者等于S 中某个元组的主码值(正常情况)
156 |
157 | # 2.4 关系代数
158 |
159 |
160 |
161 |
162 |
163 | ### 2.4.1 传统集合运算[^3]
164 |
165 | 这部分略过,比较简单。可见P57
166 |
167 | > R - S 仍为n目关系,由属于R 而不属于S 的所有元组组成
168 | > 
169 | >
170 | > 笛卡尔积× 结果变成(n+m)目关系,严格的讲应该叫广义笛卡尔积
171 |
172 | ### 2.4.2 专门的关系运算
173 |
174 | #### 选择运算σ
175 |
176 | 选择运算是从关系R中选取使逻辑表达式F为真的元组,
177 | 是从行的角度进行的运算,其语义为按照行分解一张表
178 |
179 | 
180 |
181 | #### 投影运算π
182 |
183 |
184 |
185 | 从系统实现角度考虑,**消除重复行开销大**,投影运算没必要消除重复行,再定义一个消除重复行运算可以满足应用需求(注意,书中定义自动消除了重复)
186 |
187 | #### 连接运算θ
188 |
189 | 笛卡尔连接运算存在的问题:
190 |
191 | > 观察上例中表达式SC×Course,其结果中包含 所有的选课与所有课程的组合,而实际中,一个学生不可能选所有课程,这样**结果元组中许多是无意义的**。
192 |
193 | 所以引入连接运算:从两个关系的**笛卡尔积中**选取属性间**满足一定条件的元组**
194 |
195 |
196 |
197 | ##### 等值连接
198 |
199 |
200 |
201 |
202 |
203 | θ为“=”的连接运算称为等值连接
204 | 从关系R 与S 的广义笛卡尔积中选取A、B 属性值相等的那些元组
205 |
206 |
207 |
208 | ##### 自然连接
209 |
210 | 自然连接是一种特殊的等值连接,比较的分量必须是相同的属性组,在结果中**去掉重复属性列**
211 |
212 |
213 |
214 | > 自然连接的符号就是**连接运算的符号下面不写条件。**
215 |
216 |
217 |
218 | #### 常用的代数思维解决方法
219 |
220 | 整体法和分步法[^4]
221 |
222 | #### 外连接
223 |
224 | 问题 自然连接会**丢失信息**,需引入新的连接运算
225 | 例如 `student` 自然连接 `sc`会将一个未选课的学生丢失
226 |
227 | 如果把**舍弃的元组(又叫悬浮元组)也保存在结果关系**中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTERJOIN)。
228 |
229 |
230 |
231 | 外连接就是两边的悬浮元组都保存。
232 |
233 |
234 |
235 | #### 左外连接
236 |
237 |
238 |
239 | 如果只把**左边关系R**中的悬浮元组保留,就叫做左外连接(LEFT OUTER JOIN或LEFT JOIN)
240 |
241 |
242 |
243 | #### 右外连接
244 |
245 |
246 |
247 | 如果只把**右边关系S**中要舍弃的元组**保留**就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)。
248 |
249 | ### 2.4.3 附加运算
250 |
251 | 关系代数的基本运算足以表达任何查询,但使用不方便,写出的表达式太长。
252 | 定义一些附加运算,不能增加关系代数功能,但能简化表达式
253 |
254 | #### 更名运算
255 |
256 | E代表计算结果。当然可以不改属性名也可以,这样可以省略属性名不写。ρ~x~(E)就行
257 |
258 |
259 |
260 | #### 聚集运算
261 |
262 | 将表按照属性分组,即将元组按照属性值重新组合
263 |
264 | G,即Group by
265 |
266 |
267 |
268 |
269 |
270 | 聚集函数 输入为集合,输出为单一值的函数。
271 | sum(), avg(), min(), count()
272 | 应用 **聚集函数往往和聚集运算组合使用**
273 | 对于聚集运算后的结果,对每个组再运用聚集函数处理
274 |
275 | #### 去除相同元素
276 |
277 | `distinct`操作符,其含义是消除相同元素
278 |
279 | #### 广义投影
280 |
281 | 指在投影的时候可以做运算。
282 |
283 |
284 |
285 | #### 除(Division)
286 |
287 | 引入动机 在查询中,经常需要查询包含短语**“所有的”**这样的查询。例如,找出选过学分为3分的所有课程的学生?
288 |
289 |
290 |
291 | 这个解释在书上写的比较好,我写了笔记,在P63
292 |
293 |
294 |
295 | #### 数据库修改
296 |
297 | 就一定要是左箭头么,不能是右箭头?
298 |
299 |
300 |
301 | #### 视图操作
302 |
303 |
304 |
305 | # 2.5 关系演算[^5]
306 |
307 | #### 2.5.1 元组关系演算语言ALPHA
308 |
309 | #### 2.5.2 域关系演算语言QBE
310 |
311 | # 2.6 小结
312 |
313 | + 关系数据库是目前使用的最广的数据库
314 |
315 | + 关系系统只有==表==这一种数据结构,非关系系统还有其他数据结构
316 |
317 | + **如何使用5种基本运算(并、差、笛卡儿积、投影、选择)来描述其他三种运算(交、连接和除)**
318 | 这是第二章的课后题
319 |
320 |
321 |
322 | 就是除运算有点难,其实比较像NOT EXISTS双层嵌套。
323 |
324 | ---
325 |
326 | [^1]: 可见书p50
327 | [^2]: P51
328 | [^3]: P57
329 | [^4]: 第二个PPT的46页开始
330 | [^5]: 见书P64,貌似不要求掌握。
331 | [^6]: 应该不考,书上都是标的星号,研究生课程吧。
--------------------------------------------------------------------------------
/数据库系统概论/3_SQL.assets/image-20200227174619404.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/3_SQL.assets/image-20200227174619404.png
--------------------------------------------------------------------------------
/数据库系统概论/3_SQL.assets/image-20200227174653104.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/3_SQL.assets/image-20200227174653104.png
--------------------------------------------------------------------------------
/数据库系统概论/3_SQL.assets/image-20200227174900436.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/3_SQL.assets/image-20200227174900436.png
--------------------------------------------------------------------------------
/数据库系统概论/3_SQL.assets/image-20200227180212396.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/3_SQL.assets/image-20200227180212396.png
--------------------------------------------------------------------------------
/数据库系统概论/3_SQL.assets/image-20200227181259188.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/3_SQL.assets/image-20200227181259188.png
--------------------------------------------------------------------------------
/数据库系统概论/3_SQL.assets/image-20200227181358015.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/3_SQL.assets/image-20200227181358015.png
--------------------------------------------------------------------------------
/数据库系统概论/3_SQL.assets/image-20200227181624562.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/3_SQL.assets/image-20200227181624562.png
--------------------------------------------------------------------------------
/数据库系统概论/3_SQL.assets/image-20200228114638407.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/3_SQL.assets/image-20200228114638407.png
--------------------------------------------------------------------------------
/数据库系统概论/3_SQL.assets/image-20200228121639157.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/3_SQL.assets/image-20200228121639157.png
--------------------------------------------------------------------------------
/数据库系统概论/3_SQL.assets/image-20200228145448525.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/3_SQL.assets/image-20200228145448525.png
--------------------------------------------------------------------------------
/数据库系统概论/4_数据库安全性.assets/image-20200228180210763.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/4_数据库安全性.assets/image-20200228180210763.png
--------------------------------------------------------------------------------
/数据库系统概论/4_数据库安全性.assets/image-20200228180324764.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/4_数据库安全性.assets/image-20200228180324764.png
--------------------------------------------------------------------------------
/数据库系统概论/4_数据库安全性.assets/image-20200228180328324.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/4_数据库安全性.assets/image-20200228180328324.png
--------------------------------------------------------------------------------
/数据库系统概论/4_数据库安全性.assets/image-20200228181257547.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/4_数据库安全性.assets/image-20200228181257547.png
--------------------------------------------------------------------------------
/数据库系统概论/4_数据库安全性.assets/image-20200228182242392.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/4_数据库安全性.assets/image-20200228182242392.png
--------------------------------------------------------------------------------
/数据库系统概论/4_数据库安全性.assets/image-20200228183153627.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/4_数据库安全性.assets/image-20200228183153627.png
--------------------------------------------------------------------------------
/数据库系统概论/4_数据库安全性.md:
--------------------------------------------------------------------------------
1 | [TOC]
2 |
3 | # 4.1 计算机安全性概述
4 |
5 | - 问题的提出
6 | - 数据库的一大特点是数据可以共享
7 | - 数据共享必然带来数据库的安全性问题
8 | - 数据库系统中的数据共享不能是无条件的共享
9 | - 计算机系统安全性
10 | 为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。
11 | - 三类计算机系统安全性问题
12 | - 技术安全类
13 | - 管理安全类
14 | - 政策法律类
15 |
16 | ## TCSEC/TDI标准
17 |
18 | 美国国防部率先提出TCSEC(Trust Computer System Evaluation Criteria )标准(1985年),后来为了更加通用化,出现了一个通用准则(Common Criteria,CC)项目,现在也是我国标准。目前CC已经替代了TCSEC
19 |
20 | TCSEC又称桔皮书
21 | TCSEC/TDI(Trust Database Interpretation)于1991年推出,又称紫皮书。
22 |
23 | 
24 |
25 | B2以上的系统,还处于理论研究阶段,应用多限于一些特殊的部门,如军队等。
26 |
27 | > D最低级,一切不符合标准的都放在D级,如DOS系统
28 | >
29 | > 重点是C1与B1
30 | >
31 | > **C1**提供非常初级的自主安全保护,提供**自主存取控制(DAC)**
32 | >
33 | > **B1**提供标记安全保护,对标记的主体和课体都实行**强制存取措施(MAC)**,以及审计等安全措施。B1级别的产品才被认为是真正意义上的安全产品。
34 |
35 | ## CC标准
36 |
37 | EAL1是最低级。
38 |
39 |
40 |
41 | # 4.2 数据库安全性控制
42 |
43 | - 非法使用数据库的情况
44 | - 编写合法程序绕过DBMS及其授权机制
45 | - 直接或编写应用程序执行非授权操作
46 | - 通过多次合法查询数据库从中推导出一些保密数据
47 |
48 |
49 |
50 | ## 4.2.1 用户标识与鉴别
51 |
52 | - 用户标识与鉴别
53 | 系统提供的最外层安全保护措施,也就是登录的时候。
54 | - 常用识别技术
55 | - 用户标识
56 | - 静态,动态口令, 系统核对口令以鉴别用户身份
57 | - 生物特征鉴别,指纹,虹膜。
58 | - 用户名和静态口令易被窃取
59 |
60 | ## 4.2.2 存取控制
61 |
62 | 存取控制机制组成:
63 |
64 | - 定义用户权限
65 | - 合法权限检查
66 |
67 | 常用存取控制方法:
68 |
69 | - 自主存取控制(Discretionary Access Control ,简称==DAC==)
70 | **C2级**、**灵活**(奇怪,书上之前写的C1级支持DAC,P136)
71 |
72 | > C2将C1的DAC进一步细化,实施审计和资源隔离
73 |
74 | - 强制存取控制(Mandatory Access Control,简称 ==MAC==)
75 | **B1级**、**严格**
76 |
77 | ## 4.2.3 SQL中自主存取控制(DAC)
78 |
79 | - 通过 SQL 的 **GRANT** 语句和 **REVOKE** 语句实现
80 | - 用户权限组成 **数据对象、操作类型**
81 | - 定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作
82 | - 定义存取权限称为**授权**
83 |
84 | ## 4.2.4 授权与回收 Grant -Revoke
85 |
86 | ```sql
87 | GRANT 语句的一般格式:
88 | GRANT <权限>[,<权限>]...
89 | [ON <对象类型> <对象名>]
90 | TO <用户>[,<用户>]...
91 | [WITH GRANT OPTION];
92 | 语义:将对指定操作对象的指定操作权限授予指定的用户
93 | ```
94 |
95 | - 发出GRANT:
96 | - DBA、数据库对象创建者、拥有该权限的用户
97 | - 按受权限的用户:
98 | - 一个或多个具体用户、**PUBLIC(全体用户)**
99 | - `WITH GRANT OPTION`子句:
100 | - 指定:**可以再授予**(有这个子句就能再授予它自己的权限给其他用户),没有指定:不能传播
101 | - 那么相应回收的时候要加 `CASCADE` ,级联回收。
102 | - **不允许循环授权**
103 |
104 | ```sql
105 | [例] 把查询Student,Course表权限授给用户U1,U2
106 | GRANT SELECT
107 | ON TABLE Student,Course
108 | TO U1,U2;
109 |
110 | [例] 把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
111 | GRANT INSERT
112 | ON TABLE SC
113 | TO U5
114 | WITH GRANT OPTION;
115 | /* U5不仅拥有了对表SC的INSERT权限,还可以传播此权限 */
116 | ```
117 |
118 | > 授予所有权限可以用 GRANT ALL PRIVILIGES ON <表名> TO <用户名>
119 |
120 | 授予的权限可以由DBA或其他授权者用**REVOKE语句收回**
121 |
122 | ```sql
123 | REVOKE语句的一般格式为:
124 | REVOKE <权限>[,<权限>]...
125 | [ON <对象类型> <对象名>]
126 | FROM <用户>[,<用户>]...;
127 |
128 | [例] 把用户U4修改学生学号的权限收回
129 | REVOKE UPDATE(Sno)
130 | ON TABLE Student
131 | FROM U4;
132 |
133 | [例] 把用户U5对SC表的INSERT权限收回
134 | REVOKE INSERT
135 | ON TABLE SC
136 | FROM U5 CASCADE ;
137 | /* 将用户U5的INSERT权限收回的时候必须级联(CASCADE)收回
138 | 系统只收回直接或间接从U5处获得的权限 */
139 | ```
140 |
141 | `CASCADE`级联收回
142 |
143 | ---
144 |
145 | 这是创建用户 `Creat User [With][DBA|RESOURCE|CONNECT]`若无指定新用户的权限,默认为Connect。
146 |
147 | > 这玩意儿不是SQL的标准,所以了解一下就行。
148 |
149 | - DBA,超级用户,有权创建用户
150 | - Resource,能创建基本表和视图,不能创建用户,可以把自己的存取权限Grant给其他用户
151 | - Connect,只能登陆数据库,查看数据其他啥也不能干。
152 |
153 |
154 |
155 | > 了解一下这个图。
156 |
157 | ## 4.2.5 数据库角色
158 |
159 | ### 基本操作
160 |
161 | - 数据库角色:被命名的一组与数据库操作相关的权限
162 |
163 | - ==角色是权限的集合==
164 | 这点有点像Linux。
165 | - 可以**为一组具有相同权限的用户创建一个角色**
166 | - **简化授权的过程**
167 |
168 | - 角色的创建
169 |
170 | ```sql
171 | CREATE ROLE <角色名>
172 | ```
173 |
174 | - 给角色授权
175 |
176 | ```sql
177 | GRANT <权限>[,<权限>]…
178 | ON <对象类型>对象名 //一遍就是表名
179 | TO <角色>[,<角色>]…
180 | ```
181 |
182 | - 将一个角色授予其他的角色或用户
183 |
184 |
185 | ```sql
186 | GRANT <角色1>[,<角色2>]…
187 | TO <角色3>[,<用户1>]…
188 | [WITH ADMIN OPTION]
189 | ```
190 |
191 | 这里注意是Admin,不是之前的Grant 。虽然功能差不多。
192 |
193 | - 角色权限的收回
194 |
195 | ```sql
196 | REVOKE <权限>[,<权限>]…
197 | ON <对象类型> <对象名>
198 | FROM <角色>[,<角色>]…
199 | ```
200 |
201 | ### 数据库角色示例
202 |
203 | 步骤如下:
204 |
205 | 1. 首先创建一个角色 R1
206 |
207 | ```sql
208 | CREATE ROLE R1;
209 | ```
210 |
211 |
212 |
213 | 2. 然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限
214 |
215 | ```sql
216 | GRANT SELECT,UPDATE,INSERT
217 | ON TABLE Student TO R1;
218 | ```
219 |
220 | 3. 将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限
221 |
222 | ```sql
223 | GRANT R1
224 | TO 王平,张明,赵玲
225 | ```
226 |
227 |
228 |
229 | 4. 可以一次性通过R1来回收王平的这3个权限
230 |
231 | ```
232 | REVOKE R1
233 | FROM 王平;
234 | ```
235 |
236 |
237 |
238 | ## 4.2.6 强制存取控制方法(MAC)
239 |
240 | ### 自主存取控制缺点
241 |
242 | 可能存在数据的“**无意泄露**”
243 | 原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而**数据本身并无安全性标记**
244 | 解决:对系统控制下的**所有主客体**实施**强制存取控制策略**
245 |
246 | ### 强制存取控制(MAC) 的特点
247 |
248 | - 保证更高程度的安全性
249 | - 用户不能直接感知或进行控制
250 | - 适用于对数据有严格而固定密级分类的部门
251 |
252 | ### 强制存取控制方法[^1]
253 |
254 |
255 |
256 | ==先进行DAC检查==,通过DAC检查的数据对象==再由系统进行MAC检查==,只有通过MAC检查的数据对象方可存取。
257 |
258 | #### 敏感度标记(Lable)
259 |
260 | 分若干级别:绝密,机密,可信,公开
261 |
262 | 主体的敏感度标记称:**许可证级别**(Clearance Lever)
263 |
264 | 客体的敏感度标记称:**密级**(Classification Lever)
265 |
266 | - MAC机制就是通过对比主体和客体的敏感度标记来确定主体是否能存取客体
267 | - MAC是对数据本身进行密级标记,**无论数据如何复制,标记与数据都是一个不可分的整体。只有符合密级标记要求的用户才可以操纵数据,从而提供了更高的安全性。**
268 |
269 | #### 规则
270 |
271 | 1. 仅当主体的许可证级别**大于或等于**客体的密级时,主体才能**读**相应客体
272 |
273 | 2. 仅当主体的许可证级别**等于**客体的密级时,主体才能**写**相应的客体
274 |
275 | > 第二条禁止了拥有高许可证级别的主体更新低密级的数据对象,防止敏感数据外泄
276 |
277 | 注意,在==第五版==中:仅当主体的许可证级别**==小于或等于==**客体的密级时,主体才能**写**相应的客体
278 |
279 | **这是因为,可能用户给写入的数据对象赋予高于自己许可证级别的密级。**
280 |
281 | > 那这样不会出现低权限主题乱写高权限客体,从而破坏数据这种事么?
282 | >
283 | > 还是说,严格意义上讲,只有许可证级别相等才能“修改”相应客体?
284 |
285 | # 4.3 视图机制
286 |
287 | 视图能够把要保密的数据对无权存取这些数据的用户隐藏起来,因此对数据提供一定程度的安全保护
288 |
289 | - 主要功能是**提供数据独立性**,无法完全满足要求
290 | - **间接实现**了支持存取谓词的用户权限定义
291 |
292 | ```sql
293 | Creat View CS_Student
294 | AS
295 | Select *
296 | from student
297 | where Sdept='cs'
298 |
299 | Grant select //只能检索信息。
300 | on CS_Student
301 | to 王平
302 |
303 | Grant all privileges //计算机系的系主任拥有检索和增删改计算机系学生信息的所有权限,从而实现了谓词,限制范围——计算机系的学生
304 | ont CS_Student
305 | to U1
306 | ```
307 |
308 |
309 |
310 | # 4.4 审计(Audit)
311 |
312 | ## 什么是审计
313 |
314 | - 系统自动建立审计日志,将用户对数据库的**所有操作记录在上面**
315 | - DBA利用审计日志找出非法存取数据的人、时间和内容
316 | - **C2以上**安全级别的DBMS必须具有
317 |
318 | ## 审计分类
319 |
320 | - 用户级审计
321 | - 针对自己创建的数据库的表或视图进行审计
322 | - 记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作
323 | - 系统级审计
324 | - DBA设置
325 | - 监测成功或失败的登录要求
326 | - 监测GRANT和REVOKE操作以及其他数据库级权限下的操作
327 |
328 | ## 审计示例
329 |
330 | AUDIT语句:设置审计功能
331 | NOAUDIT语句:取消审计功能
332 |
333 | ```sql
334 | [例]对修改SC表结构或修改SC表数据的操作进行审计
335 | AUDIT ALTER,UPDATE
336 | ON SC;
337 | [例]取消对SC表的一切审计
338 | NOAUDIT ALTER,UPDATE
339 | ON SC;
340 | ```
341 |
342 |
343 |
344 | # 4.5 数据加密[^2]
345 |
346 | - 数据加密
347 | 防止数据库中数据在存储和传输中失密的有效手段
348 |
349 | - 存储加密
350 | - 传输加密(SSL)
351 |
352 | - 加密的基本思想
353 |
354 |
355 | 明文变密文,窃取者即使非法获取,不知道解密方式也无法使用
356 |
357 | - 加密增加了查询处理的复杂性,查询效率会受影响。
358 |
359 | # 4.6 统计数据库安全性
360 |
361 | - 统计数据库
362 | - 允许用户查询聚集类型的信息(如合计、平均值等)
363 | - 不允许查询单个记录信息
364 | - 统计数据库中特殊的安全性问题
365 | - 隐蔽信道:存在隐蔽的信息通道,可以通过这个通道做到不合法的信息流动,见第五版P153的例子。
366 | - 推理控制:避免用户能从合法的查询中推导出不合法的信息
367 | - 数据隐私
368 | - 数据库安全机制的设计目标:
369 | - 试图破坏安全的人所花费的代价 >> 得到的利益
370 | - 万无一失保证数据库安全是不可能的。
371 |
372 | # 4.7 小结
373 |
374 | 1. 数据的共享日益加强,数据的安全保密越来越重要
375 | 2. DBMS是管理数据的核心,因而其自身必须具有一整套完整而有效的安全性机制
376 | 3. TCSEC和CC
377 | 4. 实现数据库系统安全性的技术和方法
378 | - 存取控制技术
379 | - 视图技术
380 | - 审计技术
381 | 5. 自主存取控制功能
382 | 通过SQL 的GRANT语句和REVOKE语句实现
383 | 6. 角色
384 | - 使用角色来管理数据库权限可以简化授权过程
385 | - CREATE ROLE语句创建角色
386 | - GRANT 语句给角色授权
387 |
388 |
389 |
390 | ---
391 |
392 | [^1]: 其实也就了解一下就行
393 | [^2]: 了解
--------------------------------------------------------------------------------
/数据库系统概论/5_数据库完整性.assets/image-20200228195404843.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/5_数据库完整性.assets/image-20200228195404843.png
--------------------------------------------------------------------------------
/数据库系统概论/5_数据库完整性.md:
--------------------------------------------------------------------------------
1 | [TOC]
2 |
3 | ---
4 |
5 | 数据库的完整性
6 |
7 | - 数据的==正确性和相容性==
8 | - 防止数据库中存在**不符合语义**的数据,也就是防止数据库中存在**不正确的**数据
9 |
10 | 为维护数据库的完整性,DBMS必须:
11 |
12 | - 提供**定义**完整性约束条件的机制
13 | - 提供完整性**检查的方法**
14 | - **违约处理**
15 |
16 |
17 |
18 | ---
19 |
20 | # 5.1 实体完整性
21 |
22 | - 关系模型的实体完整性
23 | `CREATE TABLE`中用`PRIMARY KEY`定义主码
24 | - 单属性构成的码有两种说明方法
25 | - 定义为列级约束条件,即在该列后面直接写 Primary Key来定义
26 | - 定义为表级约束条件,在表定义的最后写 Primary Key(码)来定义
27 | - 对多个属性构成的码只有一种说明方法
28 |
29 | - 定义为**表级约束条件** [^1]
30 | - 插入或对主码列进行更新操作时,RDBMS按照==实体完整性规则==自动进行检查。包括:
31 | - 检查主码**值是否唯一**,如果不唯一则拒绝插入或修改
32 | - 检查主码的各个属性**是否为空**,只要有一个为空就拒绝插入或修改
33 | - 检查记录中**主码值是否唯一**的一种方法是进行**全表扫描**
34 |
35 | > 显然全表扫描耗时长,所以为了避免对基本表进行全表扫描,关系数据库的DBMS一般都会在主码上自动建立一个索引(一般是B+树)
36 |
37 | # 5.2 参照完整性
38 |
39 | 关系模型的参照完整性定义
40 |
41 | - 在`CREATE TABLE`中用`FOREIGN KEY`短语定义哪些列为外码
42 | - 用`REFERENCES`短语指明这些外码参照哪些表的主码
43 |
44 | ```sql
45 | Creat table sc
46 | (
47 | Sno Char(9) not null
48 | Cno char(4) not null
49 | grade smallint
50 | primary key(Sno,Cno)
51 | foreign key(Sno) references Student(Sno)
52 | on delete cascade //删除Student表中的元组时,级联删除SC中相应的元组。
53 | on updata no action//更新Student表中的元组造成不一致时,拒绝更新。这都是跟在foreign key后面的。
54 | foreign key(Cno) references Course(Cno)
55 | )
56 | //注意主码内的属性也可以是外码的。
57 | //外码的定义只能在表级上么?应该是的吧
58 | ```
59 |
60 |
61 |
62 | > 设置为空值是因为外码可以为空。这个在讲外码的时候提到过。
63 | >
64 | > 违约处理中,拒绝执行是默认操作。
65 | >
66 | > 另外,设空值这个操作不一定能执行。比如上面那个例子,主码中有外码,若设SC的一个外码为空值,那么主码不为空就不满足了。
67 |
68 | # 5.3 用户定义的完整性
69 |
70 | > 相当于用户要求的。
71 |
72 | - 用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求
73 | - DBMS提供说明完整性接口并保证,而不必由应用程序承担
74 | - 属性上的约束:在CREATE TABLE时定义
75 | - 列值非空(NOT NULL)
76 | - 列值唯一(UNIQUE)
77 | - 检查列值**是否满足一个布尔表达式**(CHECK)例如下例
78 | - 元组上的约束
79 | - 在CREATE TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制
80 | - 同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件
81 |
82 | ```sql
83 | [例] 创建学生表
84 | CREATE TABLE Student
85 | (Sno CHAR(9) PRIMARY KEY,
86 | Sname CHAR(8) NOT NULL,
87 | Ssex CHAR(2),
88 | Sage SMALLINT CHECK(Sage<40) , /*列级约束*/
89 | Sdept CHAR(20),
90 | CHECK (Ssex='女' OR Sname NOT LIKE 'Ms.%')); /*bool表达式 ,表级约束*/
91 |
92 | /*性别是女性的元组都能通过该项检查,因为Ssex=‘女’成立;
93 | 当性别是男性时,要通过检查则名字一定不能以Ms.打头(Ms意味着女性)
94 | 学号为主码,姓名不能为空,年龄小于40
95 | 插入元组或修改属性的值时,RDBMS检查元组和属性上的约束条件是否被满足,不满足则拒绝执行*/
96 | ```
97 |
98 |
99 |
100 | # 5.4 完整性约束命名子句[^1]
101 |
102 | - 问题 在一张表上可以**定义多个完整性约束**,为方便起见,可用`CONSTRAINT`语句对所定义的约束条件命名
103 |
104 | - 注意,这个`CONSTRAINT`==只能用在Create Table 语句内。==
105 |
106 | - CONSTRAINT 约束命名子句
107 |
108 | ```sql
109 | CONSTRAINT <完整性约束条件名>
110 | [PRIMARY KEY短语
111 | |FOREIGN KEY短语
112 | |CHECK短语]
113 | ```
114 |
115 | 它这样就比较好批量添加和删除一些完整性约束。
116 |
117 | ```sql
118 | [例] 建立学生登记表Student,要求学号在90000~99999之间,姓名不能取空值,年龄小于30,性别只能是“男”或“女”。
119 | CREATE TABLE Student
120 | (Sno NUMERIC(6)
121 | CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999),
122 | Sname CHAR(20)
123 | CONSTRAINT C2 NOT NULL,
124 | Sage NUMERIC(3)
125 | CONSTRAINT C3 CHECK (Sage < 30),
126 | Ssex CHAR(2)
127 | CONSTRAINT C4 CHECK (Ssex IN ( '男','女')),
128 | CONSTRAINT StudentKey PRIMARY KEY(Sno)
129 | );
130 | 在Student表上建立了5个约束条件,包括主码约束(命名StudentKey)
131 | 以及C1、C2、C3、C4四个列级约束。这样命名了之后就好操作。
132 |
133 | 对约束命名后,可以只用约束名进行操作
134 |
135 | [例] 修改表Student中的约束条件,要求学号改为在900000~999999之间,年龄由小于30改为小于40先删除原来的约束条件,再增加新的约束条件
136 |
137 | ALTER TABLE Student
138 | DROP CONSTRAINT C1;/*直接丢掉,好像没有提供直接修改的,都是Drop了之后再Add*/
139 |
140 | ALTER TABLE Student
141 | ADD CONSTRAINT C1
142 | CHECK(Sno BETWEEN 900000 AND 999999);
143 | //修改约束就直接删掉后重新加
144 | ALTER TABLE Student
145 | DROP CONSTRAINT C3;
146 |
147 | ALTER TABLE Student
148 | ADD CONSTRAINT C3 CHECK (Sage < 40);
149 | ```
150 |
151 | > **修改约束就直接删掉再重新添加**
152 |
153 | # *5.5 域中的完整性限制
154 |
155 | ```sql
156 | Create domain GenderDomain CHAR(2)
157 | check (value in ('男','女'))
158 | ```
159 |
160 | 这种,限制性别的取值只能在男,女中取
161 |
162 | # 5.6 触发器[^3]
163 |
164 | - 触发器(Trigger)
165 | 是用户定义在关系表上的一类由事件驱动的特殊过程
166 | - 由服务器自动激活
167 | - 可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力
168 |
169 | ## 5.6.1 定义触发器
170 |
171 | 用户可以通过CREATE TRIGGER在表上定义触发器
172 |
173 | ```sql
174 | CREATE TRIGGER <触发器名>
175 | { BEFORE | AFTER } <触发事件> ON <表名>
176 | Referencing NEW|OLD ROW AS <变量> /*指出引用的变量,这句话可以不带*/
177 | FOR EACH { ROW | STATEMENT }
178 | [WHEN <触发条件>]<触发动作体> /*当触发条件为真时才执行触发动作提*/
179 | ```
180 |
181 | ### 定义触发器的语法说明:
182 |
183 | - 由表的拥有者在<表名>的表上创建一个名为<触发器名>的触发器
184 | - { **BEFORE | AFTER** }
185 | BEFORE、AFTER说明在表上发生触发事件之前或之后执行触发动作体
186 | - 触发事件是触发事件只能是 INSERT、DELETE、UPDATE 之中的组合或单个。
187 | - 触发器类型
188 | - 行级触发器(FOR EACH **ROW**)
189 | - 语句级触发器(FOR EACH **STATEMENT**)
190 |
191 | > 例如,假设在TEACHER表上创建了一个触发条件为AFTER UPDATE的触发器,假设表TEACHER有1000行。
192 | > 执行如下语句:
193 | > UPDATE TEACHER SET Deptno=5;
194 | > 如果该触发器为**语句级触发器**,那么执行完该语句后,触发动作只发生一次。
195 | > 如果是**行级触发器**,触发动作将执行1000次 ;意思是每一行Deptno都会被修改成5
196 |
197 | ```sql
198 | 例子1:
199 | 定义一个BEFORE行级触发器,为教师表Teacher定义完整性规则“教授的工资不得低于4000元,如果低于4000元,自动改为4000元”。
200 | CREATE TRIGGER Insert_Or_Update_Sal
201 | BEFORE INSERT OR UPDATE ON Teacher
202 | Referencing NEW row AS newTuple /*指出引用的变量 */
203 | FOR EACH ROW /*行级触发器*/
204 | BEGIN /*定义触发动作体,是PL/SQL过程块*/
205 | IF (newTuple.Job='教授') AND (newTuple.Sal < 4000) /*不用'=='这种?Sql里的东西有点奇怪*/
206 | THEN newTuple.Sal :=4000;
207 | END IF;
208 | END;
209 |
210 |
211 | /*上面是第五版的写法,书P171可见。PPT上的写法略有不同,见下面*/
212 |
213 |
214 | CREATE TRIGGER Insert_Or_Update_Sal
215 | BEFORE INSERT OR UPDATE ON Teacher
216 | /*这里没有引用变量*/
217 | FOR EACH ROW
218 | AS BEGIN /*多了个AS,应该是不必要的*/
219 | IF (new.Job='教授') AND (new.Sal < 4000)
220 | THEN new.Sal :=4000;
221 | END IF;
222 | END;
223 | ```
224 |
225 | > 总之,可以不看这部分,定义有点麻烦,在试验指导那本书P55可以看到
226 | >
227 | > Referencing NEW|OLD ROW AS <变量>可以不带
228 |
229 | ## 5.6.2 激活触发器
230 |
231 | - 触发器的执行,是由触发事件激活的,并由数据库服务器自动执行
232 | - 一个数据表上可能定义了多个触发器
233 | - 同一个表上的多个触发器激活时遵循如下的执行顺序:
234 | (1) 执行该表上的BEFORE触发器;
235 | (2) 激活触发器的SQL语句;
236 | (3) 执行该表上的AFTER触发器。
237 |
238 | ## 5.6.3 删除触发器
239 |
240 | - 删除触发器的SQL语法:
241 |
242 | ```sql
243 | DROP TRIGGER <触发器名> ON <表名>;
244 | ```
245 |
246 | - 触发器必须是一个已经创建的触发器,并且只能由具有相应权限的用户删除。
247 |
248 | ```sql
249 | [例] 删除教师表Teacher上的触发器Insert_Sal
250 | DROP TRIGGER Insert_Sal ON Teacher;
251 | ```
252 |
253 | # 5.7 断言 Assertion[^2]
254 |
255 | 与前面的Constrain的区别:
256 |
257 | - Constrain只能用在Create Table 语句内
258 | - Assertion可以用在Create Table 语句外,可以定义涉及多个表或聚集操作的比较复杂的完整性约束
259 |
260 | ```sql
261 | 语句格式
262 | Creat assertion <断言名>
263 |
264 | 例:限制数据库课程最多60人选修
265 | Creat assertion ass_sc_db_num
266 | check(60>= (select count(*)
267 | from course,sc
268 | where sc.cno=course.cno and course.name='数据库')
269 | )
270 | 例:限制每一门课程最多60人选修
271 | Creat assertion ass_sc_cnum1
272 | check(60>= ALL(select count(*)
273 | from sc//选课表
274 | group by cno)
275 | )
276 |
277 | 删除断言
278 | drop assertion <断言名>
279 | ```
280 |
281 |
282 |
283 | ---
284 |
285 | [^1]: 课后补充习题里有用到
286 | [^2]: 课后补充习题有考这个
287 | [^3]: 我怀疑这个也不是重点,倒是补充习题上有一题。
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303102031591.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303102031591.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303102304308.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303102304308.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303103941204.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303103941204.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303105713716.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303105713716.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303105819377.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303105819377.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303110052574.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303110052574.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303115546857.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303115546857.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303115603014.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303115603014.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303115622809.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303115622809.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303120058771.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303120058771.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303120111825.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303120111825.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303120201277.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303120201277.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303120238728.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303120238728.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303120257592.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303120257592.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303120322679.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303120322679.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303120334317.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303120334317.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303125452046.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303125452046.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303125622849.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303125622849.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303125730303.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303125730303.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303125748593.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303125748593.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303125810353.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303125810353.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303130343005.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303130343005.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303130642825.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303130642825.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303131655930.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303131655930.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303131808594.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303131808594.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303131836419.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303131836419.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303131931924.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303131931924.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303132157538.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303132157538.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303132328076.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303132328076.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303160033547.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303160033547.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303160547702.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303160547702.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303160750336.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303160750336.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303161403053.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303161403053.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303161453018.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303161453018.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303161508966.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303161508966.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200303163142432.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200303163142432.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200314215156922.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200314215156922.png
--------------------------------------------------------------------------------
/数据库系统概论/6_关系数据库理论.assets/image-20200511184434515.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/6_关系数据库理论.assets/image-20200511184434515.png
--------------------------------------------------------------------------------
/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200301100605558.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200301100605558.png
--------------------------------------------------------------------------------
/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200301101827512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200301101827512.png
--------------------------------------------------------------------------------
/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154529587.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154529587.png
--------------------------------------------------------------------------------
/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154539257.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154539257.png
--------------------------------------------------------------------------------
/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154549510.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154549510.png
--------------------------------------------------------------------------------
/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154606925.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154606925.png
--------------------------------------------------------------------------------
/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154619372.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154619372.png
--------------------------------------------------------------------------------
/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154635140.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154635140.png
--------------------------------------------------------------------------------
/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154742198.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/7_关系查询处理和查询优化.assets/image-20200413154742198.png
--------------------------------------------------------------------------------
/数据库系统概论/7_关系查询处理和查询优化.md:
--------------------------------------------------------------------------------
1 | [toc]
2 |
3 | # 1.关系数据库系统的查询处理
4 |
5 | RDBMS查询处理阶段 :
6 | 1、查询分析
7 | 2、查询检查
8 | 3、查询优化
9 | 4、查询执行
10 |
11 | 
12 |
13 | > 数据字典到底是个什么玩意儿?
14 | >
15 | > 数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对[数据流程图](https://baike.baidu.com/item/数据流程图/3073245)中的各个元素做出详细的说明,使用数据字典为简单的建模项目。
16 | >
17 | > 简而言之,**数据字典是描述数据的信息集合,是对系统中使用的所有数据元素的定义的集合。**
18 |
19 | ## 1.1 查询处理步骤 [^1]
20 |
21 | ### (1)查询分析
22 |
23 | - 对查询语句进行扫描、词法分析和语法分析
24 | - 从查询语句中识别出语言符号,如SQL关键字、属性名和关系名等;
25 | - 进行语法检查和语法分析 ,判断查询语句是否符合SQL语法规则
26 |
27 | ### (2)查询检查
28 |
29 | - **根据数据字典对合法的查询语句进行语义检查** ,即检查语句中的数据库对象,如属性名、关系名是否存在和有效;
30 | - 根据数据字典中的用户权限和完整性约束定义对用户的**存取权限**进行检查 ,若用户没有相应的访问权限或者违反了完整性约束条件,则拒绝执行;
31 | - 检查通过后,把SQL查询语句转换成等价的关系代数表达式 ,RDBMS一般都用**查询树**[^5]\(语法分析树)来表示扩展的关系代数表达式
32 | - 这个过程要把数据库对象的外部名称**转换为内部表示**
33 |
34 | ### (3)查询优化
35 |
36 | - 查询优化:**选择一个高效执行的查询处理策略**
37 | - 查询优化分类 :
38 | - 代数优化:指**关系代数表达式的优化**
39 | - 物理优化:指**存取路径和底层操作算法的选择**
40 | - 查询优化方法选择的依据:
41 | - 基于规则(rule based)
42 | - 基于代价(cost based)
43 | - 基于语义(semantic based)
44 |
45 | ## 1.2 实现查询操作的算法示例
46 |
47 | 这部分可以见软件学院数据库PPT,第七讲-关系查询处理与查询优化
48 | 或者见第三版书P159,第五版书P277
49 |
50 | ### (1)选择操作的实现
51 |
52 | #### 简单的全表扫描方法
53 |
54 | - 对查询的基本表顺序扫描,逐一检查每个元组是否满足选择条件,把满足条件的元组作为结果输出
55 | - **适合小表,不适合大表**
56 |
57 | #### 索引(或散列)扫描方法
58 |
59 | - 适合选择条件中的属性上有索引(例如B+树索引或Hash索引)
60 | - 通过索引先找到满足条件的**元组主码或元组指针**,再通过元组指针直接在查询的基本表中找到元组
61 |
62 | ### (2)连接操作的实现
63 |
64 | #### 嵌套循环方法(nested loop)
65 |
66 | ==最简单可行的算法==
67 |
68 | - 对外层循环(Student)的每一个元组(s),检索内层循环(SC)中的每一个元组(sc)
69 | - 检查这两个元组在连接属性(sno)上是否相等
70 | - 如果满足连接条件,则串接后作为结果输出,直到外层循环表中的元组处理完为止
71 |
72 | #### 排序-合并方法(sort-merge join)
73 |
74 | ==常用的算法==
75 |
76 | - 适合连接的诸表**已经排好序**的情况
77 | - 排序-合并连接方法的步骤:
78 | - 如果连接的表没有排好序,先对Student表和SC表按连接属性Sno排序
79 | - 取Student表中第一个Sno,依次扫描SC表中具有相同Sno的元组
80 | - 当扫描到Sno不相同的第一个SC元组时,返回Student表扫描它的下一个元组,再扫描SC表中具有相同Sno的元组,把它们连接起来
81 | - 重复上述步骤直到Student 表扫描完
82 |
83 | #### 索引连接(index join)方法
84 |
85 | ① 如果原来没有该索引,在SC表上建立属性Sno的索引
86 | ② 对Student中每一个元组,由Sno值通过SC的索引查找相应的SC元组
87 | ③ 把这些SC元组和Student元组连接起来,循环执行② ③,直到Student表中的元组处理完为止
88 |
89 | #### hash join算法
90 |
91 | 把连接的属性作为hash的码,用同一个函数把student,sc表中的元组散列到hash表中。
92 |
93 | 1. 划分阶段——又称创建阶段,创建hash表,对包含较少元组的表(如student表)进行一遍处理,把它的元组按hash函数分散到hash表的桶中。
94 | 2. 试探阶段——又称连接阶段,对另一个表(SC表)进行一遍处理,把SC表的元组按同一个hash函数散列,找到适当的桶,并把SC元组与来自Student元组表与之相匹配的元组连接起来。
95 |
96 | # 2.关系数据库系统的查询优化
97 |
98 | 可分为代数优化和物理优化。
99 |
100 | **关系查询优化是影响关系数据库管理系统性能的关键因素**
101 |
102 | ## 2.1 查询优化概述
103 |
104 | > 它减轻了用户选择存取路径的负担,用户只需要提出“干什么”,而不必指出“怎么干”
105 |
106 | 查询优化的优点不仅在于**用户不必考虑如何最好表达查询以获得较高的效率**,而且在于**系统可以比用户程序“优化”做的更好**,原因:
107 |
108 | 1. 优化器可以从数据字典中获得许多统计信息,从而选择高效的执行计划,用户程序难以获得这些信息
109 | 2. 若数据库的物理统计信息改变,系统可以自动对查询进行重新优化以选择相适应的执行计划
110 | 3. 优化器可以考虑几百种不同的执行方案,程序员不行
111 | 4. 优化器中集成了许多复杂的优化技术。
112 |
113 | ---
114 |
115 | - 在集中式数据库中,查询执行开销包括:
116 | 总代价=I/O代价+CPU代价+内存代价
117 | - 在分布式数据库中
118 | 总代价=I/O代价+CPU代价+内存代价+通信代价
119 |
120 | 查询优化的**总目标**:
121 |
122 | - 选择有效的策略。
123 | - 求得给定关系表达式的值。
124 | - 使得查询代价最小(实际上是==较小==)
125 |
126 | ## 2.2 查询优化的一个实例[^2]
127 |
128 | 第五版书P280 ,就是对同一个查询给了三种不同的代数查询方式,对比优劣。
129 |
130 |
131 |
132 | ## 2.3 查询优化的==四个步骤==[^3]
133 |
134 | 1. 将查询优化转换成某种内部表示,通常是语法树
135 | 2. 根据一定的**等价变换规则**,把语法树转换成标志(优化)形式
136 | 3. 选择低层的操作算法
137 | 4. 生成查询计划
138 |
139 | 步骤3,4有时是作为一个步骤处理的。
140 |
141 | ## 2.4 查询优化的一般准则
142 |
143 | 又叫==查询树的启发式优化==,可见第五版书P284
144 |
145 | 1. ==选择运算应尽可能先做==,可使执行时间降低几个数量级。
146 | 2. 执行连接前对关系做适当的预处理
147 | - 索引连接法
148 | - 排序合并连接法
149 | 3. 把**投影运算和选择运算同时进行**
150 | 避免重复扫描
151 | 4. 把**投影同其前或其后的双目运算结合起来**
152 | 没有必要为了去掉某些列又扫描一遍。
153 | 5. 把某些选择同它前面要执行的笛卡尔积结合起来成为一个连接运算[^4]
154 | 连接,尤其是等值连接,比笛卡尔积省很多时间
155 | 6. 找出**公共子表达式**,可以先计算一次公共子表达式,并把结果写入中间文件。
156 |
157 |
158 |
159 | # 3.代数优化
160 |
161 | > 详细的变换规则,见PPT或书P163
162 |
163 | ## 3.1 关系代数表达式等价变换规则
164 |
165 | 代数优化策略:通过对关系代数表达式的等价变换来提高查询效率
166 |
167 | 关系代数表达式的等价:指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的
168 |
169 | 两个关系表达式E1和E2是等价的,可记为E1≡E2
170 |
171 | 
172 |
173 | 
174 |
175 | 
176 |
177 | 
178 |
179 | 
180 |
181 | ## 3.2 查询树的启发式优化
182 |
183 | 1. ==选择运算应尽可能先做==,可使执行时间降低几个数量级。
184 | 2. 执行连接前对关系做适当的预处理
185 | - 索引连接法
186 | - 排序合并连接法
187 | 3. 把**投影运算和选择运算同时进行**
188 | 避免重复扫描
189 | 4. 把**投影同其前或其后的双目运算结合起来**
190 | 没有必要为了去掉某些列又扫描一遍。
191 | 5. 把某些选择同它前面要执行的笛卡尔积结合起来成为一个连接运算[^4]
192 | 连接,尤其是等值连接,比笛卡尔积省很多时间。
193 | 6. 找出**公共子表达式**,可以先计算一次公共子表达式,并把结果写入中间文件。
194 |
195 | ---
196 |
197 | 遵循这些启发式规则,应用等价变换公式来优化关系表达式的算法。
198 |
199 | 【算法】关系表达式的优化
200 | 【输入】一个关系表达式的查询树
201 | 【输出】优化的查询树
202 | 【方法】
203 | 1)利用等价变换规则4把形如σF1∧F2∧…∧Fn(E)变换为
204 | σF1(σF2(…(σFn( E ) )…) )。
205 | 2)对每一个选择,利用等价变换规则4~9尽可能把它移到树的叶端。
206 |
207 | 3 )对每一个投影利用等价变换规则3,5,10,11中的一般形式尽可能把它移向树的叶端。
208 |
209 | > 注意:
210 | > 等价变换规则3使一些投影消失
211 | > 规则5把一个投影分裂为两个,其中一个有可能被移向树的叶端
212 |
213 | 4 )利用等价变换规则3 ~ 5 把选择和投影的串接合并成单个选择、单个投影或一 个选择后跟一个投影。使多个选择或投影能同时执行,或在一次扫描中全部完成
214 |
215 | 
216 |
217 | # 4.物理优化
218 |
219 | 第三版书上没有,第五版P286
220 |
221 | - 代数优化改变查询语句中操作的次序和组合,**不涉及底层的存取路径**
222 | - 对于一个查询语句有许多存取方案,它们的执行效率不同, 仅仅进行代数优化是不够的
223 | - 物理优化就是要选择高效合理的操作算法或存取路径,求得优化的查询计划
224 |
225 | ## 选择的方法:
226 |
227 | - 基于规则的启发式优化
228 |
229 | 启发式规则是指:大多数情况下都适用,但不一定最好的规则。
230 |
231 | - 基于代价估算的优化
232 |
233 | 用**优化器估算**,算出最小代价
234 |
235 | - 两者结合的优化方法
236 |
237 | 查询优化器通常上述两个方法一起用。因为策略非常多,所以先用启发式优化,选较优的候选方案,再分别计算代价,选出最优的方案
238 |
239 | ## 4.1基于启发式规则的存取路径选择优化
240 |
241 | ### 选择操作的启发式规则
242 |
243 | 1. 对于小关系,使用全表顺序扫描,即使选择列上有索引 。
244 |
245 | 2. 对于选择条件是 "主码=值" 的查询
246 |
247 | - **查询结果最多是一个元组,可以选择主码索引**
248 | - 一般的DBMS会自动建立主码索引。
249 |
250 | 3. 对于选择条件是 "非主属性=值" 的查询,并且选择列上有索引
251 | 要估算查询结果的元组数目
252 |
253 | - 如果**比例较小**(<10%)可以使用索引扫描方法
254 | - 否则还是使用全表顺序扫描
255 |
256 | 4. 对于选择条件是属性上的非等值查询或者范围查询,并且选择列上有索引
257 | 要估算查询结果的元组数目
258 |
259 | - 如果**比例较小**(<10%)可以使用索引扫描方法
260 | - 否则还是使用全表顺序扫描
261 |
262 | 5. 对于用AND连接的合取选择条件
263 |
264 | - 如果有涉及这些属性的**组合索引**
265 | - 优先采用**组合索引扫描方法**
266 | - 如果某些属性上有**一般的索引**
267 | - 则可以用**索引扫描方法**
268 | - 都没有,用全表顺序扫描。
269 |
270 | 6. 对于用OR连接的析取选择条件,一般使用**全表顺序扫描**
271 |
272 | > 总的来说,数据量小就用索引,数据量大就全表扫描。
273 |
274 | ### 连接操作的启发式规则
275 |
276 | 1. 如果两个表都已经按照连接属性排序
277 | 选用**排序-合并**方法
278 | 2. 如果一个表在连接属性上有索引
279 | 选用**索引连接**方法
280 | 3. 如果上面两个规则都不适用,**其中一个表较小**
281 | 选用**Hash join**方法
282 | 4. 最后可以选用嵌套循环方法,并选择其中较小的表,确切地讲是占用的块数(b)较少的表,作为外表(外循环的表) 。
283 |
284 | > 怎么看我都觉得第四个方法用不到吧。。
285 |
286 | ## 4.2 基于代价的优化
287 |
288 | 1. 启发式规则优化是定性的选择,比较粗糙,适合==解释执行的系统==
289 | 解释执行的系统,**优化开销包含在查询总开销之中**
290 | 2. ==编译执行的系统==中查询优化和查询执行是分开的,**一次编译优化,多次执行**。
291 | 可以采用精细复杂一些的**基于代价**的优化方法
292 |
293 | ### 一、 统计信息
294 |
295 | 基于代价的优化方法要计算各种操作算法的执行代价,与数据库的状态密切相关
296 | 数据字典中存储的优化器需要的统计信息:
297 |
298 | 1. 对每个基本表
299 | - 该表的元组总数(N)
300 | - 元组长度(l)
301 | - 占用的块数(B)
302 | - 占用的溢出块数(BO)
303 | 2. 对基表的每个列
304 | - 该列不同值的个数(m)
305 | - 选择率(f)
306 | - 如果不同值的分布是均匀的,f=1/m
307 | - 如果不同值的分布不均匀,则每个值的选择率=具有该值的元组数/N
308 | - 该列最大值
309 | - 该列最小值
310 | - 该列上是否已经建立了索引
311 | - 索引类型(B+树索引、Hash索引、聚集索引)
312 | 3. 对索引(如B+树索引)
313 | - 索引的层数(L)
314 | - 不同索引值的个数
315 | - 索引的选择基数S(有S个元组具有某个索引值)
316 | - 索引的叶结点数(Y)
317 |
318 | ### 二、 代价估算示例
319 |
320 | #### 1)全表扫描算法的代价估算公式
321 |
322 | 如果基本表大小为B块,全表扫描算法的代价 cost=B
323 |
324 | 如果选择条件是码=值,那么平均搜索代价 cost=B/2
325 |
326 | #### 2)索引扫描算法的代价估算公式
327 |
328 | - 如果选择条件是码=值
329 | - 如[例1-C2: Sno=‘201215121’],则采用该表的主索引
330 | - 若为B+树,层数为L,需要存取B+树中从根结点到叶结点L块,再加上基本表中该元组所在的那一块,所以cost=L+1
331 | - 如果选择条件涉及**非码属性**
332 | - 如[例1-C3: Sage>20],若为B+树索引,选择条件是相等比较,S是索引的选择基数(有S个元组满足条件)
333 | - 最坏的情况下,满足条件的元组可能会保存在不同的块上,此时,cost=L+S
334 | - 如果比较条件是>,>=,<,<=操作
335 | - 假设有一半的元组满足条件就要存取一半的叶结点
336 | - 通过索引访问一半的表存储块cost=L+Y/2+B/2
337 | - 如果可以获得更准确的选择基数,可以进一步修正Y/2与B/2
338 |
339 | #### 3)嵌套循环连接算法的代价估算公式
340 |
341 | 已经讨论过了嵌套循环连接算法的代价 `cost=Br+Bs/(K-1) Br`
342 |
343 | 如果需要把连接结果写回磁盘,
344 | `cost=Br+Bs/(K-1) Br +(Frs*Nr*Ns)/Mrs`
345 |
346 | - 其中Frs为连接选择性(join selectivity),表示连接结果元组数的比例
347 | - Mrs是存放连接结果的块因子,表示每块中可以存放的结果元组数目。
348 |
349 | #### 4)排序-合并连接算法的代价估算公式
350 |
351 | - 如果连接表已经按照连接属性排好序,则`cost=Br+Bs+(Frs*Nr*Ns)/Mrs`
352 | - 如果必须对文件排序
353 | - 需要在代价函数中加上排序的代价
354 | - 对于包含B个块的文件排序的代价大约是 ` (2*B)+(2*B*log2B)`
355 |
356 | ---
357 |
358 | # 小结
359 |
360 | 1. 查询处理是RDBMS的核心,查询优化技术是查询处理的关键技术
361 | 2. 本章讲解的优化方法
362 | - **启发式代数优化**(代数优化)
363 | - 基于启发式规则规则的**存取路径优化**(物理优化)
364 | - **基于代价的优化**(物理优化)
365 | 3. 本章的目的:希望读者掌握查询优化方法的概念和技术
366 | 4. 比较复杂的查询,尤其是涉及连接和嵌套的查询
367 | - 不要把优化的任务全部放在RDBMS上
368 | - 应该找出RDBMS的优化规律,以写出适合RDBMS自动优化的SQL语句 (比如?)
369 | 5. 对于RDBMS不能优化的查询需要重写查询语句,进行手工调整以优化性能
370 |
371 | ---
372 |
373 | [^1]: 这一节第三版的书上都没有,直接就是查询优化。第五版的书上才有,了解一下即可。
374 | [^2]: 见书的P159,这里就不说明了
375 | [^3]: 这部分在第三版书的P158。第五版书P280 。了解一下
376 | [^4]: 这部分见书P159 ,4.2.2中的实例
377 |
378 | [^5]: 查询树及其优化可能会考。
--------------------------------------------------------------------------------
/数据库系统概论/8_数据库恢复技术.assets/TIM图片20200508105352 (2).jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/8_数据库恢复技术.assets/TIM图片20200508105352 (2).jpg
--------------------------------------------------------------------------------
/数据库系统概论/8_数据库恢复技术.assets/TIM图片20200508105352.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/8_数据库恢复技术.assets/TIM图片20200508105352.jpg
--------------------------------------------------------------------------------
/数据库系统概论/8_数据库恢复技术.assets/image-20200511210142567.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/8_数据库恢复技术.assets/image-20200511210142567.png
--------------------------------------------------------------------------------
/数据库系统概论/9_并发控制.assets/image-20200508232827767.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/9_并发控制.assets/image-20200508232827767.png
--------------------------------------------------------------------------------
/数据库系统概论/9_并发控制.assets/image-20200508233642231.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/9_并发控制.assets/image-20200508233642231.png
--------------------------------------------------------------------------------
/数据库系统概论/9_并发控制.assets/image-20200508233652340.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/9_并发控制.assets/image-20200508233652340.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/20190327132121468.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/20190327132121468.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224112001917.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224112001917.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224113135321.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224113135321.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224113527243.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224113527243.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224114730644.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224114730644.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224114923171.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224114923171.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224115522436.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224115522436.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224133720032.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224133720032.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224134640075.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224134640075.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224144419872.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224144419872.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224171821014-1616481687482.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224171821014-1616481687482.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224171821014.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224171821014.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224174943402.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224174943402.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224180304842.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224180304842.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224180316306.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224180316306.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224181243457.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224181243457.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200224181645172.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200224181645172.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200301100605558.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200301100605558.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200411232302789.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200411232302789.png
--------------------------------------------------------------------------------
/数据库系统概论/Picture/image-20200510100647230.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/Picture/image-20200510100647230.png
--------------------------------------------------------------------------------
/数据库系统概论/实验题.md:
--------------------------------------------------------------------------------
1 | 数据库第一次实验
2 |
3 | ```sql
4 | //创建表film
5 | create table FILM (
6 | FID int,
7 | FNAME char(30),
8 | FTYPE char(10),
9 | DNAME char(30),
10 | length int,
11 | IS3D char(1),
12 | GRADE int,
13 | PRIMARY KEY(FID),
14 | check( (GRADE BETWEEN 0 AND 100) or (GRADE is NULL))
15 | );
16 |
17 | //创建表actor
18 | create table ACTOR(ACTID int, ANAME char(30), SEX char(2), BYEAR int, PRIMARY KEY(ACTID));
19 |
20 | //创建表actin
21 | CREATE TABLE ACTIN(ACTID int, FID int, ISLEADING char(1), GRADE int,
22 | FOREIGN key(ACTID) REFERENCES ACTOR(ACTID),
23 | FOREIGN KEY(FID) REFERENCES FILM(FID),
24 | check (ISLEADING = 'Y' or ISLEADING = 'N' or ISLEADING is NULL),
25 | check ( (GRADE >= 0 AND GRADE <= 100 ) OR GRADE is NULL)
26 | );
27 |
28 | //创建表theater
29 | CREATE TABLE THEATER(TID int, TNAME char(20), TAREA char(20), ADDRESS char(30),
30 | PRIMARY KEY (TID)
31 | );
32 |
33 | //创建表show
34 | CREATE TABLE SHOW_T(FID int, TID int, PRICE int, YEAR int , MONTH int,
35 | FOREIGN KEY(FID) REFERENCES FILM(FID),
36 | FOREIGN KEY(TID) REFERENCES THEATER(TID)
37 | );
38 |
39 | 1)查询“后来的我们”这部电影在洪山区各家影院的2017年的上映情况,并按照上映月份的降序排列;
40 | SELECT *
41 | FROM SHOW_T
42 | WHERE SHOW_T.`YEAR` = 2017 AND SHOW_T.FID = ANY(
43 | SELECT FID
44 | FROM FILM
45 | WHERE FILM.FNAME = '后来的我们')
46 | AND SHOW_T.TID = ANY(
47 | SELECT TID
48 | FROM THEATER
49 | WHERE THEATER.TAREA = '洪山区')
50 | ORDER BY SHOW_T.`MONTH` ASC;
51 |
52 | 2)查询所有没有参演演员信息的电影的基本信息;
53 | SELECT *
54 | FROM FILM
55 | WHERE FILM.FID NOT IN(
56 | SELECT FID
57 | FROM ACTIN
58 | GROUP BY ACTIN.FID
59 | HAVING COUNT(DISTINCT ACTID)>0);
60 |
61 | 3)查询所有用户评分低于80分或者高于89分的电影编号、电影名称、导演姓名及其用户评分,要求where子句中只能有一个条件表达式;
62 | SELECT FID,FNAME,DNAME,GRADE
63 | FROM FILM
64 | WHERE GRADE BETWEEN 80 AND 89;WHFWHWTSH
65 |
66 | 4)查询执导过动作片或惊悚片的导演的姓名,要求where子句中只能有一个条件表达式;
67 | SELECT DNAME
68 | FROM FILM
69 | WHERE FILM.FTYPE = '惊悚'
70 | UNION
71 | SELECT DNAME
72 | FROM FILM
73 | WHERE FILM.FTYPE = '动作';
74 |
75 | 5)查询所有“巴霍巴利王”系列的电影的编号、电影名称、上映电影院名称及其上映年月;
76 | SELECT FILM.FID,FNAME,TNAME,YEAR,MONTH
77 | FROM (FILM JOIN SHOW_T ON FILM.FID = SHOW_T.FID) JOIN THEATER ON SHOW_T.TID = THEATER.TID
78 | WHERE FILM.FNAME LIKE "巴霍巴利王%";
79 |
80 | 6)查询每部电影的上映总次数;
81 | SELECT FID,COUNT(FID)
82 | FROM SHOW_T
83 | GROUP BY FID
84 | ORDER BY COUNT(FID);
85 |
86 | 7)查询每个演员担任主角的电影中的平均用户评分;
87 | SELECT ACTID,AVG(GRADE)
88 | FROM ACTIN
89 | WHERE ISLEADING = 'Y'
90 | GROUP BY ACTID;
91 |
92 | 8)查询每个导演所执导的全部影片的最低和最高用户评分;
93 | SELECT DNAME,MIN(GRADE),MAX(GRADE)
94 | FROM FILM
95 | GROUP BY DNAME;
96 |
97 | 9)查询至少执导过2部电影的导演及其执导电影的数量;
98 | SELECT DNAME,COUNT(*)
99 | FROM FILM
100 | GROUP BY DNAME
101 | HAVING COUNT(*) >=2;
102 |
103 | 10)查询至少有2部电影的用户评分超过80分的导演姓名及其执导过的影片数量、平均用户评分;
104 | SELECT DNAME,COUNT(*),AVG(GRADE)
105 | FROM FILM
106 | WHERE GRADE > 80
107 | GROUP BY DNAME
108 | HAVING COUNT(*) >=2;
109 |
110 | 11)查询至少执导过2部电影的导演以及跟这些导演合作过的演员的编号及姓名;
111 | SELECT ACTOR.ACTID, ACTOR.ANAME
112 | FROM ACTIN JOIN ACTOR ON ACTIN.ACTID = ACTOR.ACTID
113 | WHERE FID IN
114 | (SELECT FID
115 | FROM FILM
116 | WHERE DNAME IN
117 | (SELECT DNAME
118 | FROM FILM
119 | GROUP BY FILM.DNAME
120 | HAVING COUNT(*) >=2)
121 | );
122 |
123 | 12)查询所有直到2017年仍未上映的电影编号、电影名称、导演姓名;
124 | SELECT DISTINCT A.FID, A.FNAME, A.DNAME
125 | FROM FILM A JOIN SHOW_T ON A.FID = SHOW_T.FID
126 | WHERE SHOW_T.`YEAR` > 2017;
127 |
128 | 13)查询在各家电影院均上映过的电影编号;
129 | SELECT FID
130 | FROM FILM
131 | WHERE NOT EXISTS
132 | (
133 | SELECT *
134 | FROM THEATER
135 | WHERE NOT EXISTS
136 | (
137 | SELECT *
138 | FROM SHOW_T
139 | WHERE THEATER.TID = SHOW_T.TID AND FILM.FID = SHOW_T.FID
140 | )
141 | );
142 |
143 | 14)查询用户评分超过90分的电影的最早上映年月及相应的上映影院编号;
144 | SELECT TID
145 | FROM SHOW_T,
146 | (SELECT SHOW_T.FID,SHOW_T.`YEAR`,MIN(SHOW_T.`MONTH`)
147 | FROM SHOW_T,(SELECT SHOW_T.FID,MIN(SHOW_T.`YEAR`)
148 | FROM SHOW_T join FILM ON SHOW_T.FID = FILM.FID
149 | WHERE FILM.GRADE > 90
150 | GROUP BY FID)
151 | AS TB(fid,y)
152 | WHERE SHOW_T.FID = TB.fid AND SHOW_T.`YEAR`= TB.y
153 | GROUP BY FID,`YEAR`) as tb2(fid2,year2,month2)
154 | WHERE SHOW_T.FID = tb2.fid2 and SHOW_T.`YEAR` = tb2.year2 and SHOW_T.`MONTH` = tb2.month2;
155 |
156 | 15)查询在同一年月上映过‘30187395’号和‘26942631’号电影的影院编号;
157 | SELECT TID,SHOW_T.`YEAR`,SHOW_T.`MONTH`
158 | from SHOW_T
159 | where FID = 30187395
160 | INTERSECT
161 | SELECT TID,SHOW_T.`YEAR`,SHOW_T.`MONTH`
162 | FROM SHOW_T
163 | WHERE FID = 26942631;
164 |
165 | 16)查询所有从未参演过用户评分85分以下电影的演员的编号、姓名;
166 | SELECT ACTOR.ACTID,ACTOR.ANAME
167 | FROM ACTIN JOIN ACTOR ON ACTIN.ACTID = ACTOR.ACTID
168 | WHERE NOT EXISTS
169 | (SELECT *
170 | FROM FILM
171 | WHERE GRADE < 85 AND ACTIN.FID = FID);
172 |
173 | 17)查询所有的演员的编号、姓名及其参演过的电影名称,要求即使该演员未参演过任何电影也要能够输出其编号、姓名;
174 | SELECT ACTOR.ACTID, ACTOR.ANAME, FNAME
175 | FROM (ACTOR JOIN ACTIN ON ACTOR.ACTID = ACTIN.ACTID) JOIN FILM ON ACTIN.FID = FILM.FID
176 | ORDER BY ACTOR.ACTID;
177 |
178 | 18)查询所有上映超过3次但没有用户评分的电影编号、名称。
179 | SELECT FID, FNAME
180 | FROM FILM
181 | WHERE GRADE IS NULL AND FID IN (
182 | SELECT FID
183 | FROM SHOW_T
184 | GROUP BY FID
185 | HAVING COUNT(*) > 3);
186 | ```
187 |
188 |
189 |
190 |
--------------------------------------------------------------------------------
/数据库系统概论/往年真题.assets/IMG_20200510_103422.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/往年真题.assets/IMG_20200510_103422.jpg
--------------------------------------------------------------------------------
/数据库系统概论/往年真题.assets/IMG_20200510_103426.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/往年真题.assets/IMG_20200510_103426.jpg
--------------------------------------------------------------------------------
/数据库系统概论/往年真题.assets/IMG_20200510_103611.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/往年真题.assets/IMG_20200510_103611.jpg
--------------------------------------------------------------------------------
/数据库系统概论/往年真题.assets/image-20200301100605558.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/往年真题.assets/image-20200301100605558.png
--------------------------------------------------------------------------------
/数据库系统概论/往年真题.assets/image-20200411232302789.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/往年真题.assets/image-20200411232302789.png
--------------------------------------------------------------------------------
/数据库系统概论/往年真题.assets/image-20200510100647230.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/往年真题.assets/image-20200510100647230.png
--------------------------------------------------------------------------------
/数据库系统概论/往年真题.assets/image-20200511210133356.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/往年真题.assets/image-20200511210133356.png
--------------------------------------------------------------------------------
/数据库系统概论/课后题/10 数据库恢复技术.md:
--------------------------------------------------------------------------------
1 | 第10章 数据库恢复技术
2 |
3 | [toc]
4 |
5 | ### 1.试述事务的概念及事务的4 个特性。
6 |
7 | 答:
8 |
9 | 事务是用户定义的一个数据库操作序列,这些操作==要么全做要么全不做==,是一个不可分割的工作单位。
10 | 事务具有4 个特性:原子性(Atomicity )、一致性(consistency )、隔离性( Isolation )和持续性(Durability )。这4 个特性也简称为ACID 特性。
11 |
12 | - 原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
13 | - 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
14 | - 隔离性:一个事务的执行**不能被其他事务干扰**。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
15 | - 持续性:持续性也称**永久性**,指一个事务一旦提交,它**对数据库中数据的改变就应该是永久性的**。接下来的其他操作或故障不应该对其执行结果有任何影响。
16 |
17 |
18 |
19 | ### 2 .为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之。
20 |
21 | 答:
22 |
23 | 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是**不一致的状态**。
24 | 例如某工厂的库存管理系统中,要把数量为Q 的某种零件从仓库1 移到仓库2 存放。
25 | 则可以定义一个事务T , T 包括两个操作;Q1= Q1 一Q , Q2= Q2 + Q。 如果T 非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q 。
26 |
27 |
28 |
29 | ### 3 .数据库中为什么要有恢复子系统?它的功能是什么?
30 |
31 | 答:
32 |
33 | 因为计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏是==不可避免的==,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失,因此必须要有恢复子系统。
34 | 恢复子系统的功能是:把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)。
35 |
36 |
37 |
38 | ### 4 .数据库运行中可能产生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库数据?
39 |
40 | 答:
41 |
42 | 数据库系统中可能发生各种各样的故障,大致可以分以下几类:
43 |
44 | (1)事务内部的故障;
45 | (2)系统故障;
46 | (3)介质故障;
47 | (4)计算机病毒。
48 | 事务故障、系统故障和介质故障影响事务的正常执行;介质故障和计算机病毒破坏数据库数据。
49 |
50 |
51 |
52 | ### 5 .数据库恢复的基本技术有哪些?
53 |
54 | 答:
55 |
56 | **数据转储**和**登录日志文件**是数据库恢复的基本技术。
57 | 当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。
58 |
59 |
60 |
61 | ### 6 .数据库转储的意义是什么?试比较各种数据转储方法。
62 |
63 | 答:
64 |
65 | 数据转储是数据库恢复中采用的基本技术。所谓转储即DBA 定期地将数据库复制到磁带或另一个磁盘上保存起来的过程。当数据库遭到破坏后可以将后备副本重新装入,将数据库恢复到转储时的状态。
66 |
67 | - 静态转储:在系统中无运行事务时进行的转储操作,静态转储简单,但必须等待正运行的用户事务结束才能进行。同样,新的事务必须等待转储结束才能执行。显然,这会降低数据库的可用性。
68 | - 动态转储:指转储期间允许对数据库进行存取或修改。动态转储可克服静态转储的缺点,它不用等待正在运行的用户事务结束,也不会影响新事务的运行。但是,转储结束时后援副本上的数据并不能保证正确有效。因为转储期间运行的事务可能修改了某些数据,使得后援副本上的数据不是数据库的一致版本。为此,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件.这样,后援副本加上日志文件就能得到数据库某一时刻的正确状态。转储还可以分为海量转储和增量转储两种方式。
69 | - 海量转储是指每次转储全部数据库。
70 | - 增量转储则指每次只转储上一次转储后更新过的数据。从恢复角度看,使用海量转储得到的后备副本进行恢复一般说来更简单些。但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效。
71 |
72 | > 转储和镜像的区别?
73 | >
74 | > 我觉得镜像可以再原数据库损坏或恢复的时候访问,而转储不可以。
75 | > 其他区别就是实现上的区别了吧,但我觉得他们都是在转储啊。。。0809
76 |
77 | ### 7 .什么是日志文件?为什么要设立日志文件?
78 |
79 | 答:
80 |
81 | (1)日志文件是用来记录事务对数据库的更新操作的文件。
82 | (2)设立日志文件的目的是:进行事务故障恢复;进行系统故障恢复;**协助**后备副本进行介质故障恢复。
83 |
84 |
85 |
86 | ### 8 .登记日志文件时为什么必须先写日志文件,后写数据库?
87 |
88 | 答:
89 |
90 | 把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。
91 | 如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时**只不过是多执行一次UNDO 操作**,并不会影响数据库的正确性。所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。
92 |
93 |
94 |
95 | ### 9 .针对不同的故障,试给出恢复的策略和方法。(即如何进行事务故障的恢复?系统故障的恢复?介质故障恢复?)
96 |
97 | 答:
98 |
99 | #### 事务故障的恢复:
100 |
101 | ==只需要反向操作即可==,因为事务故障了显然是未完成的,需要undo。
102 |
103 | 事务故障的恢复是由DBMS执行恢复,步骤是自动完成的,对用户是透明的。
104 |
105 | (1)反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作;
106 | (2)对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库;
107 | (3)继续反向扫描日志文件,做同样处理;
108 | (4)如此处理下去,直至读到此事务的开始标记,该事务故障的恢复就完成了。
109 |
110 |
111 |
112 | #### 系统故障的恢复:
113 |
114 | 系统故障可能会造成数据库处于不一致状态:
115 | 一是未完成事务对数据库的更新可能已写入数据库(需要undo)
116 | 二是已提交事务对数据库的更新可能还留在缓冲区,没来得及写入数据库(需要redo)
117 | 因此恢复操作就是要撤销(UNDO )故障发生时未完成的事务,重做(REDO )已完成的事务。
118 |
119 | 系统的恢复步骤是:
120 |
121 | 1. 正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO 队列)和未完成的事务队列(uNDO 队列)。
122 | 2. 对撤销队列中的各个事务进行UNDO 处理。
123 | 进行UNDO 处理的方法是,反向扫描日志文件,对每个UNDO 事务的更新操作执行逆操作,即将日志记录中“**更新前的值**”写入数据库。
124 | 3. 对重做队列中的各个事务进行REDO 处理。
125 | 进行REDO 处理的方法是:正向扫描日志文件,对每个REDO 事务重新执行日志文件登记的操作。即将日志记录中“**更新后的值**”写入数据库。
126 |
127 | #### 介质故障的恢复:
128 |
129 | 介质故障是最严重的一种故障。
130 | 恢复方法是**重装数据库**,然后重做已完成的事务。具体过程是:
131 |
132 | ( 1 ) DBA 装入最新的数据库后备副本(离故障发生时刻最近的转储副本), 使数据库恢复到转储时的一致性状态;
133 | ( 2 ) DBA 装入转储结束时刻的日志文件副本;
134 | ( 3 ) DBA 启动系统恢复命令,由DBMS 完成恢复功能,即重做已完成的事务。
135 |
136 |
137 |
138 | ### 10 .什么是检查点记录?检查点记录包括哪些内容?
139 |
140 | 答:
141 | 检查点记录是一类**新的日志记录**。它的内容包括:
142 |
143 | ① 建立检查点时刻**所有正在执行的事务清单**
144 |
145 | ② 这些事务的**最近一个日志记录的地址**。
146 |
147 | > 检查点之前提交的就不用REDO。恢复只需要恢复检查点之后的。
148 |
149 | ### 11 .具有检查点的恢复技术有什么优点?试举一个具体的例子加以说明。答
150 |
151 | 答:
152 |
153 | 利用日志技术进行数据库恢复时,恢复子系统必须搜索日志,确定哪些事务需要REDO ,哪些事务需要UNDO 。一般来说,需要检查所有日志记录。这样做有**两个问题**:一是搜索整个日志将耗费大量的时间;二是很多需要REDO 处理的事务实际上已经将它们的更新操作结果写到数据库中了,恢复子系统又重新执行了这些操作,浪费了大量时间。
154 |
155 | 检查点技术就是为了解决这些问题。
156 |
157 | 在采用检查点技术之前,恢复时需要从头扫描日志文件,而利用检查点技术只需要从上个检查点开始扫描日志,这就==**缩短了扫描日志的时间**==
158 | 事务Tl 的更新操作实际上已经写到数据库中了,进行恢复时没有必要再REDO 处理,采用检查点技术做到了这一点。
159 |
160 |
161 |
162 | ### 12 .试述使用检查点方法进行恢复的步骤。:smiling_imp:
163 |
164 | 答:
165 |
166 | 
167 |
168 | 1. 从**重新开始文件**(见上图)中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。
169 | 2. 由该检查点记录**得到检查点建立时刻所有正在执行的事务清单ACTIVE 一LIST** 。
170 | 这里建立两个事务队列:
171 | 1. UNDO 一LIST :需要执行undo 操作的事务集合;
172 | 2. REDO 一LIST :需要执行redo 操作的事务集合。
173 | 把ACTIVE 一LIST 暂时放入UNDO 一LIST 队列,**REDO 队列暂为空**。
174 | 3. 从检查点开始正向扫描日志文件:
175 | 1. 如有新开始的事务T ,把T 暂时放入UNDO 一LlST 队列;
176 | 2. 如有提交的事务K,把K从UNDO 一LIST 队列移到REDO 一LIST 队列,直到日志文件结束;
177 | 显然事务K在==检查点之后并且在错误发生之前==提交,所以需要UNDO。
178 | 4. 对UNDO 一LIST 中的每个事务执行UNDO 操作,对REDO 一LIST 中的每个事务执行REDO 操作。
179 |
180 |
181 |
182 | ### 13 .什么是数据库镜像?它有什么用途?
183 |
184 | 答:
185 |
186 | 数据库镜像即根据DBA 的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS 自动把更新后的数据复制过去,即DBMS 自动保证镜像数据与主数据的一致性。
187 |
188 | 数据库镜像的用途有:
189 | 一是用于数据库恢复。当出现介质故障时,可由**镜像磁盘继续提供使用**,同时DBMS 自动利用镜像磁盘数据进行数据库的恢复,**不需要关闭系统和重装数据库副本**。
190 |
191 | 二是提高数据库的可用性。在没有出现故障时,当一个用户对某个数据加排它锁进行修改时,其他用户可以读镜像数据库上的数据,而**不必等待该用户释放锁**。(也可以说是并发使用)
192 |
193 |
--------------------------------------------------------------------------------
/数据库系统概论/课后题/11 并发控制.md:
--------------------------------------------------------------------------------
1 | 第11章 并发控制
2 |
3 | [toc]
4 |
5 | ### 1. 在数据库中为什么要并发控制?
6 |
7 | 答:数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,**破坏数据库的一致性**。所以数据库管理系统必须提供并发控制机制。
8 |
9 |
10 |
11 | ### 2 .并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?
12 |
13 | 答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏’数据。
14 |
15 | ( l )丢失修改(lost update ) 两个事务 Tl 和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了) Tl 提交的结果,导致 Tl 的修改被丢失。
16 |
17 | ( 2 )不可重复读( Non 一 Repeatable Read ) 不可重复读是指事务 T1 读取数据后,事务T2更新了该数据,使 T1无法再现前一次读取结果。
18 |
19 | ( 3 )读“脏”数据( Dirty Read ) 读“脏”数据是指事务 T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后, T1由于某种原因被==撤销==,这时 T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。
20 |
21 | 避免不一致性的方法和技术就是并发控制。最常用的技术是**封锁技术**。也可以用其他技术,例如在分布式数据库系统中可以采用**时间戳方法**来进行并发控制。
22 |
23 |
24 |
25 | ### 3 .什么是封锁?基本的封锁类型有几种?试述它们的含义。
26 |
27 | 答:封锁就是事务 T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务 T 就对该数据对象有了一定的控制,在事务 T 释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。
28 |
29 | 基本的封锁类型有两种:
30 | 排它锁( Exclusive Locks ,简称 x 锁)和共享锁 ( Share Locks,简称 S 锁)。
31 |
32 | 排它锁又称为写锁。若事务 T 对数据对象 A 加上 X 锁,则只允许 T 读取和修改 A ,其他任何事务都不能再对 A 加任何类型的锁,直到 T 释放 A 上的锁。这就保证了其他事务在 T 释放 A 上的锁之前不能再读取和修改 A 。
33 |
34 | 共享锁又称为读锁。若事务 T 对数据对象 A 加上 S 锁,则事务 T 可以读 A但不能修改 A ,其他事务只能再对 A 加 S 锁,而不能加 X 锁,直到 T 释放 A 上的 S 锁。这就保证了其他事务可以读 A ,但在 T 释放 A 上的 S 锁之前不能对 A 做任何修改。
35 |
36 |
37 |
38 | ### 4 .如何用封锁机制保证数据的一致性?
39 |
40 | 答: DBMS 在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务 Tl 在对 A 进行修改之前先对 A 执行 Xlock ( A ) ,即对 A 加 x 锁。这样,当几请求对 A 加 x 锁时就被拒绝,几只能等待 Tl 释放 A 上的锁后才能获得对 A 的 x 锁,这时它读到的 A 是 Tl 更新后的值,再按此新的 A 值进行运算。这样就不会丢失 Tl 的更新。
41 |
42 | 
43 |
44 | DBMS 按照一定的封锁协议,对并发操作进行控制,使得多个并发操作有序地执行,就可以避免丢失修改、不可重复读和读脏数据等数据不一致性。
45 |
46 |
47 |
48 | ### 5 . 什么是封锁协议?不同级别的封锁协议的主要区别是什么?
49 |
50 | 对数据对象加锁时,约定一些规则,例如何时申请X锁或S锁、持续时间、何时释放等,称这些规则为封锁协议。
51 |
52 | 一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
53 | 二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,**读完后即可释放**S锁。
54 | 三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到**事务结束才释放**。
55 |
56 |
57 |
58 | #### 一级封锁协议
59 |
60 | 功能:防止丢失修改
61 |
62 | - 事务T1在读A进行修改之前先对A加==X锁==
63 | - 当T2再请求对A加X锁时被拒绝
64 | - T2只能等待T1释放A上的锁后T2获得对A的X锁
65 | - 这时T2读到的A已经是T1更新过的值15
66 | - T2按此新的A值进行运算,并将结果值A=14送回到磁盘。避免了丢失T1的更新。
67 |
68 | 
69 |
70 | #### 二级封锁协议
71 |
72 | 功能:不读“脏”数据
73 |
74 | - 事务T1在对C进行修改之前,先对C**加X锁**,修改其值后写回磁盘;
75 | - T2请求在C上加S锁,因T1已在C上加了X锁,T2只能等待
76 | - T1因某种原因被撤销,C恢复为原值100;
77 | - T1释放C上的X锁后T2获得C上的S锁,读C=100。避免了T2读“脏”数据。
78 |
79 | 
80 |
81 | #### 三级封锁协议
82 |
83 | 功能:可重复读
84 |
85 | - 事务T1在读A,B之前,先对A,B==加S锁==
86 | - 其他事务只能再对A,B加S锁,而不能加X锁,**即其他事务只能读A,B,而不能修改**
87 | - 当T2为修改B而申请对B的X锁时被拒绝只能等待T1释放B上的锁
88 | - T1为验算再读A,B,这时读出的B仍是100,求和结果仍为150,即可重复读
89 | - T1结束才释放A,B上的S锁。T2才获得对B的X锁
90 |
91 | 
92 |
93 | ### 6 . 不同的封锁协议与系统一致性级别的关系是什么?
94 |
95 | 不同的封锁协议==对应不同的一致性级别==
96 |
97 | 一级封锁协议可防止丢失修改,并保证事务T是可恢复的。在一级封锁协议中,**对读数据是不加S锁的**,所以它不能保证可重复读和不读"脏"数据。
98 |
99 | 二级封锁协议除防止了丢失修改,还可进一步防止读"脏"数据。在二级封锁协议中,由于**读完数据后立即释放S锁,**所以它不能保证可重复读。
100 |
101 | 在三级封锁协议中,无论是读数据还是写数据都加长锁,即**都要到事务结束才释放封锁**。所以三级封锁协议除防止了丢失修改和不读"脏"数据外,还进一步防止了不可重复读。
102 |
103 |
104 |
105 | ### 7 .什么是活锁?什么是死锁?
106 |
107 | 答:
108 |
109 | 
110 |
111 | 如果事务 T1封锁了数据 R ,事务T2又请求封锁 R ,于是T2等待。T3也请求封锁 R ,当 T1 释放了 R 上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁 R ,当T3释放了 R 上的封锁之后系统又批准了T4的请求 … …
112 | T2有可能永远等待,这就是活锁的情形。活锁的含义是该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。
113 |
114 | 如果事务 T1封锁了数据 R1,T2封锁了数据R2,然后 T1又请求封锁R2,因T2已封锁了T2,于是 T1等待T2释放R2上的锁。接着T2又申请封锁 R1 ,因 T1已封锁了 R1 ,T2也只能等待 T1释放 R1 上的锁。这样就出现了 T1 在等待R2,而T2又在等待 R1的局面, 两个事务永远不能结束,形成死锁。
115 |
116 | 
117 |
118 |
119 |
120 | ### 8 .试述活锁的产生原因和解决方法。
121 |
122 | 答:活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。避免活锁的简单方法是采用==先来先服务的策略==。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。
123 |
124 |
125 |
126 | ### 9 . 请给出预防死锁的若干方法
127 |
128 | 在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他事务封锁的数据加锁,从而出现死等待。
129 |
130 | 防止死锁的发生其实就是要破坏产生死锁的条件。预防死锁通常有两种方法:
131 | (1)一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行;
132 | (2)顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。
133 |
134 | 不过,预防死锁的策略不大适合数据库系统的特点,具体原因可参见《概论》8.4。
135 |
136 |
137 | ### 10 .请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁?
138 |
139 | 答:数据库系统一般采用允许死锁发生, DBMS 检测到死锁后加以解除的方法。 DBMS 中诊断死锁的方法与操作系统类似,一般使用**超时法**或**事务等待图法**。
140 |
141 | - 超时法是:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。
142 | 超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。若时限设置得太长,又不能及时发现死锁发生。
143 |
144 | - 并发控制**子系统周期性地(比如每隔数秒)生成事务等待图**,检测事务。如果发现图中==存在回路==,则表示系统中出现了死锁。
145 |
146 | DBMS 并发控制子系统检测到死锁后,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。当然,对撤销的事务所执行的数据修改操作必须加以恢复。
147 |
148 |
149 |
150 | ### 11 .什么样的并发调度是正确的调度?
151 |
152 | 答:可串行化( Serializable )的调度是正确的调度。可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行它们时的结果相同,称这种调度策略为可串行化的调度。
153 |
154 |
155 |
156 | ### 12 .设 T1,T2,T3是如下的 3 个事务:
157 |
158 | Tl :A : = A + 2 ;
159 |
160 | T2:A : = A * 2 ;
161 |
162 | T3:A : = A **2 ; ( 就是A的平方)
163 |
164 | 设 A 的初值为 0 。
165 |
166 | #### ( 1 )若这 3 个事务**允许并行执行**,则有多少可能的正确结果,请一一列举出来。
167 |
168 | 答 :A 的最终结果可能有 2 、 4 、 8 、 16 。因为串行执行次序有 T1T2T3、 T1T3T2、T2T1T3、T2T3T1、T3T1T2、T3T2T1。对应的执行结果是 16 、 8 、 4 、 2 、 4 、2 。
169 |
170 | #### ( 2 )请给出一个可串行化的调度,并给出执行结果
171 |
172 | 答:
173 |
174 | 
175 |
176 | 最后结果 A 为 16 ,是可串行化的调度。
177 |
178 | #### ( 3 )请给出一个非串行化的调度,并给出执行结果。
179 |
180 | 答:
181 |
182 | 
183 |
184 | 最后结果 A 为 0 ,为非串行化的调度。
185 |
186 | 0不在任意一次串行执行的结果当中。
187 |
188 | #### ( 4 )若这 3 个事务都**遵守两段锁协议**,请给出一个不产生死锁的可串行化调度。
189 |
190 | 扩展阶段和收缩阶段。
191 |
192 | 答:
193 |
194 | 
195 |
196 | #### ( 5 )若这 3 个事务都遵守两段锁协议,请给出一个产生死锁的调度。
197 |
198 | 答:
199 |
200 | 
201 |
202 | 这个死锁还挺有趣的诶。
203 |
204 | ### 13 . 试述两段锁协议的概念
205 |
206 | 事务分为两个阶段对数据项的加锁和解锁
207 |
208 | - 第一阶段是获得封锁,也称为**扩展阶段**
209 | 事务**可以申请**获得任何数据项上的任何类型的锁,但是**不能释放**任何锁
210 | - 第二阶段是释放封锁,也称为**收缩阶段**
211 | 事务**可以释放**任何数据项上的任何类型的锁,但是**不能再申请**任何锁
212 |
213 | ### 14.试证明,若并发事务遵守两段锁协议,则对这些事务的并发调度是可串行化的。
214 |
215 | 证明:首先以两个并发事务 T1 和T2为例,存在多个并发事务的情形可以类推。根据可串行化定义可知,事务不可串行化只可能发生在下列两种情况:
216 |
217 | 1. 事务 T1 写某个数据对象 A ,T2读或写 A ;
218 | 2. 事务 T1 读或写某个数据对象 A ,T2写 A
219 | 3. 两个事务都读A,加S锁,不会有冲突。
220 |
221 | 下面称 A 为潜在冲突对象。
222 |
223 | 设 T1 和T2访问的潜在冲突的公共对象为{A1,A2 … , An }。不失一般性,假设这组潜在冲突对象中 X =(A 1 , A2 , … , Ai }均符合情况 1 。 Y ={A i + 1 , … , An }符合所情况( 2 )。
224 |
225 | VX ∈ x , Tl 需要 XlockX ①
226 |
227 | T2 需要 Slockx 或 Xlockx ②
228 |
229 | 1 )如果操作 ① 先执行,则 T1获得锁,T2等待
230 |
231 | 由于遵守两段锁协议, Tl 在成功获得 X 和 Y 中全部对象及非潜在冲突对象的锁后,才会释放锁。
232 |
233 | 这时如果存在 w ∈ x 或 Y ,T2已获得 w 的锁,则出现死锁;否则, Tl 在对 x 、 Y 中对象全部处理完毕后,T2才能执行。这相当于按 Tl 、T2的顺序串行执行,根据可串行化定义, Tl 和几的调度是可串行化的。
234 |
235 | 2 )操作 ② 先执行的情况与( l )对称因此,若并发事务遵守两段锁协议,在不发生死锁的情况下,对这些事务的并发调度一定是可串行化的。证毕。
236 |
237 |
238 |
239 | ### 15 .举例说明,对并发事务的一个调度是可串行化的,而这些并发事务不一定遵守两段锁协议。
240 |
241 | 答:
242 |
243 | 只需在T2后面加一个额外的上锁,释放的过程。可以看到T2不遵守两段锁协议。
244 |
245 | 
246 |
247 |
248 |
249 | ### 16 .为什么要引进意向锁?意向锁的含义是什么?
250 |
251 | 答:引进意向锁是为了**提高封锁子系统的效率**。该封锁子系统**支持多种封锁粒度**。
252 |
253 | 原因是:在多粒度封锁方法中一个数据对象可能以两种方式加锁 ― 显式封锁和隐式封锁。因此系统在对某一数据对象加锁时不仅要检查该数据对象上有无(显式和隐式)封锁与之冲突,还要检查其所有上级结点和所有下级结点,看申请的封锁是否与这些结点上的(显式和隐式)封锁冲突。
254 |
255 | 显然,这样的检查方法效率很低。为此引进了意向锁。
256 |
257 | 意向锁的含义是:对任一结点加锁时,必须先对它的上层结点加意向锁。例如事务 T 要对某个元组加 X 锁,则首先要对关系和数据库加 ix 锁。换言之,对关系和数据库加 ix 锁,表示它的后裔结点 ― 某个元组拟(意向)加 X 锁。==引进意向锁后,系统对某一数据对象加锁时不必逐个检查与下一级结点的封锁冲突了==。例如,事务 T 要对关系 R 加 X 锁时,系统只要检查根结点数据库和 R 本身是否已加了不相容的锁(如发现已经加了 ix ,则与 X 冲突),而不再需要搜索和检查 R 中的每一个元组是否加了 X 锁或 S 锁。
258 |
259 |
260 |
261 | ### 17 .试述常用的意向锁: IS 锁、 ix 锁、 SIX 锁,给出这些锁的相容矩阵。
262 |
263 | 答: IS锁:如果对一个数据对象加 IS 锁,表示它的后裔结点拟(意向加 S 锁),例如,要对某个元组加 S 锁,则要首先对关系和数据库加 IS 锁
264 |
265 | IX 锁:如果对一个数据对象加 ix 锁,表示它的后裔结点拟(意向加 X 锁),例如,要对某个元组加 X 锁,则要首先对关系和数据库加 ix 锁。
266 |
267 | SIX 锁:如果对一个数据对象加 SIX 锁,表示对它加 S 锁,再加 IX 锁,即 SIX = S + IX 。
268 |
269 | > 意味着对该对象加S锁,对其下级对象会加X锁。
270 | >
271 | > 例如:对某个表加SIX锁,则表示该事务要读整个表(所以要对该表加S锁),同时会更新个别元组(所以要对该表加IX锁,表的后裔——元组会被更改)
272 |
273 | 相容矩阵:
274 |
275 | 
276 |
277 |
278 |
279 | ### 18 .理解并解释下列术语的含义:
280 |
281 | 封锁、活锁、死锁、排它锁、共享锁、并发事务的调度、可串行化的调度、两段锁协议。
282 |
283 | 答:(略,已经在上面有关习题中解答)
284 |
285 |
286 |
287 | ### 19 .试述你了解的某一个实际的 DBMS 产品的并发控制机制。
288 |
289 | 答:(略,参见简单介绍了有关 Oracle 的并发控制机制。)
290 |
291 |
--------------------------------------------------------------------------------
/数据库系统概论/课后题/2 关系数据库.md:
--------------------------------------------------------------------------------
1 | [TOC]
2 |
3 | 第2章 关系数据库
4 |
5 | ### 1 .试述关系模型的三个组成部分。
6 |
7 | 答:关系模型由**关系数据结构**、**关系操作集合**和**关系完整性约束**三部分组成。典型的数据模型三要素。
8 |
9 |
10 |
11 | ### 2 .试述关系数据语言的特点和分类。
12 |
13 | 答:关系数据语言可以分为三类:
14 |
15 | 1. 关系代数语言。
16 | 2. 关系演算语言:元组关系演算语言`ALPHA`和域关系演算语言`QBE`。==(演算语言不考)==
17 | 3. 具有关系代数和关系演算双重特点的语言:SQL
18 |
19 | 这些关系数据语言的共同特点是:
20 |
21 | 语言具有**完备的表达能力**,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。
22 |
23 | ### 3.定义并理解下列术语:arrow_up_small:
24 |
25 | ---
26 |
27 | 域:一组具有相同数据类型的**值的集合**(可以理解成取值范围)
28 |
29 | 笛卡尔积:给定一组域 D1,D2,...Dn。允许其中有些域是有相同的,其笛卡尔积为D1×D2×...×Dn
30 |
31 | ==关系==:在域D1,D2,....Dn上笛卡尔积D1×D2×...×Dn的==子集==称为关系,表示为R(D1,D2,....Dn)
32 |
33 | 元组:关系中的每个元素是关系中的元组
34 |
35 | 属性:每列的名字
36 |
37 | ---
38 |
39 | 关系模式:**关系的描述称为关系模式**,形式化的表示为R(U,D,DOM,F)
40 |
41 | 关系:上面也有讲
42 |
43 | > 另一种解释:**关系是关系模式在某一时刻的状态或内容**,关系模式是静态的,稳定的,关系是动态的,变化的。因为关系操作在不断的更新数据库中的数据
44 |
45 | 关系数据库:关系模式在某一时刻对应的关系的集合,即关系数据库。
46 |
47 | ---
48 |
49 | 另外:关系模式是型,关系是值
50 |
51 | Student(sno,sname)是关系模式,以他为属性的表,即某一个时刻关系模式的值
52 |
53 | ### 4 .试述关系模型的完整性规则。在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?
54 |
55 | 答:
56 |
57 | **实体完整性**规则是指若属性A是基本关系R的**主属性**,则属性A不能取空值。
58 |
59 | 若属性(或属性组)F是基本关系R的**外码**,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
60 |
61 | 1. 或者**取空值(F的每个属性值均为空值)**;
62 | 2. 或者等于S中某个元组的主码值。即属性F本身不是主属性,则可以取空值,否则不能取空值。
63 |
64 |
65 |
66 | ### 5.设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:
67 |
68 | ∞代表自然连接符号。
69 |
70 | 1)求供应工程J1零件的供应商号码SNO:
71 |
72 | πSno(σJno=‘J1’(SPJ) )
73 |
74 | 2)求供应工程J1零件P1的供应商号码SNO:
75 |
76 | πSno(σJno=‘J1’∧Pno=‘P1‘(SPJ)) 到sql里就不用 ^ 用 and了。
77 |
78 | 3)求供应工程J1零件为红色的供应商号码SNO:
79 |
80 | πSno(σJno=‘J1‘ (σCOLOR=’红‘ (P) ∞SPJ))
81 |
82 | 另外答案为:
83 |
84 | πSno(πSno,Pno(σJno=‘J1‘ (SPJ))∞πPno(σCOLOR=’红‘ (P)) )
85 |
86 | > 上面这个地方最后投影为何要分两步?可能有重复的?我觉得不需要分两步吧,但这是书上的标志答案。
87 |
88 | 4)求**没有使用天津**供应商生产的**红色**零件的工程号**JNO**:
89 |
90 | πJno(J) - πJno(σcity=‘天津’∧Color=‘红‘ (S∞SPJ∞P)
91 |
92 | > 没有使用,意思就是用减法。
93 | >
94 | > 先把供应情况,零件,供应商三个表连起来,选择其中红色,切城市为天津的。
95 | >
96 | > 然后SPJ中的减去它,就是了。
97 | >
98 | > 当然,应该也可以先选择,后连接。
99 | >
100 | > πJno(J) - πJno(π~Sno~ (σ~city=‘天津’~(S)) ∞ π~Sno,Pno,Jno~(SPJ) ∞ πPno (σ~color='红'~(P) ) )
101 | >
102 | > 上面是书上的答案,我觉得完全可以改成
103 | >
104 | > πJno(J) - πJno(π~Sno~ (σ~city=‘天津’~(S)) ∞ (SPJ) ∞ πPno (σ~color='红'~(P) ) )
105 | >
106 | > 那个spj不需要选择也没啥吧。
107 |
108 | 5)求**至少用了供应商S1所供应的全部零件**的工程号JNO:
109 |
110 | πJno,==Pno==(SPJ) ÷ πPno(σSno=‘S1‘ (SPJ))
111 |
112 | > 这个问法一看就是用除法,可参考书P63
113 | >
114 | > 先找出供应商S1所供应的全部零件 πPno(σSno=‘S1‘ (SPJ))
115 | >
116 | > 然后除了之后只剩下满足条件的Jno。
117 | >
118 | > 这个操作全在SPJ表内
119 | >
120 | > 注意那个Pno不能忘记哦
121 |
122 |
123 |
124 | ### 6.试述等值连接与自然连接的区别和联系。
125 |
126 | 答:
127 |
128 | 连接运算符是“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组(然后会有重复的列,比如S.B, H.B这样的两列,实际上是一样的)
129 |
130 | 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在**结果中把重复的属性列去掉。**
131 |
132 |
133 |
134 | ### 7.关系代数的基本运算有哪些 ? 如何用这些基本运算来表示其他运算?
135 |
136 | 答:**并、差、笛卡尔积、投影和选择**5种运算为基本的运算。其他3种运算,即**交、连接和除**,均可以用这5种基本运算来表达。
137 |
138 | 
--------------------------------------------------------------------------------
/数据库系统概论/课后题/3 SQL.md:
--------------------------------------------------------------------------------
1 | 第3章 关系数据库标准语言SQL
2 |
3 | [TOC]
4 |
5 | NOT EXISTS 的用法我有点不明白
6 |
7 |
8 |
9 | ### 1 .试述 sQL 语言的特点。
10 |
11 | 答:
12 |
13 | (l)**综合统一**。 sQL 语言集数据定义语言 DDL 、数据操纵语言 DML 、数据控制语言 DCL 的功能于一体。
14 |
15 | (2)**高度非过程化**。用 sQL 语言进行数据操作,只要提出“做什么”,而无需指明“怎么做”,因此无需了解存取路径,存取路径的选择以及 sQL 语句的操作过程由系统自动完成。
16 |
17 | (3)**面向集合的操作方式**。 sQL 语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
18 |
19 | (4)以同一种语法结构提供两种使用方式。
20 |
21 | sQL 语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式;作为嵌入式语言,它能够嵌入到高级语言程序中,供程序员设计程序时使用。
22 |
23 | (5)语言简捷,易学易用。
24 |
25 |
26 |
27 | ### 2 .试述 sQL 的定义功能。
28 |
29 | sQL 的数据定义功能包括定义表、定义视图和定义索引。
30 |
31 | SQL 语言使用 CREATE TABLE 语句建立基本表, ALTER TABLE 语句修改基本表定义, DROP TABLE 语句删除基本表;使用 CREATE INDEX 语句建立索引, DROP INDEX 语句删除索引;使用 CREATE VIEW 语句建立视图, DROP VIEW 语句删除视图。
32 |
33 |
34 |
35 | ### 3 .用 sQL 语句建立第二章习题 5 中的 4 个表。
36 |
37 | 答:
38 |
39 | 对于 S 表: S ( SNO , SNAME , STATUS , CITY ) ;
40 |
41 | 建 S 表:
42 |
43 | CREATE TABLE S ( Sno C(2) **UNIQUE**,Sname C(6) ,Status C(2),City C(4));
44 |
45 | > 这里应该char(2) 这种定义方式,不要简写成 C(2)
46 | >
47 | > 为什么Sname不用 VARCHAR(6) 这么定义,名字有两个有三个字的呀?
48 | >
49 | > 一个中文字符需要两个Char
50 |
51 | ```SQL
52 | //我的版本,这个NOT NULL 实在是可写可不写
53 | CREATE TABLE S ( Sno char(2) UNIQUE NOT NULL,
54 | Sname varchar(6) ,
55 | Status char(2),
56 | City char(4) );
57 | ```
58 |
59 |
60 |
61 | 对于 P 表: P ( PNO , PNAME , COLOR , WEIGHT );
62 |
63 | 建 P 表 :
64 |
65 | CREATE TABLE P(Pno C(2) **UNIQUE**,Pname C(6),COLOR C(2), WEIGHT INT);
66 |
67 |
68 |
69 | 对于 J 表: J ( JNO , JNAME , CITY) ;
70 |
71 | 建 J 表:
72 |
73 | CREATE TABLE J(Jno C(2) **UNlQUE,**JNAME C(8), CITY C(4))
74 |
75 |
76 |
77 | 对于 SPJ 表: sPJ ( sNo , PNo , JNo , QTY) ;
78 |
79 | 建 SPJ 表:SPJ(SNO,PNO,JNO,QTY)
80 |
81 | CREATE TABLE SPJ(Sno C(2),Pno C(2),JNO C(2), QTY INT))
82 |
83 | > spj这个表就不用写unique了,蛮多都是外码。
84 |
85 |
86 |
87 | ### 4. 针对上题中建立的 4 个表试用 sQL 语言完成第二章习题 5 中的查询。
88 |
89 | ( l )求供应工程 Jl 零件的供应商号码 SNO ;
90 |
91 | ```sql
92 | SELECT DISTINCT SNO //去重用distinct。
93 | FROM SPJ
94 | WHERE JNO=’J1’
95 | ```
96 |
97 | ( 2 )求供应工程 Jl 零件 Pl 的供应商号码 SNO ;
98 |
99 | ```sql
100 | SELECT DISTINCT SNO
101 | FROM SPJ
102 | WHERE JNO='J1' AND PNO='P1'
103 | ```
104 |
105 | ( 3 )求供应工程 Jl 零件为红色的供应商号码 SNO ;
106 |
107 | ```SQL
108 | SELECT SNO //为何不用distinct,没道理啊。
109 | FROM SPJ,P
110 | WHERE JNO='J1' AND SPJ.PNO=P.PNO AND COLOR='红'
111 |
112 | //我的版本
113 | SELECT DISTINCT SNO
114 | FROM SPJ,P
115 | WHERE SPJ.JNO='J1' AND
116 | SPJ.PNO=P.PNO AND
117 | P.COLOR='红'
118 | //两点不同,一是有DISTINCT,二是多余的地方加了表限制,例如两表中只有SPJ有JNO那么就不需要加前面的限制,当然加了也可以,没问题
119 |
120 | //或者用嵌套查询
121 | SELECT Sno
122 | FROM SPJ
123 | WHERE Jno='J1' and Pno in
124 | (SELECT PNO
125 | FORM P
126 | WHERE COLOR='红');
127 | ```
128 |
129 | ( 4 )求没有使用天津供应商生产的红色零件的工程号 JNO ;
130 |
131 | ```sql
132 | SELECT DISTCT JNO
133 | FROM SPJ
134 | WHERE JNO NOT IN (
135 | SELE JNO
136 | FROM SPJ,P,S
137 | WHERE S.CITY='天津' //city在这三个表中也只有一个啊,为啥加前缀?我觉得不加前缀也可以啊。
138 | AND COLOR='红'
139 | AND S.SNO=SPJ.SNO
140 | AND P.PNO=SPJ.PNO);
141 |
142 | //另一种写法,用not exists
143 | SELECT Jno
144 | FROM J
145 | WHERE NOT EXISTS(//这里not exists显然可以改成not in
146 | SELECT *
147 | FROM SPJ,S,P
148 | WHERE SPJ.JNO=J.JNO AND //这一步不太懂,为啥要把J.NO牵扯进来,是为了得出true or false 然后得到答案?因为外层用的是J表?
149 | //上一句好像是为了和外层循环建立联系
150 | SPJ.SNO=S.SNO AND
151 | SPJ.PNO=P.PNO AND
152 | S.CITY='天津' AND
153 | P.color='红');
154 | ```
155 |
156 | ( 5 )求至少用了供应商 Sl 所供应的全部零件的工程号 JNO ;
157 |
158 | 由于**VFP不允许子查询嵌套太深**,将查询分为两步
159 |
160 | ```sql
161 | A、查询S1供应商供应的零件号
162 |
163 | SELECT DIST PNO //应写DISTINCT 应该是教材老的关系。
164 | FROM SPJ
165 | WHERE SNO='S1'
166 |
167 | 结果是(P1,P2)
168 |
169 | B、查询哪一个工程既使用P1零件又使用P2零件。
170 | SELECT JNO
171 | FROM SPJ
172 | WHERE PNO='P1'
173 | AND JNO IN (SELECT JNO
174 | FROM SPJ
175 | WHERE PNO='P2')
176 | ```
177 |
178 | > 然我来想也想不到更好的解决方法。看看网友怎么回答吧。
179 |
180 | 问题转化为:
181 |
182 | 不存在这样的零件y,供应商S1供应了y,而工程x未选用y
183 | 即对于所有的供应商SI供应的零件,某个工程全选用了。
184 |
185 | ```sql
186 | SELECT DISTINCT JNO
187 | FROM SPJ Z //这是起别名
188 | WHERE NOT EXISTS
189 | (SELECT *
190 | FROM SPJ X
191 | WHERE SNO='S1' AND NOT EXISTS(
192 | SELECT *
193 | FROM SPJ Y
194 | WHERE Y.PNO=X.PNO AND Y.JNO=Z.JNO)
195 | );
196 | ```
197 |
198 |
199 |
200 | ### 5.针对习题3中的四个表试用SQL语言完成以下各项操作:
201 |
202 | (1)找出所有供应商的姓名和所在城市。
203 |
204 | ```sql
205 | SELECT SNAME,CITY
206 | FROM S
207 | ```
208 |
209 | (2)找出所有零件的名称、颜色、重量。
210 |
211 | ```sql
212 | SELECT PNAME,COLOR,WEIGHT
213 | FROM P
214 | ```
215 |
216 | (3)找出使用供应商S1所供应零件的工程号码。
217 |
218 | ```sql
219 | SELECT DIST JNO
220 | FROM SPJ
221 | WHERE SNO='S1'
222 | ```
223 |
224 | (4)找出工程项目J2使用的各种零件的名称及其数量。
225 |
226 | ```sql
227 | SELECT PNAME,QTY
228 | FROM SPJ,P
229 | WHERE P.PNO=SPJ.PNO AND SPJ.JNO='J2'
230 | ```
231 |
232 | (5)找出上海厂商供应的所有零件号码。
233 |
234 | ```sql
235 | SELECT PNO
236 | FROM SPJ,S
237 | WHERE S.SNO=SPJ.SNO AND CITY='上海'
238 | //当然,用嵌套查询也可以
239 | ```
240 |
241 | (6)出使用上海产的零件的工程名称。
242 |
243 | > 上海产的,指的是上海供应的。要S表。
244 |
245 | ```sql
246 | SELECT JNAME
247 | FROM SPJ,S,J
248 | WHERE S.SNO=SPJ.SNO AND S.CITY='上海' AND J.JNO=SPJ.JNO
249 |
250 | 或
251 |
252 | SELECT JNAME
253 | FROM J
254 | WHER JNO IN( SELECT JNO
255 | FROM SPJ,S
256 | WHERE SPJ.SNO=S.SNO
257 | AND S.CITY='上海');
258 | ```
259 |
260 | (7)找出**没有使用天津产**的零件的工程项目号码。
261 |
262 | > 供应商城市不是天津。
263 |
264 | ```sql
265 | //适用于JNO是唯一或不唯一的情况。
266 | SELECT DISTINCT JNO
267 | FROM SPJ
268 | WHERE JNO NOT IN
269 | (SELECT DISTINCT JNO
270 | FROM SPJ,S
271 | WHERE S.SNO=SPJ.SNO AND S.CITY='天津')
272 |
273 |
274 | //<>这个符号是不等于
275 | //适用于JNO是唯一的情况
276 | //就是工程项目是唯一的情况,从书P81的J表上看,工程项目是唯一的。
277 | SELECT DISTINCT JNO
278 | FROM SPJ,S
279 | WHERE S.SNO=SPJ.SNO AND S.CITY<>'天津'
280 |
281 | //用exists解决
282 | SELECT JNO
283 | FROM J
284 | WHERE NOT EXISTS
285 | (SELECT *
286 | FROM SPJ,S
287 | WHERE SPJ.JNO=J.JNO AND //这个是为了和外层循环建立联系的
288 | SPJ.SNO=SPJ.SNO AND
289 | S.CITY='天津');
290 | ```
291 |
292 | (8)把全部红色零件的颜色改成蓝色。
293 |
294 | ```sql
295 | UPDATE P
296 | SET COLOR='蓝'
297 | WHERE COLOR='红'
298 | ```
299 |
300 | (9)由S5供给J4的零件P6改为由S3供应。
301 |
302 | ```sql
303 | UPDATE SPJ
304 | SET SNO='S3'
305 | WHERE SNO='S5' AND JNO='J4' AND PNO='P6'
306 | ```
307 |
308 | (10)从供应商关系中删除**供应商号是S2**的记录,并从供应情况关系中删除相应的记录。
309 |
310 | ```sql
311 | DELETE FROM S WHERE SNO=’S2’
312 | DELETE FROM SPJ WHERE SNO=‘S2’
313 | ```
314 |
315 | (11)请将(S2,J6,P4,200)插入供应情况关系。
316 |
317 | ```sql
318 | INSERT INTO SPJ
319 | VALUES(‘S2’,‘J6’,‘P4’,200)
320 | ```
321 |
322 |
323 |
324 | ### 6 .什么是基本表?什么是视图?两者的区别和联系是什么?
325 |
326 | 答
327 |
328 | 基本表是本身独立存在的表,在 SQL 中一个关系就对应一个表。
329 | 视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。
330 |
331 | 视图在概念上与基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。
332 |
333 |
334 |
335 | ### 7 .试述视图的优点。
336 |
337 | 答
338 |
339 | 1. 视图能够简化用户的操作
340 | 2. 视图使用户能以多种角度看待同一数据
341 | 3. 视图对重构数据库提供了一定程度的逻辑独立性
342 | 4. 能够对机密数据提供安全保护
343 |
344 |
345 |
346 | ### 8 .所有的视图是否都可以更新?为什么?
347 |
348 | 答:
349 |
350 | 不是。视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。**因为有些视图的更新不能惟一有意义地转换成对相应基本表的更新,所以,并不是所有的视图都是可更新的.**
351 |
352 | > 比如有的视图是取各列的平均值的,如果要改变平均值,那么不可能改变各列的值来是实现改变平均值。
353 |
354 |
355 |
356 | ### 9 .哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明。
357 |
358 | 答:
359 |
360 | 基本表的**行列子集视图**一般是可更新的。
361 |
362 | 若视图的属性来自集函数、表达式,则该视图肯定是不可以更新的。
363 |
364 |
365 |
366 | ### 10 .试述某个你熟悉的实际系统中对视图更新的规定。
367 |
368 | 答
369 |
370 | VFP
371 |
372 |
373 |
374 | ### 11.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。
375 |
376 | ```sql
377 | CREATE VIEW VSP
378 | AS //后面跟子查询。
379 | SELECT SNO,PNO,QTY
380 | FROM SPJ,J
381 | WHERE SPJ.JNO=J.JNO AND J.JNAME='三建'
382 | ```
383 |
384 | 针对该视图VSP完成下列查询:
385 |
386 | (1)找出三建工程项目使用的各种零件代码及其数量。
387 |
388 | ```sql
389 | SELECT DIST PNO,QTY
390 | FROM VSP
391 | ```
392 |
393 | (2)找出供应商S1的供应情况。
394 |
395 | ```sql
396 | SELECT DISTINCT *
397 | FROM VSP
398 | WHERE SNO='S1'
399 | ```
400 |
401 |
--------------------------------------------------------------------------------
/数据库系统概论/课后题/4 数据库安全性.md:
--------------------------------------------------------------------------------
1 | 第4章 数据库安全性
2 |
3 | [TOC]
4 |
5 | ### 1 .什么是数据库的安全性?
6 |
7 | 答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
8 |
9 | ### 2 .数据库安全性和计算机系统的安全性有什么关系?
10 |
11 | 答:
12 |
13 | - 安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。
14 | - 系统安全保护措施是否有效是数据库系统的主要指标之一。
15 | - 数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的,
16 |
17 | ### *3 .试述可信计算机系统评测标准的情况,试述TDI / TCSEC 标准的基本内容。
18 |
19 | 答:各个国家在计算机安全技术方面都建立了一套可信标准。目前各国引用或制定的一系列安全标准中,最重要的是美国国防部(DoD )正式颁布的《 DoD 可信计算机系统评估标准》 。(TDI / TCSEC 标准是将TcsEc 扩展到数据库管理系统,即《 可信计算机系统评估标准关于可信数据库系统的解释》 (Tmsted Database Interpretation 简称TDI , 又称紫皮书)。在TDI 中定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准。
20 | TDI 与TcsEc 一样,从安全策略、责任、保证和文档四个方面来描述安全性级别划分的指标。每个方面又细分为若干项。
21 |
22 |
23 |
24 | ### *4 .试述TcsEC ( TDI )将系统安全级别划分为4 组7 个等级的基本内容。
25 |
26 | 答:根据计算机系统对安全性各项指标的支持情况,TCSEC ( TDI )将系统划分为**四组(division ) 7 个等级**,依次是D 、C ( CI , CZ )、B ( BI , BZ , B3 )、A ( AI ) ,按系统可靠或可信程度逐渐增高。
27 |
28 | 
29 | 这些安全级别之间具有一种偏序向下兼容的关系,即较高安全性级别提供的安全保护包含较低级别的所有保护要求,同时提供更多或更完善的保护能力。各个等级的基本内容为:
30 | **D 级 是最低级别**。一切不符合更高标准的系统,统统归于D 组。
31 |
32 | Cl 级只提供了非常初级的自主安全保护。能够实现对用户和数据的分离,进行自主存取控制(DAC ) ,保护或限制用户权限的传播。
33 | **C2 级实际是安全产品的最低档次**,提供受控的存取保护,即将Cl 级的DAC 进一步细化,以个人身份注册负责,并实施审计和资源隔离。
34 | B1 级标记安全保护。对系统的数据加以标记,并对标记的主体和客体实施强制存取控制(MAC )以及审计等安全机制。
35 | B2 级结构化保护。建立形式化的安全策略模型并对系统内的所有主体和客体实施DAC 和MACo
36 | B3 级安全域。该级的TCB 必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。
37 | A1 级验证设计,即提供B3 级保护的同时给出系统的形式化设计说明和验证以确信各安全保护真正实现。
38 |
39 |
40 |
41 | ### 5 .试述实现数据库安全性控制的常用方法和技术。
42 |
43 | 答:实现数据库安全性控制的常用方法和技术有:
44 | ( l )**用户标识和鉴别**:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
45 | ( 2 )**存取控制**:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如**C2 级中的自主存取控制( DAC )** , **B1级中的强制存取控制(MAC )**。
46 | ( 3 )**视图机制**:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
47 |
48 | ( 4 )**审计**:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA 可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
49 | ( 5 )**数据加密**:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
50 |
51 |
52 |
53 | ### 6 .什么是数据库中的自主存取控制方法和强制存取控制方法?
54 |
55 | 答:
56 |
57 | 1. 自主存取控制方法:
58 |
59 | **定义各个用户对不同数据对象的存取权限**。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
60 |
61 | 2. 强制存取控制方法:
62 |
63 | 每一个数据对象被**(强制地)标以一定的密级**,每一个**用户也被(强制地)授予某一个级别的许可证**。系统规定**只有具有某一许可证级别的用户才能存取某一个密级的数据对象**。
64 |
65 |
66 |
67 | ### 7 .SQL 语言中提供了哪些数据控制(自主存取控制)的语句?请试举几例说明它们的使用方法。
68 |
69 | 答:
70 |
71 | ```sql
72 | GRANT 语句的一般格式:
73 | GRANT <权限>[,<权限>]...
74 | [ON <对象类型> <对象名>]
75 | TO <用户>[,<用户>]...
76 | [WITH GRANT OPTION];
77 | 语义:将对指定操作对象的指定操作权限授予指定的用户
78 |
79 | REVOKE语句的一般格式为:
80 | REVOKE <权限>[,<权限>]...
81 | [ON <对象类型> <对象名>]
82 | FROM <用户>[,<用户>]...;
83 | 语义:回收给出的权限
84 | ```
85 |
86 |
87 |
88 | SQL 中的自主存取控制是通过GRANT语句和REVOKE语句来实现的。如:
89 |
90 | ```sql
91 | GRANT SELECT , INSERT
92 | ON Student
93 | TO 王平
94 | WITH GRANT OPTION ;
95 | ```
96 |
97 |
98 |
99 | 就将Student 表的SELECT 和INSERT 权限授予了用户王平,后面的“WITH GRANT OPTION ”子句表示用户王平同时也获得了“授权”的权限,即可以把得到的权限继续授予其他用户。
100 |
101 | ```sql
102 | REVOKE INSERT
103 | ON Student
104 | FROM 王平 CASCADE ;
105 | ```
106 |
107 | 就将Student 表的INSERT 权限从用户王平处收回,**选项CASCADE 表示,如果用户王平将Student 的INSERT 权限又转授给了其他用户,那么这些权限也将从其他用户处收回。**
108 |
109 | 就将Student 表的INSERT 权限从用户王平处收回,选项CASCADE 表示,如果用户王平将Student 的INSERT 权限又转授给了其他用户,那么这些权限也将从其他用户处收回。
110 |
111 |
112 |
113 |
114 |
115 | ### 8.请用SQL的GRANT 和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能(图见书上):
116 |
117 | ( a )用户王明对两个表有SELECT 权力。
118 |
119 | ```sql
120 | GRANT SELECT
121 | ON 职工,部门
122 | TO 王明
123 | ```
124 |
125 | ( b )用户李勇对两个表有INSERT 和DELETE 权力。
126 |
127 | ```sql
128 | GRANT INSERT,DELETE
129 | ON 职工,部门
130 | TO 李勇
131 | ```
132 |
133 | *( c ) 每个职工只对自己的记录有SELECT 权力。
134 |
135 | ```sql
136 | GRANT SELECT ON 职工
137 | WHEN USER()=NAME //这部分书上没有解释,了解一下。
138 | TO ALL;
139 | ```
140 |
141 | ( d )用户刘星对职工表有SELECT 权力,对工资字段具有更新权力。
142 |
143 | ```
144 | GRANT SELECT,UPDATE(工资)
145 | ON 职工
146 | TO 刘星
147 | ```
148 |
149 | ( e )用户张新具有修改这两个表的结构的权力。
150 |
151 | ```sql
152 | GRANT ALTER TABLE //修改是用alter table
153 | ON 职工,部门
154 | TO 张新;
155 | ```
156 |
157 | ( f )用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力。
158 |
159 | ```sql
160 | GRANT ALL PRIVILIGES
161 | ON 职工,部门
162 | TO 周平
163 | WITH GRANT OPTION;
164 | ```
165 |
166 | ( g )用户杨兰具有从每个部门职工中SELECT 最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。
167 |
168 | ```sql
169 | CREATE VIEW 部门工资 AS //下面嵌套一个查询
170 | SELECT 部门.名称,MAX(工资),MIN(工资),AVG(工资)
171 | FROM 职工,部门
172 | WHERE 职工.部门号=部门.部门号
173 | GROUP BY 职工.部门号 //一定注意要按部门分组,这样先分组,再算AVG,MAX,MIN。
174 | GRANT SELECT ON 部门工资
175 | TO 杨兰;
176 | ```
177 |
178 |
179 |
180 | ### 9 .把习题8 中(1)---(7)的每一种情况,撤销各用户所授予的权力
181 |
182 | (1)
183 |
184 | ```mssql
185 | REVOKE SELECT
186 | ON 职工,部门
187 | FROM 王明;
188 | ```
189 |
190 | (2)
191 |
192 | ```sql
193 | REVOKE INSERT , DELETE
194 | ON 职工,部门
195 | FROM 李勇;
196 | ```
197 |
198 | (3)
199 |
200 | ```sql
201 | REOVKE SELECT ON 职工
202 | WHEN USER ( ) =NAME
203 | FROM ALL ;
204 | ```
205 |
206 | (4)
207 |
208 | ```sql
209 | REVOKE SELECT , UPDATE
210 | ON 职工
211 | FROM 刘星;
212 | ```
213 |
214 | (5)
215 |
216 | ```sql
217 | REVOKE ALTER TABLE
218 | ON 职工,部门
219 | FROM 张新;
220 | ```
221 |
222 | (6)
223 |
224 | ```sql
225 | REVOKE ALL PRIVILIGES
226 | ON 职工,部门
227 | FROM 周平;
228 | ```
229 |
230 | (7)
231 |
232 | ```sql
233 | REVOKE SELECT ON 部门工资
234 | FROM 杨兰;
235 | DROP VIEW 部门工资; //还要丢弃表哦
236 | ```
237 |
238 |
239 |
240 | ### 10. 为什么强制存取控制提供了更高级别的数据库安全性?
241 |
242 | 答:强制存取控制(MAC )是对数据本身进行密级标记,**无论数据如何复制,标记与数据是一个不可分的整体**,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。
243 |
244 |
245 |
246 | ### 11 .理解并解释MAC 机制中主体、客体、敏感度标记的含义。
247 |
248 | 答:
249 |
250 | - 主体是系统中的活动实体,既包括DBMS 所管理的**实际用户**,也包括**代表用户的各进程**。
251 |
252 | - 客体是系统中的被动实体,是受主体操纵的,包括文件、基表、索引、视图等。对于主体和 客体,DBMS 为它们每个实例(值)指派一个敏感度标记(Label )。
253 |
254 | - 敏感度标记被分成若干级别
255 |
256 | 例如绝密(Top Secret )、机密(Secret )、可信( Confidential )、公开(Public )等。
257 |
258 | 主体的敏感度标记称为**许可证级别**(Clearance Level ) ,客体的敏感度标记称为**密级**(Classification Level )
259 |
260 |
261 |
262 | ### 13 .什么是数据库的审计功能,为什么要提供审计功能?
263 |
264 | 答:
265 |
266 | 审计功能是指DBMS 的审计模块在用户对数据库执行操作的同时**把所有操作自动记录到系统的审计日志中**。
267 | 因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。利用数据库的审计功能,DBA 可以根据审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
268 |
269 |
270 |
271 | ### 14 .统计数据库中存在何种特殊的安全性问题?
272 |
273 | 答:统计数据库允许用户查询聚集类型的信息,如合计、平均值、最大值、最小值等,**不允许查询单个记录信息**。但是,**人们可以从合法的查询中推导出不合法的信息**,即可能存在**隐蔽的信息通道**,这是统计数据库要研究和解决的特殊的安全性问题。
274 |
275 |
--------------------------------------------------------------------------------
/数据库系统概论/课后题/5 数据库完整性.md:
--------------------------------------------------------------------------------
1 | 第5章 数据库完整性
2 |
3 | [TOC]
4 |
5 | ### 1 . 什么是数据库的完整性?
6 |
7 | 答:
8 |
9 | 数据库的完整性是指数据的==正确性==和==相容性==。
10 |
11 |
12 |
13 | ### 2 .数据库的完整性概念与数据库的安全性概念有什么区别和联系?
14 |
15 | 答:
16 |
17 | 数据的完整性和安全性是两个不同的概念,但是有一定的联系。
18 |
19 | 前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。
20 |
21 | 后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范 对象是不合语义的数据。
22 |
23 |
24 |
25 | ### 3 .什么是数据库的完整性约束条件?可分为哪几类?
26 |
27 | 答
28 |
29 | 完整性约束条件是指数据库中的数据应该满足的语义约束条件。
30 |
31 | 一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。
32 |
33 | **静态列级约束**是对一个列的取值域的说明,包括以下几个方面:
34 |
35 | 1. 对数据类型的约束,包括数据的类型、长度、单位、精度等;
36 | 2. 对数据格式的约束;
37 | 3. 对取值范围或取值集合的约束;
38 | 4. 对空值的约束;
39 | 5. 其他约束。静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。
40 |
41 | 常见的**静态关系约束**有:
42 |
43 | 1. 实体完整性约束
44 | 2. 参照完整性约束
45 | 3. 函数依赖约束
46 |
47 | **动态列级约束**是**修改列定义或列值时应满足的约束条件**,包括下面两方面:
48 |
49 | 1. 修改列定义时的约束;
50 | 2. 修改列值时的约束。
51 |
52 | 动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。
53 | 动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。
54 |
55 |
56 |
57 | ### 4 . DBMS 的完整性控制机制应具有哪些功能?
58 |
59 | 答:
60 |
61 | DBMS 的完整性控制机制应具有三个方面的功能:
62 |
63 | 1. 定义功能,即提供定义完整性约束条件的机制
64 | 2. 检查功能,即检查用户发出的操作请求是否违背了完整性约束条件
65 | 3. 违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
66 |
67 |
68 |
69 | ### 5 . RDBMS 在实现参照完整性时需要考虑哪些方面?
70 |
71 | 答
72 |
73 | RDBMs 在实现参照完整性时需要考虑以下几个方面:
74 |
75 | 1. 外码是否可以接受空值。
76 | 2. 删除除被参照关系的元组时的考虑,这时系统可能采取的作法有三种:
77 | - 级联删除( CASCADES )
78 | - 受限删除( RESTRICTED ) //不删除相关的?
79 | - 置空值删除( NULLIFIES )
80 | 3. 在参照关系中插入元组时的问题,这时系统可能采取的作法有:
81 | - 受限插入
82 | - 递归插入。
83 | 4. 修改关系中主码的问题。**一般是不能用 UPDATE 语句修改关系主码的**。如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插入到关系中。如果允许修改主码,首先要保证主码的惟一性和非空,否则拒绝修改。然后要区分是参照关系还是被参照关系。
84 |
85 |
86 |
87 | ### 6 .假设有下面两个关系模式:
88 |
89 | 职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;
90 | 部门(部门号,名称,经理名,电话),其中部门号为主码。
91 |
92 | 用 SQL 语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:
93 | 定义每个模式的主码;定义**参照完整性(外码)**;定义职工年龄不得超过 60 岁。
94 |
95 | 答
96 |
97 | ```sql
98 | 部门(部门号,名称,经理名,电话)
99 | CREATE TABLE DEPT //部门
100 | (Deptno NUMBER(2),
101 | Deptname VARCHAR(10),
102 | Manager VARCHAR(10),
103 | PhoneNumber Char(12),
104 | CONSTRAINT PK_SC RIMARY KEY(Deptno)); //在DEPT上存了一个叫PK_SC的主键约束,主键列是Deptno
105 |
106 | 职工(职工号,姓名,年龄,职务,工资,部门号)
107 | CREATE TABLE EMP //职工
108 | (Empno NUMBER(4),
109 | Ename VARCHAR(10), //变长,10长度代表5个中文字
110 | Age NUMBER(2),
111 | CONSTRAINT C1 CHECK (Aage<=60), //这个用户自定义完整性名字叫C1,检查年龄,话说这个能写在后面么。
112 | Job VARCHAR(9),
113 | Sal NUMBER(7,2), //前面的7表示总共允许7个字符长,称为宽度。 后面2是保留小数点后面两位,称为精度
114 | Deptno NUMBER(2),
115 | CONSTRAINT FK_DEPTNO //约束名
116 | FOREIGN KEY(Deptno) //外码,foreign
117 | REFFERENCES DEPT(Deptno)); //参照的主码
118 | ```
119 |
120 |
121 |
122 | ### 7 .关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,一般是如何分别进行处理的?
123 |
124 | 答:
125 |
126 | 对于违反实体完整性和用户定义的完整性的操作一般都采用**拒绝执行**的方式进行处理。
127 | 而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。
128 |
129 |
--------------------------------------------------------------------------------
/数据库系统概论/课后题/6 关系数据库理论.md:
--------------------------------------------------------------------------------
1 | 第6章 关系数据库理论
2 |
3 | [toc]
4 |
5 | ### 1 .理解并给出下列术语的定义:
6 |
7 | 1. 函数依赖
8 | 函数依赖是指一个关系表中属性(列)之间的联系。
9 | 设R(U)是一个属性集U上的关系模式,X , Y $\subseteq$U, r是R(U) 上的任意一个关系,如果成立
10 | **对$\forall$t , s $\in$r,若t[X] = s[X],则t[Y] = s[Y]**
11 | 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。
12 |
13 | > 左部x称为决定因子
14 | > 右部y称为依赖因子
15 |
16 | 2. 部分函数依赖
17 | 只需要X中部分的属性就能决定Y
18 |
19 | 3. 完全函数依赖
20 |
21 | 即刚好要X中的==所有属性==才能决定Y,称**Y完全函数依赖于x**
22 |
23 | 4. 传递依赖
24 |
25 | 
26 |
27 | 5. 候选码
28 |
29 | 若U完全依赖于K,则K称为R的一个侯选码(Candidate Key)。
30 | 即每个K**完全决定**一个U,==每个K都是独一无二的==。
31 | 若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)。
32 |
33 | > 上面的例子中
34 | > 学号唯一,而且没有多余属性,所以是一个候选键
35 | > 姓名唯一,而且没有多余属性,所以是一个候选键
36 |
37 | 包含在任何一个==候选码中的属性称为主属性==
38 |
39 | 6. 主码
40 | 主码就是候选码里面的一个,是人为规定的
41 |
42 | 7. 外码
43 | 该属性在另一个关系中是主码。
44 |
45 | 8. 全码(All 一key )
46 |
47 | 即所以的属性构成一个码
48 |
49 | 9. 1NF
50 |
51 | 每个列不能再分割,==所有属性都是不可分的基本数据项==
52 |
53 | 10. 2NF
54 | 每一个**非主属性**==完全函数依赖==于码,消除部分依赖
55 |
56 | 11. 3NF
57 | ==消除传递函数依赖==
58 |
59 | 12. BCNF
60 |
61 | 在一个关系模式中==每一个决定属性因素==都包含==**码**==。
62 |
63 | > X→Y,每一个X都要是码
64 |
65 | 13. 多值依赖
66 |
67 | 关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,**给定的一对(x, z )值,有一组Y的值,这组值仅仅决定于x值,而与z值无关。**(实际上不需要Z来决定,Z是多余的)
68 |
69 | 14. 4NF
70 |
71 | 关系模式R$\in$1NF,如果对于R的每个**非平凡多值依赖**X→ →Y,(Y不是X的子集),**X都含有码**,则R$\in$4NF
72 |
73 |
74 |
75 | ### 2.建立一个关于系、学生、班级、学会等诸信息的关系数据库。
76 |
77 | 学生:学号、姓名、出生年月、系名、班号、宿舍区。
78 |
79 | 班级:班号、专业名、系名、人数、入校年份。
80 |
81 | 系:系名、系号、系办公地点、人数。
82 |
83 | 学会:学会名、成立年份、办公地点、人数。
84 |
85 |
86 |
87 | 语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。**一个系的学生住在同一宿舍区**。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。
88 |
89 | 请给出**关系模式**,写出每个关系模式的**极小函数依赖集**,指出是否存在**传递函数依赖**,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。指出各关系模式的候选码、外部码,有没有全码存在?
90 |
91 | 解:
92 |
93 | #### (1)关系模式如下:
94 |
95 | ```sql
96 | 学生:S(Sno,Sname,Sbirth,Dept,Class,Rno)
97 |
98 | 班级:C(Class,Pname,Dept,Cnum,Cyear)
99 |
100 | 系:D(Dept,Dno,Office,Dnum)
101 |
102 | 学会:M(Mname,Myear,Maddr,Mnum)
103 | ```
104 |
105 | #### (2)每个关系模式的**最小函数依赖集**如下:
106 |
107 | ##### A、学生S (Sno,Sname,Sbirth,Dept,Class,Rno) 的
108 |
109 | **最小函数依赖集**如下:
110 |
111 | Sno$\rightarrow$Sname,Sno$\rightarrow$Sbirth,Sno$\rightarrow$Class,Class$\rightarrow$Dept,DEPT$\rightarrow$Rno
112 |
113 | > 这玩意儿也不是闭包啊。
114 |
115 | > 就是所有的可以推出来的依赖的集合?
116 | >
117 | > 如果函数依赖集F满足下列条件,则称F为最小函数依赖集或最小覆盖。
118 | >
119 | > ① F中的任何一个函数依赖的右部仅含有一个属性;
120 | >
121 | > ② F中不存在这样一个函数依赖X→A,使得F与F-{X→A}等价;
122 | >
123 | > ③ F中不存在这样一个函数依赖X→A,X有真子集Z使得F-{X→A}∪{Z→A}与F等价。
124 |
125 | **传递依赖**如下:
126 |
127 | 由于Sno$\rightarrow$Dept,而Dept$\rightarrow$Sno ,Dept$\rightarrow$Rno(宿舍区)
128 |
129 |
130 |
131 | 所以Sno与Rno之间存在着传递函数依赖。
132 |
133 | 由于Class$\rightarrow$Dept,Dept $\rightarrow$ Class,Dept$\rightarrow$Rno
134 |
135 | 所以Class与Rno之间存在着传递函数依赖。
136 |
137 |
138 |
139 | 由于Sno$\rightarrow$Class,Class$\rightarrow$Sno,Class$\rightarrow$Dept
140 |
141 | 所以Sno与Dept之间存在着传递函数依赖。
142 |
143 |
144 |
145 | ##### B、班级C(Class,Pname,Dept,Cnum,Cyear)的
146 |
147 | **最小函数依赖集**如下:
148 |
149 | Class$\rightarrow$Pname,Class$\rightarrow$Cnum,Class→Cyear,Pname→Dept.
150 |
151 | 由于Class→Pname,Pname→Class,Pname→Dept
152 |
153 | 所以Class与Dept之间存在着传递函数依赖。
154 |
155 | ##### C、系D(Dept,Dno,Office,Dnum)的
156 |
157 | 最小函数依赖集如下:
158 |
159 | Dept→Dno,Dno→Dept,Dno→Office,Dno→Dnum
160 |
161 | 根据上述函数依赖可知,Dept与Office,Dept与Dnum之间不存在传递依赖。
162 |
163 | ##### D、学会M(Mname,Myear,Maddr,Mnum)的
164 |
165 | 最小函数依赖集如下:
166 |
167 | Mname→Myear,Mname→Maddr,Mname→Mnum
168 |
169 | 该模式不存在传递依赖。
170 |
171 | #### (3)各关系模式的候选码、外部码,全码如下:
172 |
173 | A、学生S候选码:Sno;外部码:Dept、Class;无全码
174 |
175 | B、班级C候选码:Class;外部码:Dept;无全码
176 |
177 | C、系D候选码:Dept或Dno;无外部码;无全码
178 |
179 | D、学会M候选码:Mname;无外部码;无全码
180 |
181 |
182 |
183 | ### 3 .试由amstrong 公理系统推导出下面三条推理规则:
184 |
185 | - 合并律
186 | 若X → Y,X → Z,则X → YZ
187 |
188 |
189 |
190 | - 分解律
191 | 若X → Y ,Z →Y,则X → Z
192 | 特别地,若X → YZ ,则X → Y,X → Z
193 |
194 |
195 |
196 | - 伪传递律
197 | 若X → Y,WY → Z,则WX → Z
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 | ### 5 .试举出3 个多值依赖的实例。
206 |
207 | 答:
208 |
209 | (1)关系模式MSC ( M , S , C )中,M 表示专业,S 表示学生,C 表示该专业的必修课。假设每个专业有多个学生,有一组必修课。设同专业内所有学生选修的必修课相同,实例关系如下。按照语义对于M 的每一个值M i , s 有一个完整的集合与之对应而不问C 取何值,所以M 一一S 。由于C 与S 的完全对称性,必然有M 一一C 成立。
210 |
211 | (2)关系模式ISA ( I , S , A )中,I 表示学生兴趣小组,S 表示学生,A 表示某兴趣小组的活动项目。假设每个兴趣小组有多个学生,有若干活动项目。每个学生必须参加所在兴趣小组的所有活动项目,每个活动项目要求该兴趣小组的所有学生参加。
212 | 按照语义有I 一一S , I 一一A 成立。
213 | (3)关系模式RDP ( R , D , P )中,R 表示医院的病房,D 表示责任医务人员,P 表示病人。假设每个病房住有多个病人,有多个责任医务人员负责医治和护理该病房的所有病人。
214 |
215 |
216 |
217 | ### 12.下面的结论哪些是正确的? 哪些是错误的? 对于错误的请给一个反例说明之。
218 |
219 | #### (1)任何一个二目关系是属于3NF。
220 |
221 | 答:正确。因为关系模式中只有两个属性,所以无传递。
222 |
223 | #### (2)任何一个二目关系是属于BCNF.
224 |
225 | 答: 正确。按BCNF的定义,若X→ Y,且Y不是X的子集时,每个决定因素都包含码,对于二目关系决定因素**必然包含码**。详细证明如下:(任何二元关系模式必定是BCNF)。
226 |
227 | 证明:设R为一个二目关系R(A1,A2),则属性A1和A2之间可能存在以下几种依赖关系:
228 |
229 | A、A1→ A2,但A2→ A1,则关系R的码为A1,决定因素都包含码,所以,R是BCNF。
230 |
231 | B、A1→ A2,A2→ A1,则关系R的码为A2,所以决定因素都包含码,R是BCNF。
232 |
233 | 包含码。R是BCNF。C、R的码为(A1,A2)(即A1→ A2,A2 → A1),决定因素都
234 |
235 | #### (3)任何一个二目关系是属于4NF.
236 |
237 | 答:正确。因为**只有两个属性,所以无非平凡的多值依赖**。
238 |
239 | > 若X → →Y 有,且**Z=Ø**,则称X → →Y为**平凡的多值依赖**
240 | > 否则(即Z不为空集),称X → →Y为**非平凡的多值依赖**
241 | >
242 | > 二目关系,只有X,Y必然没有Z,必然没有非平凡的多值依赖。
--------------------------------------------------------------------------------
/数据库系统概论/课后题/7 数据库设计.md:
--------------------------------------------------------------------------------
1 | 第7章 数据库设计
2 |
3 | [toc]
4 |
5 | ### 1.试述数据库设计过程。
6 |
7 | 答:这里只概要列出数据库设计过程的六个阶段:
8 |
9 | 1. 需求分析;
10 | 2. 概念结构设计;
11 | 3. 逻辑结构设计;
12 | 4. 数据库物理设计;
13 | 5. 数据库实施;
14 | 6. 数据库运行和维护。
15 |
16 | 这是一个完整的实际数据库及其应用系统的设计过程。不仅包括设计数据库本身,还包括数据库的实施、运行和维护。设计一个完善的数据库应用系统往往是上述六个阶段的**不断反复**。
17 |
18 |
19 |
20 | ### 2 .试述数据库设计过程各个阶段上的设计描述。
21 |
22 | 答:各阶段的设计要点如下:
23 |
24 | 1. 需求分析:准确了解与分析用户需求(包括数据与处理)。
25 | 2. 概念结构设计:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体 DBMS 的**概念模型。** E-R图
26 | 3. 逻辑结构设计:将概念结构转换为某个 DBMS 所支持的**数据模型**,并对其进行优化。
27 | 4. 数据库物理设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
28 | 5. 数据库实施:设计人员运用 DBMS 提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
29 | 6. 数据库运行和维护:在数据库系统运行过程中对其进行评价、调整与修改。
30 |
31 |
32 |
33 | ### 3 .试述数据库设计过程中, 结构设计部分形成的数据库模式。
34 |
35 | 答:数据库结构设计的不同阶段形成数据库的各级模式,即:
36 |
37 | 1. 在概念设计阶段形成独立于机器特点,独立于各个 DBMS 产品的概念模式,在本篇中就是 E-R 图
38 | 2. 在逻辑设计阶段将 E 一 R 图转换成具体的数据库产品支持的**数据模型**,如关系模型,形成数据库逻辑模式,然后在基本表的基础上再建立必要的视图 ( Vi 娜),形成数据的外模式;
39 | 3. 在物理设计阶段,根据 DBMS 特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。
40 |
41 |
42 |
43 | ### 4 .试述数据库设计的特点。
44 |
45 | 答:数据库设计既是一项涉及多学科的综合性技术又是一项庞大的工程项目。其主要特点有:
46 |
47 | ( l )数据库建设是硬件、软件和干件(技术与管理的界面)的结合。
48 |
49 | ( 2 )从软件设计的技术角度看,数据库设计应该和应用系统设计相结合,也就是说,整个设计过程中要把结构(数据)设计和行为(处理)设计密切结合起来。
50 |
51 |
52 |
53 | ### 5 .需求分析阶段的设计目标是什么?调查的内容是什么?
54 |
55 | 答:需求分析阶段的设计目标是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。调查的内容是“数据’夕和“处理”,即获得用户对数据库的如下要求:
56 |
57 | ( l )信息要求,指用户需要从数据库中获得信息的内容与性质,由信息要求可以导出数据要求,即在数据库中需要存储哪些数据;
58 |
59 | ( 2 )处理要求,指用户要完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是联机处理;
60 |
61 | ( 3 )安全性与完整性要求。
62 |
63 |
64 |
65 | ### 6 .数据字典的内容和作用是什么?
66 |
67 | 答:数据字典是系统中各类数据描述的集合。数据字典的内容通常包括:
68 |
69 | ( l )数据项;
70 |
71 | ( 2 )数据结构;
72 |
73 | ( 3 )数据流;
74 |
75 | ( 4 )数据存储;
76 |
77 | ( 5 )处理过程五个部分。
78 |
79 | 其中数据项是数据的最小组成单位,若干个数据项可以组成一个数据结构。数据字典通过对数据项和数据结构的定义来描述数据流和数据存储的逻辑内容。数据字典的作用:数据字典是关于数据库中数据的描述,在需求分析阶段建立,是下一步进行概念设计的基础,并在数据库设计过程中不断修改、充实、完盖。
80 |
81 |
82 |
83 | ### 7 .什么是数据库的概念结构?试述其特点和设计策略。
84 |
85 | 答:概念结构是信息世界的结构,即概念模型,其主要特点是:
86 |
87 | 1. 能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型;
88 | 2. 易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库设计成功的关键;
89 | 3. 易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充;
90 | 4. 易于向关系、网状、层次等各种数据模型转换。概念结构的设计策略通常有四种:
91 | 1. 自顶向下,即首先定义全局概念结构的框架,然后逐步细化;
92 | 2. 自底向上,即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构;
93 | 3. 逐步扩张,首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构;
94 | 4. 混合策略,即将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。
95 |
96 |
97 |
98 | ### 8 .什么叫数据抽象?试举例说明。
99 |
100 | 答:数据抽象是对实际的人、物、事和概念进行人为处理,抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。如“分类’夕这种抽象是:定义某一类概念作为现实世界中一组对象的类型。这些对象具有某些共同的特性和行为。它抽象了对象值和型之间的, ' i 5 member of ”的语义。在 E 一 R 模型中,实体型就是这种抽象。例如在学校环境中,李英是老师,表示李英是教师类型中的一员,则教师是实体型,李英是教师实体型中的一个实体值,具有教师共同的特性和行为:在某个系某个专业教学,讲授某些课程,从事某个方向的科研。
101 |
102 |
103 |
104 | ### 9 .试述数据库概念结构设计的重要性和设计步骤。
105 |
106 | 答:
107 |
108 | 重要性:数据库概念设计是整个数据库设计的关键,将在需求分析阶段所得到的应用需求首先抽象为概念结构,以此作为各种数据模型的共同基础,从而能更好地、更准确地用某一 DBMS 实现这些需求。
109 |
110 | 设计步骤:概念结构的设计方法有多种,其中最经常采用的策略是自底向上方法,该方法的设计步骤通常分为两步:第 1 步是抽象数据并设计局部视图,第 2 步是集成局部视图,得到全局的概念结构。
111 |
112 |
113 |
114 |
115 |
116 | ### 10 .为什么要视图集成?视图集成的方法是什么?
117 |
118 | 答:在对数据库系统进行概念结构设计时一般采用自底向上的设计方法,把繁杂的大系统分解子系统。首先设计各个子系统的局部视图,然后通过视图集成的方式将各子系统有机地融合起来,综合成一个系统的总视图。这样,设计清晰,由简到繁。由于数据库系统是从整体角度看待和描述数据的,因此数据不再面向某个应用而是整个系统。因此必须进行视图集成,使得数据库能被全系统的多个用户、多个应用共享使用。一般说来,视图集成可以有两种方式:
119 |
120 | ( l )多个分 E 一 R 图一次集成;
121 |
122 | ( 2 )逐步集成,用累加的方式一次集成两个分 E 一 R 图。
123 |
124 | 无论采用哪种方式,每次集成局部 E 一 R 图时都需要分两步走:
125 |
126 | ( l )合并,解决各分 E 一 R 图之间的冲突,将各分 E 一 R 图合并起来生成初步 E 一 R 图;
127 |
128 | ( 2 )修改和重构,消除不必要的冗余,生成基本 E 一 R 图。
129 |
130 |
131 |
132 | ### 11 .什么是数据库的逻辑结构设计?试述其设计步骤。
133 |
134 | 答:数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本 E 一 R 图转换为与选用的 DBMS 产品所支持的数据模型相符合的逻辑结构。设计步骤为 :
135 |
136 | 1. 将概念结构转换为一般的关系、网状、层次模型;
137 | 2. 将转换来的关系、网状、层次模型向特定 DBMS 支持下的数据模型转换;
138 | 3. 对数据模型进行优化。
139 |
140 |
141 |
142 | ### 14 .规范化理论对数据库设计有什么指导意义?
143 |
144 | 答:规范化理论为数据库设计人员判断关系模式的优劣提供了理论标准,可用以指导关系数据模型的优化,用来预测模式可能出现的问题,为设计人员提供了自动产生各种模式的算法工具,使数据库设计工作有了严格的理论基础。
145 |
146 |
147 |
148 | ### 15 .试述数据库物理设计的内容和步骤。
149 |
150 | 答:数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于给定的 DBMS 。为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构,就是数据库的物理设计的主要内容。数据库的物理设计步骤通常分为两步:
151 |
152 | ( l )确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;
153 |
154 | ( 2 )对物理结构进行评价,评价的重点是时间效率和空间效率。
155 |
156 |
157 |
158 | ### 16 .数据输入在实施阶段的重要性是什么?如何保证输入数据的正确性?
159 |
160 | 答:数据库是用来对数据进行存储、管理与应用的,因此在实施阶段必须将原有系统中的历史数据输入到数据库。数据量一般都很大,而且数据来源于部门中的各个不同的单位。数据的组织方式、结构和格式都与新设计的数据库系统有相当的差距,组织数据录入就要将各类源数据从各个局部应用中抽取出来,分类转换,最后综合成符合新设计的数据库结构的形式,输入数据库。因此这样的数据转换、组织入库的工作是相当费力费时的工作。特别是原系统是手工数据处理系统时,各类数据分散在各种不同的原始表格、凭证、单据之中,数据输入工作量更大。保证输入数据正确性的方法:为提高数据输入工作的效率和质量,应该针对具体的应用环境设计一个数据录入子系统,由计算机来完成数据入库的任务。在源数据入库之前要采用多种方法对它们进行检验,以防止不正确的数据入库。
161 |
162 |
163 |
164 | ### 17 .什么是数据库的再组织和重构造?为什么要进行数据库的再组织和重构造?
165 |
166 | 答:数据库的再组织是指:按原设计要求重新安排存储位置、回收垃圾、减少指针链等,以提高系统性能。数据库的重构造则是指部分修改数据库的模式和内模式,即修改原设计的逻辑和物理结构。数据库的再组织是不修改数据库的模式和内模式的。进行数据库的再组织和重构造的原因:数据库运行一段时间后,由于记录不断增、删、改,会使数据库的物理存储情况变坏,降低了数据的存取效率,数据库性能下降,这时 DBA 就要对数据库进行重组织。 DBMS 一般都提供用于数据重组织的实用程序。数据库应用环境常常发生变化,如增加新的应用或新的实体,取消了某些应用,有的实体与实体间的联系也发生了变化等,使原有的数据库设计不能满足新的需求,需要调整数据库的模式和内模式。这就要进行数据库重构造。
167 |
168 |
169 |
170 | ### 18 .现有一局部应用,包括两个实体:“出版社”和“作者”
171 |
172 | 这两个实体是多对多的联系,请读者自己设计适当的属性,画出 E 一 R 图,再将其转换为关系模型(包括关系名、属性名、码和完整性约束条件)。
173 |
174 | 答:
175 |
176 | 
177 |
178 | 关系模型为:
179 |
180 | 作者(作者号,姓名,年龄,性别,电话,地址)
181 |
182 | 出版社(出版社号,名称,地址,联系电话)
183 |
184 | 出版(作者号,出版社号,书的数量)
185 |
186 | 出版关系的主码作者号,出版社号分别参照作者关系的主码作者号和出版社关系的主码出版社号。
187 |
188 |
189 |
190 | ### 19 .请设计一个图书馆数据库
191 |
192 | 此数据库中对每个借阅者保存读者记录,包括:读者号,姓名,地址,性别,年龄,单位。对每本书存有:书号,书名,作者,出版社。对每本被借出的书存有读者号、借出日期和应还日期。要求:给出 E 一 R 图,再将其转换为关系模型。
193 |
194 | 答 :E 一 R 图为:
195 |
196 | 
197 |
198 | 关系模型为:
199 |
200 | 读者(读者号,姓名,地址,性别)
201 |
202 | 书(书号,书名,作者,出版社)
203 |
204 | 借书(读者号,书号,借出日期,年龄,单位,应还日期)
--------------------------------------------------------------------------------
/数据库系统概论/课后题/9 数据库查询与优化.md:
--------------------------------------------------------------------------------
1 | 第9章 关系查询处理和查询优化
2 |
3 | [toc]
4 |
5 | ### 1 .试述查询优化在关系数据库系统中的重要性和可能性。
6 |
7 | 答:重要性:关系系统的查询优化既是 RDBMS 实现的**关键技术**又是关系系统的**优点**所在。它减轻了用户选择存取路径的负担。用户只要提出“干什么”,不必指出“怎么干”。查询优化的优点不仅在于用户不必考虑如何最好地表达查询以获得较好的效率,而且在于系统可以比用户程序的优化做得更好。
8 |
9 | 可能性:这是因为:
10 |
11 | 1. 优化器可以从数据字典中获取许多统计信息,例如关系中的元组数、关系中每个属性值的分布情况、这些属性上是否有索引、是什么索引( B +树索引还是 HASH 索引或惟一索引或组合索引)等。优化器可以根据这些信息选择有效的执行计划,而用户程序则难以获得这些信息。
12 | 2. 如果数据库的物理统计信息改变了,系统可以自动对查询进行重新优化以选择相适应的执行计划。在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。
13 | 3. 优化器可以考虑数十甚至数百种不同的执行计划,从中选出较优的一个,而程序员一般只能考虑有限的几种可能性。
14 | 4. 优化器中包括了很多复杂的优化技术,这些优化技术往往只有最好的程序员才能掌握。系统的自动优化相当于使得所有人都拥有这些优化技术。
15 |
16 |
17 |
18 |
19 |
20 | ### 2 .对学生一课程数据库有如下的查询
21 |
22 | ```sql
23 | SELECT Cname
24 | FROM Student,Course, SC
25 | WHERE Student.Sno=SC.Sno AND
26 | SC.Cno=Course.Cno AND
27 | Student.Sdept='IS';
28 | ```
29 |
30 | 此查询要求信息系学生选修了的所有课程名称。试画出用关系代数表示的语法树,并用关系代数表达式优化算法**对原始的语法树进行优化处理**,画出优化后的标准语法树。
31 |
32 | 答:
33 |
34 | 
35 |
36 | 很显然可以看到选择运算被先做了,这样可以减少后序的连接操作
37 |
38 | 
39 |
40 |
41 |
42 | ### 3 .试述查询优化的一般准则。
43 |
44 | 答:下面的优化策略一般能提高查询效率:
45 | ( l )选**择运算应尽可能先做**;
46 | ( 2 )把**投影运算和选择运算同时进行**;
47 | ( 3 )把投影同其前或其后的双目运算结合起来执行;
48 | ( 4 )把某些选择同在它前面要执行的笛卡儿积结合起来成为一个连接运算;
49 | ( 5 )找出公共子表达式;(这个其实都不咋用)
50 | ( 6 )选取合适的连接算法。(自然连接,等值连接还是其他方法)
51 |
52 |
53 |
54 | ### 4 .试述查询优化的一般步骤。
55 |
56 | 答:各个关系系统的优化方法不尽相同,大致的步骤可以归纳如下:
57 | ( l )把查询转换成某种内部表示,通常用的内部表示是**语法树**。
58 | ( 2 )把语法树转换成标准(优化)形式。即利用优化算法,把原始的语法树转换成优化的形式。
59 | ( 3 )选择低层的存取路径。
60 | ( 4 )生成查询计划,选择代价最小的。
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/20200312165124563.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/20200312165124563.png
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/image-20200229175018041.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/image-20200229175018041.png
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/image-20200229175032315.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/image-20200229175032315.png
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/image-20200229175042917.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/image-20200229175042917.png
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/image-20200303120257592.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/image-20200303120257592.png
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/image-20200303120322679.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/image-20200303120322679.png
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/image-20200303120334317.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/image-20200303120334317.png
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/image-20200316203708279.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/image-20200316203708279.png
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/image-20200411232302789.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/image-20200411232302789.png
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps1.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps10.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps11.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps11.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps12.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps12.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps13.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps13.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps14.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps14.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps15.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps15.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps19.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps19.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps2.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps20.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps21.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps21.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps22.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps22.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps23.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps23.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps24.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps24.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps25.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps25.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps26.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps26.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps27.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps27.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps28.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps28.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps29.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps29.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps3.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps30.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps30.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps31.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps31.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps4.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps5.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps6.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps7.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps8.jpg
--------------------------------------------------------------------------------
/数据库系统概论/课后题/Picture/wps9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/数据库系统概论/课后题/Picture/wps9.jpg
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/IMG_20200508_220203.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/IMG_20200508_220203.jpg
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304164828009.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304164828009.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304164835928.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304164835928.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304165235753.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304165235753.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304172235909.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304172235909.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304172327254.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304172327254.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304173933365.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304173933365.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304180930750.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304180930750.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304183740714.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304183740714.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304183854792.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304183854792.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304185042019.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304185042019.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304190239294.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304190239294.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304191100234.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304191100234.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304192906641.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304192906641.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304193107603.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304193107603.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304193421250.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304193421250.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304193739874.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304193739874.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304193958366.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304193958366.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304194303818.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304194303818.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304194322213.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304194322213.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304201328805.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304201328805.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200304201704195.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200304201704195.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200330162510473.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200330162510473.png
--------------------------------------------------------------------------------
/汇编语言/1_预备知识.assets/image-20200331181315782.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/1_预备知识.assets/image-20200331181315782.png
--------------------------------------------------------------------------------
/汇编语言/2_寻址方式.assets/image-20200305114618414.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/2_寻址方式.assets/image-20200305114618414.png
--------------------------------------------------------------------------------
/汇编语言/2_寻址方式.assets/image-20200305145037230.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/2_寻址方式.assets/image-20200305145037230.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305181843207.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305181843207.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305185238425.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305185238425.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305185301835.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305185301835.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305191455924.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305191455924.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305201133225.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305201133225.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305203757352.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305203757352.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305203840719.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305203840719.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305204411034.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305204411034.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305211922294.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305211922294.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305213900416.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305213900416.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305214215984.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305214215984.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305214442647.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305214442647.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305214744288.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305214744288.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305215000663.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305215000663.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305215027638.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305215027638.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305215218613.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305215218613.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305215235881.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305215235881.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305215359758.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305215359758.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305215550847.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305215550847.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305215624987.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305215624987.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200305215746353.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200305215746353.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200306121454635.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200306121454635.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200306121856979.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200306121856979.png
--------------------------------------------------------------------------------
/汇编语言/3_宏汇编语言.assets/image-20200306122039809.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/3_宏汇编语言.assets/image-20200306122039809.png
--------------------------------------------------------------------------------
/汇编语言/4_程序设计的基本方法.assets/image-20200306163920607.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/4_程序设计的基本方法.assets/image-20200306163920607.png
--------------------------------------------------------------------------------
/汇编语言/4_程序设计的基本方法.assets/image-20200306175120648.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/4_程序设计的基本方法.assets/image-20200306175120648.png
--------------------------------------------------------------------------------
/汇编语言/4_程序设计的基本方法.assets/image-20200306180305729.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/4_程序设计的基本方法.assets/image-20200306180305729.png
--------------------------------------------------------------------------------
/汇编语言/4_程序设计的基本方法.md:
--------------------------------------------------------------------------------
1 | [toc]
2 |
3 | 本章的学习难点
4 | (1) 无条件转移指令的灵活运用
5 | (2) 条件转移指令的正确选择
6 | (3) 分支出口的安排与汇合
7 | (4) 循环程序的结构和控制循环的方法
8 | (5) CALL与RET指令的执行过程,堆栈操作
9 | (6) 综合应用前几章的内容,编写和调试程序
10 |
11 | # 4.1 概述
12 |
13 | 汇编语言程序设计的一般步骤:
14 | (1)分析问题,选择合适的解题方法。
15 | (2)根据具体问题,确定输入输出数据的格式。
16 | (3)分配存贮区并给变量命名(包括分配寄存器)。
17 | (4)绘制程序的**流程图**,即将解题方法和步骤用程序流程图的形式表示出来。
18 | (5)**根据流程图编写程序**。
19 | (6)**静态检查**与动态调试
20 |
21 | > 写流程图是还比较方便后面编写程序
22 | >
23 | > 静态检查就是走查,能找出许多问题。
24 |
25 | 几种流程框图的说明见书P99
26 |
27 | # 4.2 顺序程序设计
28 |
29 | 这里就不讲了,上节就讲过了。
30 | 书 P145, 作业 4.1
31 |
32 | 第二次上机题:
33 | 目的:复习、巩固第三章学习的指令
34 |
35 | # 4.3 分支程序设计
36 |
37 |
38 |
39 | ## 4.3.1 简单条件转移(10条)
40 |
41 | 根据单个标志位 CF、ZF、SF、OF、PF的值确定是否转移。
42 |
43 | 语句格式: **[标号:] 操作符 短标号**
44 |
45 | > 短标号是一个标号。该标号代表条件成立时,想转移到的目的地址。若该目的地址与当前(IP)之间的字节距离在-128 和 127之间,则称该标号为短标号。
46 | >
47 | > 比如 JE NEXT
48 |
49 |
50 |
51 | |指令名称|助记符|转移条件|
52 | |:--:|:---|:---|
53 | |相等/等于0转 |JZ / JE | ZF=1时,转移|
54 | |不相等/不等于0转|JNZ / JNE| ZF=0时,转移|
55 | |为负转 |JS | SF=1时,转移|
56 | |为正转 |JNS |SF=0时,转移|
57 | |溢出转 |JO | OF=1时,转移|
58 | |未溢出转 |JNO | OF=0时,转移|
59 | |进位转 |JC | CF=1时,转移|
60 | |无进位转 |JNC | CF=0时,转移|
61 | |偶转移 |JP / JPE | PF=1时,偶转移|
62 | |奇转移 |JNP / JPO | PF=0时,奇转移|
63 |
64 | > 例如,JZ / JE ZF=1时,转移
65 | >
66 | > 结果相等,即A-B=0,即ZF=1时,即结果为0时。跳转
67 | > 这个逻辑又和bool判断不同。
68 | >
69 | > 划线部分对有符号数。
70 |
71 | ## 4.3.2 无符号数条件转移指令(4条)
72 |
73 | ==Above,Blow==
74 |
75 | ### JA / JNBE
76 |
77 | a>b转移
78 | 则a-b>0,即a-b一定无进位,且大于0。
79 |
80 | 当 CF=0 且 ZF=0时,转移
81 |
82 | ### JAE / JNB
83 |
84 | a>=b转移
85 | 则a-b一定无进位,有可能a-b=0。
86 |
87 | 当 CF=0 或者 ZF=1时,转移
88 |
89 | ### JB / JNAE
90 |
91 | a 顺带一提,无符号数才有进位,看CF,有符号数才有溢出,看OF
95 |
96 | 当 CF=1 且 ZF=0时,转移
97 |
98 | ### JBE / JNA
99 |
100 | a<=b转移
101 | 则a-b<=0,变负数,有进位,可能为0。
102 |
103 | 当 CF=1 或者 ZF=1时,转移
104 |
105 |
106 |
107 | ## 4.3.3 有符号数条件转移指令
108 |
109 | ==Great,Little==
110 |
111 | ### JG / JNLE 短标号
112 |
113 | 将(AX),(BX)中的数据当成有符号数,
114 | 执行 (AX) – (BX)>0, 则SF、OF会相等,ZF=0
115 |
116 | > 为什么说SF=OF
117 | > 正常情况下 SF=OF=0,无溢出,为正。
118 | > 特殊情况,例如(AX)>0,(BX)<0 ,结果一定是大于0的,但可能发生溢出了,导致结果变成负的。所以SF=OF=1。实际上(AX)>(BX)是成立的。
119 |
120 | **当 SF=OF 且 ZF=0时**,转移
121 |
122 | ### JGE / JNL 短标号
123 |
124 | 可能相等。
125 |
126 | 当 SF=OF 或者 ZF=1时,转移
127 |
128 | ### JL / JNGE 短标号
129 |
130 | 将(AX),(BX)中的数据当成有符号数,
131 | 执行 (AX) – (BX )< 0
132 | 此时若SF=1,那么铁定无溢出 OF=0
133 | 另一种情况(AX)<0,(BX)>0,这时候可能会溢出,反而会使结果成正数,即OF=1,SF=0
134 |
135 | **当 SF≠OF 且 ZF=0时**,转移
136 |
137 | ### JLE / JNG 短标号
138 |
139 | 当 SF≠OF 或者 ZF=1时,转移
140 |
141 | ## 4.3.4 无条件转移指令
142 |
143 | | 格式 | 名称 | 功能 | 可用寻址方式 |
144 | | -------- | -------- | ---------------------------------- | ------------------ |
145 | | JMP 标号 | 段内直接 | (IP/EIP)+位移量 → IP/EIP | 立即方式 |
146 | | JMP OPD | 段内间接 | (OPD) → IP/EIP | 寄存器、存储器方式 |
147 | | JMP 标号 | 段间直接 | 标号的EA → IP/EIP 段首址 → CS | 立即方式 |
148 | | JMP OPD | 段间间接 | (OPD) → IP/EIP (OPD+2/4) → CS | 存储器方式 |
149 |
150 | 设在数据段中有:
151 | BUF DW L1 ; L1为标号
152 |
153 | **功能等价的转移指令:**
154 |
155 | 1. JMP L1
156 | 2. JMP BUF
157 | 3. LEA BX , BUF
158 | JMP WORT PTR [BX]
159 | 4. MOV BX , BUF
160 | JMP BX
161 |
162 | **无条件转移指令的转移范围不受限制**。程序段A,B的长度均大于128个字节都没事。
163 |
164 | #### 关于段间间接转移
165 |
166 | 
167 |
168 | 所以需要定义标号为双字,分别存段址和EA
169 | (OPD) → IP/EIP (OPD+2/4) → CS
170 |
171 | ## 4.3.5 条件转移伪指令
172 |
173 | 条件控制流伪指令 P323
174 |
175 | 书P253也有介绍
176 |
177 | ```
178 | .IF 条件表达式
179 | 语句序列
180 | .ELSEIF 条件表达式
181 | 语句序列
182 | ……
183 | .ELSE
184 | 语句序列
185 | .ENDIF
186 | ```
187 |
188 | ## 4.3.6 分支程序设计举例
189 |
190 | 下面这个程序用于计算0-9的立方值,之前有错误,INT 21H总不记得加H,这样导致EXIT语句没有成功退出DOS调用,继续跳到ERR去了
191 |
192 | ```asm
193 | .386
194 | DATA SEGMENT USE16
195 | INPUT DB 'Please input X(0~9):$'
196 | TAB DW 0,1,8,27,64,125,216,343,512,729
197 | X DB ?
198 | XXX DW ?
199 | INERR DB 0AH,0DH,'Input error! try again',0AH,0DH,'$'
200 | DATA ENDS
201 |
202 | STACK SEGMENT USE16 STACK
203 | DB 200 DUP(0)
204 | STACK ENDS
205 |
206 | CODE SEGMENT USE16
207 | ASSUME CS:CODE,DS:DATA,SS:STACK
208 | BEGIN: MOV AX,DATA
209 | MOV DS,AX
210 | NEXT: MOV DX,OFFSET INPUT
211 | MOV AH,9
212 | INT 21H
213 | MOV AH,1
214 | INT 21H
215 | CMP AL,'0'
216 | JB ERR
217 | CMP AL,'9'
218 | JA ERR
219 | AND AL,0FH;因为输入的是Ascii码值,如输入3,实际上是33H,要^0FH之后变成03H,才是数字3
220 | MOV X,AL
221 | XOR EBX,EBX
222 | MOV BL,AL
223 | MOV AX,TAB[EBX*2]
224 | MOV XXX,AX
225 | EXIT: MOV AH,4CH
226 | INT 21H
227 | ERR: MOV DX,OFFSET INERR
228 | MOV AH,9
229 | INT 21H
230 | JMP NEXT
231 | CODE ENDS
232 | END BEGIN
233 | ```
234 |
235 |
236 |
237 | # 4.4 循环程序设计
238 |
239 | ## 1. 循环程序的结构
240 |
241 |
242 |
243 | 就像do while以及 while语句一样,第一个一定会先执行一次
244 |
245 | ## 2. 循环控制方法
246 |
247 | ### (1)计数控制法
248 |
249 | #### 1. LOOP 标号
250 |
251 | (CX / ECX) -1 → CX / ECX
252 | 若 (CX / ECX) **不为0**, 则转标号处执行
253 | 基本等价于: DEC CX / ECX
254 | JNZ 标号
255 |
256 | (LOOP指令**对标志位无影响 !**)
257 |
258 | #### 2. JCXZ 标号 / JECXZ 标号
259 |
260 | 若 (CX / ECX) 为0, 则转标号处执行。
261 |
262 | #### 3. LOOPE /LOOPZ 标号
263 |
264 | ( CX / ECX )-1 → CX / ECX
265 | 若 (CX / ECX) **不为0**, 且**ZF=1**,则转标号处执行。
266 | (**等于或为0循环转移指令,** 本指令对标志位无影响)
267 |
268 | #### 4. LOOPNE /LOOPNZ 标号
269 |
270 | (CX / ECX) -1 → CX / ECX
271 | 若CX / ECX)≠0, 且ZF=0,则转标号处执行。
272 |
273 | #### 5.总结
274 |
275 | 1. 所有的循环指令对(cx/ecx)-1的操作**不影响标志位**。(所以ZF=1怎么来的?它如果说不影响除ZF以外的标志位,我比较理解)
276 | 2. 16位段中,默认使用CX寄存器,32位段默认用ECX寄存器。
277 |
278 | ### (2)条件控制法
279 |
280 | 循环次数未知,相当于if(XX) break;
281 |
282 | 这个就要自己设计跳出条件
283 |
284 | ```SQL
285 | MOV CL,0
286 | L1: AND AX,AX
287 | JZ EXIT;AX为0时跳出
288 | SAL AX,1;将AX的最高位移到CF中
289 | JNC L;CF为0转L1
290 | INC CL
291 | JMP L1
292 | ;这个程序用来统计AX中1的个数。
293 | ```
294 |
295 |
296 |
297 | ## 3. 单重循环程序设计
298 |
299 | 见P116
300 |
301 | - [x] 多看例题
302 |
303 | ## 4. 多重循环程序设计
304 |
305 | 见P121
306 |
307 | - [x] 多看例题,把例题都看一遍
308 |
309 | # 4.5 子程序设计
310 |
311 | ## 4.5.1 子程序的概念
312 |
313 | 将经常要使用的或者重复的程序段设计成可供反复调用的独立程序段,在需要时,用控制指令调用它,在执行完后,再返回调用它的程序中继续执行。这样的独立程序段称为子程序。
314 |
315 | ## 4.5.2 子程序的定义
316 |
317 | ```asm
318 | 主程序中 CALL 子程序名
319 |
320 | 子程序名 PROC NEAR 或者 FAR
321 | ……
322 | ……
323 | RET ;返回
324 | 子程序名 ENDP
325 | ```
326 |
327 | - NEAR可以省略
328 | - FAR是在不同的段中需加的。
329 | - proc代表——procedure 程序。
330 |
331 | ## 4.5.3 子程序的调用与返回
332 |
333 | #### 调用
334 |
335 | 段内直接 CALL 过程名
336 | 段间直接 CALL FAR PTR 过程名
337 | 段内间接 CALL **WORD** PTR OPD ;word是因为要纪录EA
338 | 段间间接 CALL **DWORD** PTR OPD ;DWORD是因为两个字分别记录段址和EA、
339 |
340 | #### 返回
341 |
342 | 返回指令: RET
343 |
344 | #### CPU 要做的工作:
345 |
346 | (1) 保存断点
347 |
348 | 直接:(IP / EIP) →↓ (SP / ESP)
349 |
350 | 间接:(CS) →↓(SP / ESP)
351 | (IP / EIP) →↓(SP / ESP)
352 |
353 | (2)将子程序的地址送 CS, IP
354 |
355 | 段内:子程序的入口偏移地址→ IP / EIP
356 |
357 | 段间:子程序的入口偏移地址→ IP /EIP
358 | 子程序的段地址→ CS
359 |
360 | (3) 返回指令
361 |
362 | 段间返回:
363 | (1) ↑(SP) → IP / EIP
364 | (2) ↑(SP) → CS
365 |
366 | 段内返回:
367 | ↑(SP) → IP /EIP
368 |
369 | ## 4.5.4 子程序调用现场的保护方法
370 |
371 | 可以在主程序中做,也可以在子程序中做,一般在子程序里做。
372 |
373 | 可以用1.3.2小节,书P11的指令,PUSHA/POPA,PUSHAD/POPAD,这样来保护和恢复全部通用寄存器的内容。
374 |
375 | ## 4.5.5 主程序与子程序间的参数传递
376 |
377 | 到底用哪种参数传递法,视情况而定,有时混用
378 |
379 | 详见P134的4.5.6 子程序及其调用举例
380 |
381 | ### 1. 寄存器法
382 |
383 | 9号,10号调用就是用的此法。
384 |
385 | 就是子程序的入口参数和出口参数都放在约定的寄存器中。
386 |
387 | 优点:信息传递快,编程方便,节省内存单元。
388 |
389 | 缺点:只适用于要传递参数较少的状况
390 | 还要注意一点,出口参数的寄存器不需要现场保护,因为子程序要交给主程序的,不能现场保护和恢复后,把要交的结果给抵消了。
391 |
392 | ### 2. 约定单元法
393 |
394 | 把入口参数和出口参数都放在约定好的存储单元中
395 |
396 | 优点:不易出错,参数数量可多可少。
397 |
398 | 缺点:占用一定的存储单元,增加了编程的复杂性。
399 |
400 | ### 3. 堆栈法
401 |
402 | 放在公用的堆栈区
403 |
404 | 优点:较高的灵活性,参数数量可多可少
405 |
406 | 缺点:参数和子程序的返回地址混杂在一起,存取参数时必须小心的计算它在栈中的位置
407 |
408 |
409 |
410 | ---
411 |
412 | - 0DH回车,0AH换行,这两个写的顺序无所谓。但要在一起。
--------------------------------------------------------------------------------
/汇编语言/5_程序设计的其他方法和技术.assets/IMG_20200509_165339.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/5_程序设计的其他方法和技术.assets/IMG_20200509_165339.jpg
--------------------------------------------------------------------------------
/汇编语言/5_程序设计的其他方法和技术.assets/IMG_20200509_165550.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/5_程序设计的其他方法和技术.assets/IMG_20200509_165550.jpg
--------------------------------------------------------------------------------
/汇编语言/5_程序设计的其他方法和技术.assets/IMG_20200509_172107.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/5_程序设计的其他方法和技术.assets/IMG_20200509_172107.jpg
--------------------------------------------------------------------------------
/汇编语言/5_程序设计的其他方法和技术.assets/image-20200307214727932.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/5_程序设计的其他方法和技术.assets/image-20200307214727932.png
--------------------------------------------------------------------------------
/汇编语言/6_输入输出和WIN32编程.assets/image-20200305114618414.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/6_输入输出和WIN32编程.assets/image-20200305114618414.png
--------------------------------------------------------------------------------
/汇编语言/6_输入输出和WIN32编程.assets/image-20200305145037230.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/6_输入输出和WIN32编程.assets/image-20200305145037230.png
--------------------------------------------------------------------------------
/汇编语言/6_输入输出和WIN32编程.assets/image-20200308185336054.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/6_输入输出和WIN32编程.assets/image-20200308185336054.png
--------------------------------------------------------------------------------
/汇编语言/6_输入输出和WIN32编程.assets/image-20200308191413472.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/6_输入输出和WIN32编程.assets/image-20200308191413472.png
--------------------------------------------------------------------------------
/汇编语言/6_输入输出和WIN32编程.assets/image-20200308191440370.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/6_输入输出和WIN32编程.assets/image-20200308191440370.png
--------------------------------------------------------------------------------
/汇编语言/6_输入输出和WIN32编程.assets/image-20200308191519136.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/6_输入输出和WIN32编程.assets/image-20200308191519136.png
--------------------------------------------------------------------------------
/汇编语言/6_输入输出和WIN32编程.assets/image-20200308192141107.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/6_输入输出和WIN32编程.assets/image-20200308192141107.png
--------------------------------------------------------------------------------
/汇编语言/6_输入输出和WIN32编程.assets/image-20200308192420551.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/6_输入输出和WIN32编程.assets/image-20200308192420551.png
--------------------------------------------------------------------------------
/汇编语言/6_输入输出和WIN32编程.assets/image-20200308193344868.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/6_输入输出和WIN32编程.assets/image-20200308193344868.png
--------------------------------------------------------------------------------
/汇编语言/6_输入输出和WIN32编程.assets/image-20200308194116922.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/6_输入输出和WIN32编程.assets/image-20200308194116922.png
--------------------------------------------------------------------------------
/汇编语言/6_输入输出和WIN32编程.assets/image-20200325221348233.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/6_输入输出和WIN32编程.assets/image-20200325221348233.png
--------------------------------------------------------------------------------
/汇编语言/6_输入输出和WIN32编程.assets/image-20200325224148214.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/6_输入输出和WIN32编程.assets/image-20200325224148214.png
--------------------------------------------------------------------------------
/汇编语言/6_输入输出和WIN32编程.assets/image-20200327182051547.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编语言/6_输入输出和WIN32编程.assets/image-20200327182051547.png
--------------------------------------------------------------------------------
/汇编部分代码及软件/代码/2.asm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/代码/2.asm
--------------------------------------------------------------------------------
/汇编部分代码及软件/代码/2.lst:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/代码/2.lst
--------------------------------------------------------------------------------
/汇编部分代码及软件/代码/P117.asm:
--------------------------------------------------------------------------------
1 | .386
2 | DATA SEGMENT USE16
3 | BUF DW -5,100,34,20,-1,-1999,0,300,24,-449
4 | N = ($-BUF)/2
5 | BUF1 DW N DUP(?) ;正数存储
6 | BUF2 DW N DUP(?) ;负数存储
7 | DATA ENDS
8 | STACK SEGMENT USE16 STACK
9 | DB 200 DUP(0)
10 | STACK ENDS
11 | CODE SEGMENT USE16
12 | ASSUME CS:CODE,DS:DATA,SS:STACK
13 | BEGIN: MOV AX,DATA
14 | MOV DS,AX
15 | LEA BX,BUF
16 | LEA SI,BUF1
17 | LEA DI BUF2
18 | MOV CX,N
19 | LOPA: MOV AX,[BX] ;BX只是存了EA,所以要加[]取EA,然后再把(EA)给AX
20 | CMP AX,0
21 | JGE L1 ;当前元素非负,转L1
22 | MOV [DI],AX ;把AX的内容给[DI]
23 | ADD DI,2
24 | JMP NEXT
25 | L1: MOV [SI],AX
26 | ADD SI,2
27 | NEXT: ADD BX,2
28 | DEC CX
29 | JNZ LOPA
30 | MOV AH,4CH
31 | INT 21H
32 | CODE ENDS
33 | END BEGIN
--------------------------------------------------------------------------------
/汇编部分代码及软件/代码/P118.asm:
--------------------------------------------------------------------------------
1 | .386
2 | DATA SEGMENT USE16
3 | BUF DB 'add ax, bx',0DH,0AH
4 | DB 'sub cx, 10',0DH,0AH
5 | DB 'mov dx, 1234h',0DH,0AH,'$'
6 | DATA ENDS
7 | STACK SEGMENT USE16 STACK
8 | DB 200 DUP(0)
9 | STACK ENDS
10 | CODE SEGMENT USE16
11 | ASSUME DS:DATA,SS:STACK,CS:CODE
12 | BEGIN: MOV AX,DATA
13 | MOV DS,AX
14 | LEA BX,BUF
15 | LOPA: MOV DL,[BX]
16 | CMP DL,'$'
17 | JE EXIT
18 | CMP DL,'a'
19 | JB L1;如果DL的内容不是小写字母,转L1
20 | CMP DL,'z'
21 | JA L1;
22 | SUB DL,20H
23 | L1: MOV AH,2
24 | INT 21H;2号调用,输出DL的内容
25 | INC BX
26 | JMP LOPA
27 | EXIT: MOV AH,4CH
28 | INT 21
29 | CODE ENDS
30 | END BEGIN
--------------------------------------------------------------------------------
/汇编部分代码及软件/代码/hello.asm:
--------------------------------------------------------------------------------
1 | data segment
2 | out1 db 'Hello world$'
3 | out2 db 'My name is DJX$'
4 | data ends
5 |
6 | code segment
7 | assume cs:code; ds:data
8 | start:
9 | mov ax,data
10 | mov ds,ax
11 |
12 | lea dx,out1
13 | mov ah,9
14 | int 21h
15 |
16 | mov dl,0ah
17 | mov ah,2
18 | int 21h
19 | mov dl,0dh
20 | mov ah,2
21 | int 21h
22 |
23 | lea dx,out2
24 | mov ah,9
25 | int 21h
26 |
27 | mov ah,4ch
28 | int 21h
29 | code ends
30 | end start
--------------------------------------------------------------------------------
/汇编部分代码及软件/代码/hello.lst:
--------------------------------------------------------------------------------
1 | Microsoft (R) Macro Assembler Version 6.11 03/11/20 14:57:27
2 | tempfile.asm Page 1 - 1
3 |
4 |
5 | 0000 data segment
6 | 0000 48 65 6C 6C 6F 20 out1 db 'Hello world$'
7 | 77 6F 72 6C 64 24
8 | 000C 4D 79 20 6E 61 6D out2 db 'My name is DJX$'
9 | 65 20 69 73 20 44
10 | 4A 58 24
11 | 001B data ends
12 |
13 | 0000 code segment
14 | assume cs:code; ds:data
15 | 0000 start:
16 | 0000 B8 ---- R mov ax,data
17 | 0003 8E D8 mov ds,ax
18 |
19 | 0005 8D 16 0000 R lea dx,out1
20 | 0009 B4 09 mov ah,9
21 | 000B CD 21 int 21h
22 |
23 | 000D B2 0A mov dl,0ah
24 | 000F B4 02 mov ah,2
25 | 0011 CD 21 int 21h
26 | 0013 B2 0D mov dl,0dh
27 | 0015 B4 02 mov ah,2
28 | 0017 CD 21 int 21h
29 |
30 | 0019 8D 16 000C R lea dx,out2
31 | 001D B4 09 mov ah,9
32 | 001F CD 21 int 21h
33 |
34 | 0021 B4 4C mov ah,4ch
35 | 0023 CD 21 int 21h
36 | 0025 code ends
37 | end start
38 | Microsoft (R) Macro Assembler Version 6.11 03/11/20 14:57:27
39 | tempfile.asm Symbols 2 - 1
40 |
41 |
42 |
43 |
44 | Segments and Groups:
45 |
46 | N a m e Size Length Align Combine Class
47 |
48 | code . . . . . . . . . . . . . . 16 Bit 0025 Para Private
49 | data . . . . . . . . . . . . . . 16 Bit 001B Para Private
50 |
51 |
52 | Symbols:
53 |
54 | N a m e Type Value Attr
55 |
56 | out1 . . . . . . . . . . . . . . Byte 0000 data
57 | out2 . . . . . . . . . . . . . . Byte 000C data
58 | start . . . . . . . . . . . . . L Near 0000 code
59 |
60 | 0 Warnings
61 | 0 Errors
62 |
--------------------------------------------------------------------------------
/汇编部分代码及软件/代码/test.asm:
--------------------------------------------------------------------------------
1 | .386
2 | DATA SEGMENT USE16
3 | INPUT DB 'Please input X(0~9):$'
4 | TAB DW 0,1,8,27,64,125,216,343,512,729
5 | X DB ?
6 | XXX DW ?
7 | INERR DB 0AH,0DH,'Input error! try again',0AH,0DH,'$'
8 | DATA ENDS
9 |
10 | STACK SEGMENT USE16 STACK
11 | DB 200 DUP(0);缓冲�?
12 | STACK ENDS
13 |
14 | CODE SEGMENT USE16
15 | ASSUME CS:CODE,DS:DATA,SS:STACK
16 | BEGIN: MOV AX,DATA
17 | MOV DS,AX
18 | NEXT: LEA DX,INPUT
19 | MOV AH,9
20 | INT 21;输出Input
21 | MOV AH,1
22 | INT 21H;输入一个值到AL
23 | CMP AL,'0'
24 | JB ERR
25 | CMP AL,'9'
26 | JA ERR
27 | AND AL,0FH;这个操作有什么意义?不是AL不变么�?
28 | MOV X,AL
29 | XOR EBX,EBX
30 | MOV BL,AL
31 | MOV AX,TAB[EBX*2]
32 | MOV XXX,AX
33 | EXIT: MOV AH,4CH
34 | INT 21
35 | ERR: MOV DX,OFFSET INERR
36 | MOV AH,9
37 | INT 21H
38 | JMP NEXT
39 | CODE ENDS
40 | END BEGIN
41 |
42 |
43 |
--------------------------------------------------------------------------------
/汇编部分代码及软件/代码/test.lst:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/代码/test.lst
--------------------------------------------------------------------------------
/汇编部分代码及软件/代码/test2.asm:
--------------------------------------------------------------------------------
1 | .386
2 | DATA SEGMENT USE16
3 | A1 DW 11
4 | B1 DW 23
5 | C1 DW 13
6 | D1 DW 41
7 | E1 DW 0
8 | F1 EQU 55
9 | DATA ENDS
10 | STACK SEGMENT USE16 STACK
11 | DB 200 DUP(?)
12 | STACK ENDS
13 | CODE SEGMENT USE16
14 | ASSUME DS:DATA, SS:STACK, CS:CODE
15 | START: MOV AX, DATA
16 | MOV DS, AX
17 | MOV AX, A1
18 | ADD AX, B1
19 | SUB AX, C1
20 | SAR AX, 3
21 | IMUL AX, F1
22 | ADD AX, D1
23 | MOV E1, AX
24 | MOV AH, 4CH
25 | INT 21H
26 | CODE ENDS
27 | END START
--------------------------------------------------------------------------------
/汇编部分代码及软件/代码/test2.lst:
--------------------------------------------------------------------------------
1 | Microsoft (R) Macro Assembler Version 6.11 03/11/20 14:32:31
2 | tempfile.asm Page 1 - 1
3 |
4 |
5 | .386
6 | 0000 DATA SEGMENT USE16
7 | 0000 000B A1 DW 11
8 | 0002 0017 B1 DW 23
9 | 0004 000D C1 DW 13
10 | 0006 0029 D1 DW 41
11 | 0008 0000 E1 DW 0
12 | = 0037 F1 EQU 55
13 | 000A DATA ENDS
14 | 0000 STACK SEGMENT USE16 STACK
15 | 0000 00C8 [ DB 200 DUP(?)
16 | 00
17 | ]
18 | 00C8 STACK ENDS
19 | 0000 CODE SEGMENT USE16
20 | ASSUME DS:DATA, SS:STACK, CS:CODE
21 | 0000 B8 ---- R START: MOV AX, DATA
22 | 0003 8E D8 MOV DS, AX
23 | 0005 A1 0000 R MOV AX, A1
24 | 0008 03 06 0002 R ADD AX, B1
25 | 000C 2B 06 0004 R SUB AX, C1
26 | 0010 C1 F8 03 SAR AX, 3
27 | 0013 6B C0 37 IMUL AX, F1
28 | 0016 03 06 0006 R ADD AX, D1
29 | 001A A3 0008 R MOV E1, AX
30 | 001D B4 4C MOV AH, 4CH
31 | 001F CD 21 INT 21H
32 | 0021 CODE ENDS
33 | END START
34 | Microsoft (R) Macro Assembler Version 6.11 03/11/20 14:32:31
35 | tempfile.asm Symbols 2 - 1
36 |
37 |
38 |
39 |
40 | Segments and Groups:
41 |
42 | N a m e Size Length Align Combine Class
43 |
44 | CODE . . . . . . . . . . . . . . 16 Bit 0021 Para Private
45 | DATA . . . . . . . . . . . . . . 16 Bit 000A Para Private
46 | STACK . . . . . . . . . . . . . 16 Bit 00C8 Para Stack
47 |
48 |
49 | Symbols:
50 |
51 | N a m e Type Value Attr
52 |
53 | A1 . . . . . . . . . . . . . . . Word 0000 DATA
54 | B1 . . . . . . . . . . . . . . . Word 0002 DATA
55 | C1 . . . . . . . . . . . . . . . Word 0004 DATA
56 | D1 . . . . . . . . . . . . . . . Word 0006 DATA
57 | E1 . . . . . . . . . . . . . . . Word 0008 DATA
58 | F1 . . . . . . . . . . . . . . . Number 0037h
59 | START . . . . . . . . . . . . . L Near 0000 CODE
60 |
61 | 0 Warnings
62 | 0 Errors
63 |
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/DosBox.rar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/DosBox.rar
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/CREF.EXE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/CREF.EXE
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/DEBUG.EXE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/DEBUG.EXE
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/EDIT.COM:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/EDIT.COM
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/ERROUT.EXE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/ERROUT.EXE
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/EXE2BIN.EXE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/EXE2BIN.EXE
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/EXEMOD.EXE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/EXEMOD.EXE
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/EXEPACK.EXE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/EXEPACK.EXE
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/LIB.EXE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/LIB.EXE
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/LINK.EXE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/LINK.EXE
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/MAKE.EXE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/MAKE.EXE
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/MASM.EXE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/MASM.EXE
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/README.DOC:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/README.DOC
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/SETENV.EXE:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/SETENV.EXE
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/masm.IMg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/汇编部分代码及软件/软件/masm/masm.IMg
--------------------------------------------------------------------------------
/汇编部分代码及软件/软件/masm/readme.md:
--------------------------------------------------------------------------------
1 | 1. 我是下的DosBox0.74,详细配置请百度
2 | 2. 建议调试不用debug用TD,有图形化界面比较方便,寄存器也直接看得到。
--------------------------------------------------------------------------------
/补充资料/数据库/华科期末考试数据库试题4.rar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/数据库/华科期末考试数据库试题4.rar
--------------------------------------------------------------------------------
/补充资料/数据库/数据库ppt/1 数据库系统概论.ppt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/数据库/数据库ppt/1 数据库系统概论.ppt
--------------------------------------------------------------------------------
/补充资料/数据库/数据库ppt/2 关系数据库.ppt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/数据库/数据库ppt/2 关系数据库.ppt
--------------------------------------------------------------------------------
/补充资料/数据库/数据库ppt/3 关系数据库SQL.ppt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/数据库/数据库ppt/3 关系数据库SQL.ppt
--------------------------------------------------------------------------------
/补充资料/数据库/数据库ppt/4 数据库安全性.ppt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/数据库/数据库ppt/4 数据库安全性.ppt
--------------------------------------------------------------------------------
/补充资料/数据库/数据库ppt/5 数据库完整性.ppt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/数据库/数据库ppt/5 数据库完整性.ppt
--------------------------------------------------------------------------------
/补充资料/数据库/数据库ppt/第06章 关系数据理论-1.ppt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/数据库/数据库ppt/第06章 关系数据理论-1.ppt
--------------------------------------------------------------------------------
/补充资料/数据库/数据库ppt/第06章 关系数据理论-2.ppt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/数据库/数据库ppt/第06章 关系数据理论-2.ppt
--------------------------------------------------------------------------------
/补充资料/数据库/数据库ppt/第06章 关系数据理论-3.ppt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/数据库/数据库ppt/第06章 关系数据理论-3.ppt
--------------------------------------------------------------------------------
/补充资料/数据库/数据库ppt/第07章 数据库设计.ppt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/数据库/数据库ppt/第07章 数据库设计.ppt
--------------------------------------------------------------------------------
/补充资料/数据库/王珊《数据库系统概论》(第5版)笔记和课后习题详解.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/数据库/王珊《数据库系统概论》(第5版)笔记和课后习题详解.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/20170520_试卷A_final.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/20170520_试卷A_final.doc
--------------------------------------------------------------------------------
/补充资料/汇编/20170520_试卷A_答案.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/20170520_试卷A_答案.doc
--------------------------------------------------------------------------------
/补充资料/汇编/20170520_试卷B.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/20170520_试卷B.doc
--------------------------------------------------------------------------------
/补充资料/汇编/20180526_试卷A(答案与评分标准).doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/20180526_试卷A(答案与评分标准).doc
--------------------------------------------------------------------------------
/补充资料/汇编/20180526_试卷A.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/20180526_试卷A.doc
--------------------------------------------------------------------------------
/补充资料/汇编/20180526_试卷B(答案).docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/20180526_试卷B(答案).docx
--------------------------------------------------------------------------------
/补充资料/汇编/习题1.1和1.3解答.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/习题1.1和1.3解答.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/习题1.4解答.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/习题1.4解答.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/习题1.7和1.8解答.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/习题1.7和1.8解答.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/寻址方式作业(教材2.1,2.3,2.4).pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/寻址方式作业(教材2.1,2.3,2.4).pdf
--------------------------------------------------------------------------------
/补充资料/汇编/总复习.ppt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/总复习.ppt
--------------------------------------------------------------------------------
/补充资料/汇编/总复习_第1章_复习习题.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/总复习_第1章_复习习题.doc
--------------------------------------------------------------------------------
/补充资料/汇编/总复习_第2章_复习习题.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/总复习_第2章_复习习题.doc
--------------------------------------------------------------------------------
/补充资料/汇编/总复习_第3章_复习习题.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/总复习_第3章_复习习题.doc
--------------------------------------------------------------------------------
/补充资料/汇编/总复习_第4章_复习习题.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/总复习_第4章_复习习题.doc
--------------------------------------------------------------------------------
/补充资料/汇编/总复习_第5章_复习习题.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/总复习_第5章_复习习题.doc
--------------------------------------------------------------------------------
/补充资料/汇编/总复习_第6章_复习习题.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/总复习_第6章_复习习题.doc
--------------------------------------------------------------------------------
/补充资料/汇编/教材3.1-3.4习题参考解答.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/教材3.1-3.4习题参考解答.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/教材3.7、课堂练习2题参考解答.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/教材3.7、课堂练习2题参考解答.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/教材3.8-3.10习题参考解答.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/教材3.8-3.10习题参考解答.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/教材4.3、4.4作业参考解答.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/教材4.3、4.4作业参考解答.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/教材4.5、4.6作业参考解答.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/教材4.5、4.6作业参考解答.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/教材5.1、5.2、5.6、5.9作业参考解答.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/教材5.1、5.2、5.6、5.9作业参考解答.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/教材6.1、6.2及课堂练习1题参考解答.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/教材6.1、6.2及课堂练习1题参考解答.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/教材习题3.5和3.6参考解答.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/教材习题3.5和3.6参考解答.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/汇编_第1章.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/汇编_第1章.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/汇编_第2章.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/汇编_第2章.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/汇编_第3章.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/汇编_第3章.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/汇编_第4章.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/汇编_第4章.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/汇编_第5章.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/汇编_第5章.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/汇编_第6章.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/汇编_第6章.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/第1次作业 (1).doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第1次作业 (1).doc
--------------------------------------------------------------------------------
/补充资料/汇编/第1次作业_参考答案.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第1次作业_参考答案.doc
--------------------------------------------------------------------------------
/补充资料/汇编/第2次作业.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第2次作业.doc
--------------------------------------------------------------------------------
/补充资料/汇编/第2次作业_参考答案.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第2次作业_参考答案.doc
--------------------------------------------------------------------------------
/补充资料/汇编/第3次作业.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第3次作业.doc
--------------------------------------------------------------------------------
/补充资料/汇编/第3次作业_参考答案.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第3次作业_参考答案.doc
--------------------------------------------------------------------------------
/补充资料/汇编/第4次作业.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第4次作业.doc
--------------------------------------------------------------------------------
/补充资料/汇编/第4次作业_参考答案.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第4次作业_参考答案.doc
--------------------------------------------------------------------------------
/补充资料/汇编/第5次作业.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第5次作业.doc
--------------------------------------------------------------------------------
/补充资料/汇编/第5次作业参考答案.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第5次作业参考答案.doc
--------------------------------------------------------------------------------
/补充资料/汇编/第6次作业.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第6次作业.doc
--------------------------------------------------------------------------------
/补充资料/汇编/第6次作业参考答案.doc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第6次作业参考答案.doc
--------------------------------------------------------------------------------
/补充资料/汇编/第一章习题1.2,1.5,1.6解答.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第一章习题1.2,1.5,1.6解答.pdf
--------------------------------------------------------------------------------
/补充资料/汇编/第一章习题1.9_1.13解答.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Jolsonz/hust_kaoyan/2c26ecbaf0bc56f0e4fead2cd1786efee349bdf4/补充资料/汇编/第一章习题1.9_1.13解答.pdf
--------------------------------------------------------------------------------