计算机网络
老师划重点
第一章 计算机网络概述
1.3 互联网概述(概念,因特网四个阶段)
因特网四个阶段:
- 因特网草案
- 建议标准
- 草案标准
- 因特网标准
1.5 计算机网络的主要性能指标
1.6 计算机网络体系结构(三种划分和各自功能、分层的作用、协议和服务、TCP/IP体系结构对应关系)
OSI标准结构:物联网淑慧适用(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)
IP/TCP结构:应用层、传输层、网际层、网络接口层
五层协议体系结构的各层主要功能:
- 应用层:通过应用间的交互来完成特定的网络应用,报文。
- 运输层:向两台主机中进程之间的通信提供通用的数据传输服务,TCP报文段,UDP用户数据报。
- 网络层:为分组交换网上的不同主机提供通信服务,IP数据报。
- 数据链路层:封装成帧透明传输差错检测,帧。
- 物理层:负责比特流的传输,比特。
网络体系结构就是计算机网络的层次结构模型与各层协议的集合。
分层结构的优势:
- 各层之间是独立的
- 灵活性好
- 结构上下可以分隔开
- 易于实现和维护
- 有利于功能复用
- 能促进标准化工作
协议和服务:协议是控制对等实体之间通信的规则,服务是由下层向上层通过层间接口提供的。
第二章 物理层
2.2.4 传输方式
2.4 信道复用技术(重点)
第三章 数据链路层
3.4.1 CSMA/CD协议
载波监听多址接入/碰撞检测,半双工通信,适用于有线局域网
3.5 网桥(透明学习算法)
第四章 网络层
4.2 网际协议(地址解析协议、IP数据报的格式和转发、地址分配)
4.3.1 ICMP报文的种类
4.4 互联网的路由选择协议(重点,RIP的定义和工作流程)
4.6.2 NAT(基本方法)
4.9.2 IPv6的基本首部(4和6)
第五章 运输层
全是重点,其中UDP和TCP重要,TCP的可靠传输重要,拥塞控制重要,注意快恢复算法。
第六章 应用层
DNS、FTP、动态主机配置协议
王道课程笔记
概述
计算机网络概述
ARPA → ARPAnet阿帕网 → 互连网 →互联网
ISP:因特网服务提供商
计算机网络:利用通信线路和交换设备将地理位置分散的、具有独立功能的多台计算机连接起来,按照某种协议进行数据通信、实现资源共享的信息系统。
资源包括:软件、硬件、数据
计算机网络分类:
数据交换方式:电路交换、报文交换和分组交换(后两者是存储转发方式)
- 传送数据量大,且传送时间远大于呼叫时,选择电路交换。电路交换传输时延最小。
- 当端到端的通路有很多段的链路组成时,采用分组交换传送数据较为合适。
- 从信道利用率上看,报文交换和分组交换优于电路交换,其中分组交换比报文交换的时延小,尤其适合于计算机之间的突发式的数据通信。
分层体系结构
OSI参考模型:从下到上,物联网淑慧适用(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层)
- OSI定义三点:服务、协议、接口
- OSI先出现,参考模型先于协议发明,不偏向特定协议
- TCP/IP以开始就对面向连接和无连接服务并重,而OSI在开始时只强调面向连接服务。
- TCP/IP参考模型:网络接口层,网际层,传输层,应用层
物理层
物理层概述及通信基础
物理层:在连接各种计算机的传输媒体上传输数据比特流,确定与传输媒体接口有关的一些特性。
四大特性(械气工程):机械特性,电气特性,功能特性,规程特性。
数据通信基础
通信系统包含源系统、传输系统和目的系统,传输系统中传输的是模拟系统,而源系统和目的系统中的是数字信号,数字信号由码元组成。
调制解调器就是Modem,就是猫。
码元:指的是用一个固定时长的信号波形,代表不同离散数值的基本波形,是数字通信中数字信号的计量单位,时长成为码元宽度。
当码元的离散状态有M个时,码元为M进制码元。8进制码元可以用3个二进制数字表示,因此很好算,log2一下即可。
码元传输速率(波特率):是单位时间内传输的码元个数,单位是波特Baud(B)。
编码与调制
这里的差分曼彻斯特编码,是指在时钟周期开始时跳变则为0,不变则为1,跳变就是这个周期开始前后线的位置发生变化。
极限数据传输率
出现信噪比就选香农公式,要先用信噪比公式求出S/N。
信道复用技术
上图中,右上是频分复用(FDM),右下是时分复用(TDM),时分复用还有一个类型叫做统计时分复用(STDM),每统计到有两个信号(如AB),就作为一个STDM帧发送出去。
波分复用(WDM)就是光的频分复用,码分复用(CDM)是用多维向量形式来传输信号的复用。
传输介质及物理层设备
数据链路层
链路层概述及重要协议
链路层的信道类型
一对一:点对点信道
一对多:广播信道
链路层要解决的问题:封装成帧、透明传输、差错监测(密封、透气性差)
差错检测
解决方法:循环冗余检验CRC
数据链路层重要协议:PPP协议
点对点协议PPP(Point-to-Point Protocol)是目前使用最广泛的数据链路层协议,用户使用拨号电话接入因特网时一般都使用PPP协议(用户计算机和ISP进行通信时所使用的协议)。
PPP协议实现透明传输的方法:
- 异步传输|面向字符:字节填充法
- 同步传输|面向比特:零比特填充法(五个1填一个0)
数据链路层重要协议:CSMA/CD协议
重要网络及链路层设备
局域网:LAN,是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。
以太网:使用CSMA/CD(载波监听多路访问及冲突检测)技术。
计算机通过适配器(网卡)连接到以太网。
链路层设备
网桥转发表
虚拟局域网:由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段有某些共同的需求,因此就被放在同一个VLAN里,以太网交换机可以通过以太网帧中的VLAN标记对不同VLAN的主机进行数据转发。
冲突域&广播域
网桥、交换机有几个接口,就有几个冲突域,路由器有几个接口,就有几个广播域。
网络层
网络层概述及IP地址
网络层概述:网络层向上只提供灵活的、无连接的、尽最大努力交付的数据报服务,主要任务是把分组(IP数据报)从通过路由选择与转发从源端传到目的端,为分组交换网上的不同主机提供通信服务,互联网可以由多种异构网络互连组成。
IP数据报格式
下面是一个例子:
IP地址
三个进阶阶段:
- 分类的IP地址:最基本的编址方法
- 子网划分:最基本编址方法的改进
- 无分类编址CIDR:比较新的无分类编址方法
分类的IP地址
网络地址转换NAT:在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,它至少有一个有效的外部全球IP地址。
子网划分
对于三级IP地址(网络号、子网号、主机号),子网掩码就是将网络号和子网号全设置为1,主机号的一部分设置为0。
给出IP地址和其子网掩码,要求子网的网络地址,就是将IP地址和子网掩码逐位相与:
子网划分的五类题型
- 已知主机IP地址和子网掩码,求网络号
- 已知主机IP地址和子网掩码,求子网、主机最多有多少个
- 已知网络号,X位子网号,求子网掩码
- 已知网络号,要分成X个子网,求子网掩码和IP地址范围
- 已知子网掩码,求哪些IP地址属于同一个子网
这道题就是将IP地址和子网掩码相与,易知IP地址的前三段是直接保留做网络号的一部分,所以只需要将子网掩码的最后一段化为二进制,和主机IP地址的最后一段二进制相与,得到结果为120,选C。
这就相当于给你IP地址和子网掩码,求一下网络号,然后用这个网络号去再划分子网,由于网络号必须是子网掩码中为0的地方,在这道题中,网络号有4位;
现在要从四位的网络号中再分出子网号和主机号,而且要尽可能多,由于主机号不能只有一位(全零和全一不能作为主机号),因此子网号设置2位,主机号设置2位,这样就可以划分四个子网,每个主机号除去全零和全一后剩下的就是2。
这道题求的是子网掩码,题目说用8位二进制位作子网地址,因此子网掩码很显然就是:
255.255.0.0
C类地址,说明前三项不用管,最后一段的8位要划分为子网号和主机号,要分成6个子网,最少需要3位,因此把这三位设为1,其余设为0,可知答案位C
各自相与后的网络号相同的就属于同一个子网。
无分类编址CIDR
路由聚合:求最长前缀网络号
网络层重要协议
ICMP
ARP
路由选择协议
应用层
应用层对应用程序的通信提供服务。
域名解析系统DNS
查找一个网址,需要从本地域名服务器查到根域名服务器、顶级域名服务器,最后是权限域名服务器,有递归查询和递归与迭代相结合两种查询方式,前者一条路走到黑,从本地出发后,一个一个的巡回。
FTP协议
DHCP 动态主机配置协议
第一章 概述
计算机网络的分类
- 按交换技术分类:电路交换网络、报文交换网络、分组交换网络
- 按使用者分类:公用网、专用网
- 按覆盖范围分类:广域网WAN、城域网MAN、局域网LAN、个域网PAN
制定互联网的正式标准的四个阶段:
- 因特网草案(这个阶段还不是RFC文档)
- 建议标准(这个阶段开始成为RFC草案)
- 草案标准
- 互联网标准
计算机网络可以向用户提供哪些服务?
- 连通服务:指计算机网络使上网用户之间可以交换信息,好像这些用户的计算机可以彼此直接连通一样。
- 资源共享:用户可以共享计算机网络上的信息资源、软件资源和硬件资源。
因特网的组成:
- 边缘部分,由所有连接在因特网上的主机组成,这部分是用户直接使用的,用来进行通信和数据共享;
- 核心部分,由大量网络和连接这些网络的路由器组成,这部分是为边缘部分提供服务的。
路由器处理分组的过程是:
- 把收到的分组先放入缓存(暂时存储);
- 查找转发表,找出到某个目的地址应从哪个端口转发;
- 把分组送到适当的窗口转发出去。
电路交换的三个步骤:
- 建立连接(分配通信资源),从主叫端到被叫端建立连接,也就是建立一条专用的物理通路;
- 通话(一直占用通信资源),在通话的全部时间里,通话的两个用户始终占用端到端的通信资源;
- 释放连接(归还通信资源)。
电路交换的优缺点:
优点:
- 通信时延小
- 有序传输
- 没有冲突
- 适用范围广
- 实时性强
- 控制简单
缺点:
- 建立连接时间长
- 线路独占,使用效率低
- 灵活性差
- 难以规格化
电路交换和分组交换
分组交换的优点:
- 高效 动态分配传输带宽,对通信链路是逐段占用;
- 灵活 以分组为传送单位和查找路由;
- 迅速 不必先建立连接就能向其他主机发送分组;
- 可靠 保证可靠性的网络协议,分布式的路由选择协议使网络有很好的生存性。
分组交换带来的问题:
- 分组在各结点存储转发时需要排队,这就会造成一定的时延;
- 分组必须携带的首部也造成一定的开销。
速率
- 比特(bit)是计算机中数据量的单位,也是信息论中使用的信息量的单位;
- bit来源于binary digit,意思是一个“二进制数字”,因此一个比特就是二进制数字中的一个1或0;
- 速率即数据率(data rate)或比特率(bit rate),单位是b/s,或Mb/s,Gb/s.(这里的M就是2^20,G就是2^30)
带宽
- 数字信道所能传送的最高速率,单位也是bps。
- 总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
五层协议的体系结构
- 应用层
- 运输层
- 网络层
- 数据链路层
- 物理层
第二章 物理层
物理层的作用:数据传输模型,数据在计算机中多采用并行传输方式。
物理层的特性:
- 机械特性
- 电气特性
- 功能特性
- 过程特性
香农公式的含义和计算
第五章 运输层
概述
- 之前的物理层、数据链路层以及网络层这三层共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信。
- 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。
- 如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议。
- 运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道。
- 根据应用需求的不同,因特网的运输层为应用层提供了两种不同的运输协议,即面向连接的TCP和无连接的UDP,这两种协议就是本章要讨论的主要内容。
运输层端口号、复用和分用的概念
- 简单来说,复用就是打包,分用就是解包
- 端口号只具有本地意义,只是为了标识本计算机应用层中的各进程,在因特网中,不同计算机中的相同端口号是没有联系的。
- 下面就是复用和分用的过程:
- TCP/IP体系中的应用层常用协议所使用的运输层熟知端口号:
UDP和TCP的对比
UDP:
- 无连接
- 支持一对一、一对多、多对一和多对多交互通信
- 面向报文,对应用层交付的报文直接打包
- 尽最大努力交付,也就是不可靠;不使用流量控制和拥塞控制
- 首部开销小,仅8字节
TCP:
- 面向连接
- 每一条TCP连接只能有两个端点EP,只能是一对一通信
- 面向字节流
- 可靠传输,使用流量控制和拥塞控制
- 首部最小20字节,最大60字节
TCP的流量控制
- 一般来说,我们总是希望数据传输得快一些,但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失;
- 流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收;
- 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制,
- TCP接收方利用自己的接收窗口的大小来限制发送方发送窗口的大小;
- TCP发送方收到接收方的零窗口通知后,会启动持续计时器,超时后,向接收方发送零窗口探测报文
TCP的拥塞控制
TCP可靠传输的实现
下面是例题:
答案是B,第三段的序号是900,说明第三段的首部是900,第二段丢失了,第一段正常到达,确认序号应该是按序到达的段的后一个序号,因此就是第二段的首部序号,第二段长度为400,由900-400=500,因此主机乙发送给主机甲的确认序号是500.
TCP的运输连接管理
TCP的连接建立
TCP是面向连接的协议,它基于运输连接来传送TCP报文段。
TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。
TCP的运输连接有以下三个阶段:
- 建立TCP连接
- 数据传送
- 释放TCP连接
TCP的运输连接管理就是使运输连接的建立和释放都能正常地进行。
TCP使用三报文握手建立连接,TCP的连接和建立都是采用客户服务器方式,主动发起连接建立的应用进程叫做客户,被动等待连接建立的应用进程叫做服务器:
- A的TCP向B发出连接请求报文段,其首部中的同步位SYN=1,并选择序号x,表明下一个报文段的第一个数据字节的序号是x+1;
- B的TCP收到连接请求报文段后,如果同意,则发回确认,在确认报文段中使SYN=1和ACK=1,其确认号应为ack=x+1,并随机选择序号seq=y;
- A收到此报文段后,向B给出确认,其ACK=1,序号应为seq=x+1,确认号应为ack=y+1;
- A的TCP通知上层应用进程,连接已经建立;
- 当运行服务器进程的主机B的TCP收到主机A的确认后,也通知其上层应用进程,连接已经建立。
TCP的连接释放
第一个u和v:
u:它的值等于TCP客户进程之前已传送过的、数据的最后一个字节的序号+1;
v:它的值等于TCP客户进程之前已收到过的、数据的最后一个字节的序号+1。
为什么TCP客户进程要有时间等待状态?
举一个TCP客户进程没有时间等待状态的例子:
因此,时间等待状态以及处于该状态2MSL时长可以确保TCP服务器进程可以收到最后一个TCP确认报文而进入关闭状态。另外,TCP客户进程在发送完最后一个TCP确认报文段后,再经过2MSL时长,就可以使本次连接持续时间内所产生的所有报文都从网络中消失,这样就可以使下一个新的TCP连接中,不会出现旧连接中的报文段。
保活计时器的作用:
TCP报文段的首部格式
TCP报文段的首部格式如下:
源端口:占16比特,写入源端口号,用来标识发送该TCP报文段的应用进程。
目的端口:占16比特,写入目的端口号,用来标识接收该TCP报文段的应用进程。
序号:占32比特,取值范围为【0,2^32-1】,序号增加到最后一个后,下一个序号就又回到1。作用是指出本TCP报文段数据载荷的第一个字节的序号。
确认号:占32比特,取值范围为【0,2^32-1】,确认号增加到最后一个后,下一个确认号就又回到1。作用是指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。
数据偏移:占4比特,以4字节为单位。用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远,实际上是指出了TCP报文段的首部长度(注意是以4字节为单位)。
保留:占6比特,保留为今后使用,目前应设置为0.
紧急标志位URG(urgency):取值为1时紧急指针字段有效,取值为0时紧急指针字段无效。
确认标志位ACK:取值为1时确认号字段才有效,取值为0时确认号字段无效。TCP规定,在连接建立后所有传送的TCP报文段都必须把ACK置为1.
推送标志位PSH:接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付。
复位标志位RST(reset):用来复位TCP连接。当RST=1时,表明TCP连接出现异常,必须释放连接,然后再重新建立连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一个TCP连接。
同步标志位SYN:在TCP连接建立时用来同步序号。
终止标志位FIN:用来释放TCP连接。
窗口字段:窗口值=min(接收窗口,拥塞窗口)。占16比特,指出发送本报文段的一方的接收窗口,流量控制的手段。
下面是选项:
第六章 应用层
应用层概述
客户-服务器方式和对等方式
客户-服务器方式
对等方式
动态主机配置协议DHCP
DHCP的作用
数据库
老师的笔记
第二章
第2章 课堂讲义
1.知识回顾
数据模型:
数据结构
数据操作
数据约束
2.关系型数据库:ch2-ch6
关系模型:
数据结构:
关系表--ch2
二维表-关系表-table
记录-行-元组
字段--属性-列
属性/列:取值的数据类型和长度要相同
key-码-关键字:
几种:
超码:几个属性的集合,取值唯一
可能会有多余的属性
一个表里有多个
(sno,sname)
(sno,sname,sage)
(sname,sage)--不是
候选码:对超码最小化,去掉多余的属性
一个表里可能有多个
sno,ID
主码:当前使用的候选码
一个表里有1个
sno
如何保证主码的取值唯一性?
作用:取值唯一,
识别并快速定位到某一条记录
建立索引--快速查询
一般情况下,每个表都要有主码
外码:
数据操作:
关系代数-理论上--ch6
SQL--ch3-ch5
数据约束:
ch2,ch5
(1)实体完整性规则:DBMS自动完成
对主码的取值的检查-唯一性
只需要定义主码,DBMS自动完成
第三章
Ch3--课堂笔记
1.知识回顾
select ---6
from r1 ---1
where 筛选条件 ---2
group by ---3
having 筛选条件 ---4
order by ---5
空值:设计表尽量避免,程序
2.嵌套查询
(1) select
from
where
id in (select
from
where)
(2)select
from (select
from
where)
where
(3)select (select
from
where)
from
where
(1)集合成员资格: 不相关子查询:
谓词:in 和 not in
(2)集合的比较: 不相关子查询:
谓词: >,<,some,any,all
(3) 测试空关系: 相关子查询
谓词:exists,not exist
作用:测试子查询的结果是否为空关系
子查询是否查到了数据
返回值:如果子查询有数据---返回T
如果子查询没有数据---返回F
子查询:select *
嵌套查询的执行顺序:父查询和子查询
不相关子查询:
子查询先执行,父查询后执行
相关子查询:
父查询先执行,子查询后执行
not exist:除法
第五章
第5章 高级SQL - 课堂笔记
1.知识回顾
权限管理: DBMS系统-提供了角色分组进行用户权限管理
不方便管理,自定义权限
权限管理很重要,每一个系统都有权限管理
用程序去实现权限管理:反应及时,
前后端分离开发:
后端:Java,权限框架-RBAC权限模型-shiro
前端:vue -router路由
2.存储过程:一个特殊的函数
作用:更大
可以直接在DBMS端调用--call
也可以在程序端调用--java
使用存储过程更多
优点:
(1)保护重要的业务逻辑--银行,金融
(2)减少了网络数据传输量:
java--存储过程名
(3)利于系统维护:
重要的业务逻辑-变化--DBMS-存储过程
3.函数:
可以有参数,必须要有返回值,
用select调用或在查询使用,
只能在直接在DBMS端调用
DBA--维护数据、查询数据
4.触发器
完整性约束:简单的--一个表
触发器--更加复杂的完整性要求:跨表之间数据的完整性
工资表--发生变化时---记录谁做的修改操作
--记录到新表 log
A ---B,C,D都变
触发器:
建立在某个表上,一个表可以有多个触发器;
触发动作:更新表,insert,update,delete
select-不行
DBMS-触发器--在多个表里传递数据
--临时表
JDBC
课堂笔记--编程语言访问DBMS
1.编程语言访问DBMS的一般过程
try catch
--API--建立连接(连接字符串)
--编写查询语句-字符串--
调用命令类-执行SQL---接收结果-关闭连接对象
2.SQL注入攻击问题
SQL命令---多个字符串拼接而成,
故意利用SQL语法--去构造正确的SQL,但是非法的操作
string uname = txt1.value()
string pwd= txt2.value()
SQL-- 字符串--“select * from st where"+
"sname="uname +
"and password = "+pwd
SQL---永真查询
-- ;
3.参数化SQL/预编译SQL
在实际开发中,SQL命令---全部用参数化的方式去写
SQL-- 字符串--“select * from st
where
sname=?
and password = ?”
防范SQL注入攻击问题:
参数化SQL
UI 格式校验-; -- ,设置文本框长度
DBMS--权限管理
程序里--格式校验
4.编程语言调用存储过程
5.实际开发中--Mybaits框架--持久层
分层开发
UI---业务层---Mybaits-数据访问层dao/mapper
SQL和JAVA完全分离:所有的SQL---写到.xml
SQL和JAVA半分离:
注解 @select --简单的SQL
.xml----复杂的SQL
maven:项目管理工具--管理jar包
小测---3-5
第八章
第8章 课堂笔记
1.范式的种类:衡量数据表质量的一组标准
第一范式(1NF)----级别最低
第二范式(2NF)
第三范式(3NF)
BC范式 (BCNF):实践中的最高标准--3.5NF
第四范式(4NF)
第五范式(5NF)----级别最高,标准最严
理论上,一个关系模型 R 如果满足5NF的要求,
那这个关系模型质量最好的
实践中的最高标准--BCNF
表达:R in 3NF, R 满足 3NF, R 属于符号 3NF,
R not in 3NF, R 不满足 3NF, R 不属于符号 3NF,
记住:
R如果满足高级别的范式的要求,那么它也一定满足低级别的范式要求;
R满足3NF,R一定满足 2NF;
R满足2NF,R不一定满足 3NF;
2.函数依赖(重点):表示R上属性集之间的约束关系
y=f(x):x的值知道--y的值也就知道了
x的取值--决定了--y的值
x-->y:x的取值决定了y的值---函数依赖
3.码的形式化的定义
R:关系模式
超码:K K-->R
候选码:K不一定是候选码
超码里可能有多余的属性
对超码化简--候选码
做题:R(A,B,C,D),
AB是不是候选码?
:
AB是不是超码?AB-->R?
A是不是超码? A-->R?
B是不是超码? B-->R?
4.平凡函数依赖:
在任何关系的任何时刻都成立
5.函数依赖的集合F,
在关系R上成立的所有的函数依赖的集合---F的闭包
R上属性集之间的依赖:
函数依赖:2组---重点
多值依赖:3组
连接依赖:连接查询
6. BCNF的定义---也是判断一个R是否满足BCNF依据?
(1)把R上成立的函数依赖都写出来
10个F:x-->y
(2)对每一个F做判断: x-->y
判断它是否是平凡的函数依赖
或者:
求出超码
判断x是不是超码?
7.主属性---构成候选码的属性
候选码:ID----ID
(SNO,CNO)---sno,cno
课堂笔记--Ch8 关系数据库设计
1.学期综合实践的安排
(1)答辩时间:7.1日 上午
(2)提交报告、代码:7.3日 23.55分前
2.逻辑蕴涵
一个关系表质量不好---有不好函数依赖
----在判断R是否属于 3NF,BCNF
--用到在R上成立的函数依赖
问题:R上成立的函数依赖很重要
----函数依赖正不正确?已知的F对不对?
-----还有没有一些重要的函数依赖?还有没未知F?
3.判断一个未知的函数依赖在R上是否成立?
可以使用5个推导规则
(1)先求F的闭包,然后判断--F闭包太大
--F+===函数依赖的闭包
(2)直接使用推导规则推导,有困难
(3) 先求属性集的闭包,然后判断(要掌握)
x--->b1
x--->b2
x--->b3
x——>b1b2b3
x的闭包: x+=(b1b2b3)---属性集的闭包
ID--->name
ID--->dept_name
ID+==(name,dept_name)
X--->Y ? 在R(10)上成立?
(1)求属性集X的闭包:推导规则--会求出
属性集X===所有的属性10
(2)判断Y是否包含在X的闭包?
包含---X--->Y---在R上成立
不包含----X--->Y---在R上不成立
AG+=AGBCHI
X是不是候选码?
X---超码
X有没有多余属性?
第8章 课堂笔记
2. CH8
要判断 R 是否属于 3NF,BCNF?--主要根据函数依赖来判断:
思考:(1)函数依赖正确/未知函数依赖?
(2)已知的函数依赖的集合是否是最小化的?
F进行了化简---F 正则覆盖== F的最小集
得到在R上的一组F:
F集合里每一个函数依赖都是正确的
F里的每一个函数依赖都是不可缺少的
逻辑蕴涵:
从已知的F出发,推导出未知的函数依赖
推导规则:
自反,增广,传递,合并,分解
推导方法有3种:
直接证明---困难
求出F闭包--判断------困难
求属性集X的闭包---掌握--简单
问题:
在R上,属性(ABCDE),F={ A-->B, D-->E }
问:
(1) 一个函数 AB--->C 是否被F逻辑蕴涵?
(1.1) AB+ =(AB)
(1.2) C不属于AB+ ,所有AB--->C 不被 F 逻辑蕴涵
问:
(2)求出 R 的候选码--属性集x的闭包
(2.1)求超码
K+ == ABCDE =R ---K 是超码
确定K是谁:
从函数依赖的决定因素(左边的属性)来考虑
A+ = AB
--->增广律--> ADC+ = ABDEC = R
所以,ADC就是超码,也是候选码
D+ =DE --->增广律--> ADC+ = ABDEC = R
(2.2) 对复合属性构成超码进行化简
分别求出超码的真子集的闭包
3.函数依赖的最小集--正则覆盖
如果熟练---直接推导--推理规则---F的最小集
如果不熟练---图8-9的算法--繁琐--正确
(3)对 F 进行最小化
(4)判断R的范式级别,是否属于BCNF?
不属于
(5)将 R 分解为BCNF.--优化
期末复习
第16周 课堂笔记
1.小测:星期五上课时进行第3次小测
ch7-ch14
2.判断: R 满足 3NF/BCNF?
3.优化R的表结构 数据库10个表
R 是满足3NF/BCNF ---ok - 实际使用
R 不满足3NF/BCNF --不能实际使用-
优化--提升R的范式级别3NF/BCNF
模式分解(数据库设计的优化)
(1)R 向 BCNF分解
优化的结果: R(Fmin=6) -->R1,R2,R3,....Rn Fmin=6
R(100条)-->R1,R2,R3,
无损连接: R1*R2*R3-(100)=R(100)---更重要
保持函数依赖: R(Fmin=6) -->R1,R2,R3,....Rn Fmin=6
R1,R2,R3,....Rn 属于 BCNF
测试:R(XYZ) 是否属于BCNF
X-->Y
求出R的超码
第一次判断:R1(XY)---BCNF,R2(XZ)?
第二次判断:R2(XZ),F
求出R2的超码
R21---BCNF,R22?
R-->R1,R21,R22
(2)R 向 3NF分解
优化的结果: R -->R1,R2,R3,....Rn
R1,R2,R3,....Rn 属于 3NF
步骤:
(1)求出R的候选码
(2) 求F的最小集--5个
(3) R1(XY,F=X-->Y),R2(XY,F=X-->Y),R3(),R4(),R5()
(4)判断R的候选码是否包含在某一个子关系里?
如果包含:R--R1..R5
如果不包含:R--R1..R5+R6(候选码)
关系型数据库:ch1-ch6
ch1:概述
数据库?
冗余?
数据视图:1.3
数据模型:
数据抽象:(重点)
物理层
DBMS做映射----数据的物理独立性
逻辑层
create view -数据的逻辑独立性
视图层---java
DBA:
关系模型三要素:
数据结构:
数据操作:
完整性约束:
CH7:
基本概念:
实体
实体集
联系集:
联系的类型
画出ER图--转换成一组关系表--指出主码
ch8:
函数依赖
3NF,BCNF
范式之间的关系
属性集闭包
候选码的求解
F最小集的求解
Ch13:
事务:ACID特性
数据不一致的4种:
隔离级别:
ch14:
并发控制:
锁机制:基本锁的类型,锁的粒度
两阶段锁协议:
数据库恢复:
故障的类型:
基本思想:冗余
两种数据的冗余:
日志文件:更新操作
数据库文件:备份的类型
规则:先写日志,再写数据库
我的笔记
第一章 数据库系统介绍
数据库系统:一个完整的用于管理数据的系统环境
数据库管理系统:是这个环境中用于实际管理和操作数据的软件。
数据模型:描述下列内容的工具集合(例如关系模型)
- 数据 data
- 数据关系 data relationships
- 数据语义 data semantics
- 数据约束 data constraints
数据模型三要素:
- 数据结构:数据的组织方式
- 数据操作:如何读取数据
- 数据约束:如何保障数据的正确性
DDL数据定义语言
第二章 关系模型介绍
2.1 关系数据库的结构
关系是无序的。
2.3 码
为什么要有码:理论上要求,必须有一种方法来区分一个关系中的不同元组,一个关系中不能有两个元组在所有属性上取值完全相同,码就是用来区分关系中任意两条元组的。
主码约束(实体完整性约束):非空不同
外码约束(参照完整性规则):或取空值,或等于另一个元组的主码值。
总之,超码是可以标识不同关系的元组,候选码是最小不可划分的超码,主码是被选中的候选码。
两个约束:主码约束(实体完整性规则),外码约束(参照完整性规则)
第三章 SQL语言
SQL语言.pdf
第六章 关系代数
重点:会用关系代数写查询语句
1.六种基本运算符
2.各种关系代数的基本用法
(1)选择:返回的是符合条件的元组的一个元组,同select
如图是从instructor表中查找名为物理且工资大于九万的元组,倒着的A就是and。
在选择谓词中可以用比较运算符和 与或非。
(2)投影:返回的是一个或多个值。与选择复合使用,在选择返回的基础上选择某些属性。
如图是在instructor表中查找物理系的教师并返回他的名字。
(3)笛卡尔积
返回的是两个表的元组一一组合的表,可以与上述两个操作结合起来。
等价于:
返回的是教师的信息和这名教师开的课。
(4)并,差,交:可以与上述的操作结合。
并:
差:
交:
(5)赋值运算(符号为⬅)
第七章 ER模型
ER模型可以定义:实体集、联系集、属性
一个数据库可以建模为:实体和集合、实体间联系的集合
映射基数:描述一个实体通过联系集关联另一个实体的个数
对于二元联系集,映射基数必为下列类型之一:一对一、一对多、多对一、多对多
弱实体集不具有主键,依赖于标识实体集,也就是标识性联系;
弱实体集的主码由它所依赖的强实体集的主码加上它的分辨符组成
第八章 关系型数据库设计
如何设计一个达到零差错的数据库?
- 容易存在的四大问题:删除/插入/更新异常,数据冗余;问题原因:数据间的依赖关系太强
- 数据依赖:函数依赖、多值依赖、其它依赖
- 范式
- 分解模式
无损分解和有损分解:
- 无损分解:两个小表连接可以得到原来的表,没有增加元组,没有信息损失
- 有损分解:两个小表连接后得到的表中有原来没有的元组,增加了不确定性,损失了信息
规范化理论:用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常和数据冗余问题。
范式是符合某一种级别的关系模式的集合,关系数据库中的关系必须满足某一范式。
函数依赖的本质:一个关系模式上的一组约束,表达了一组属性的值决定另一组属性的值
候选码具有的性质:表示的唯一性和无冗余性
函数依赖的作用:测试关系的实例,看它是否满足给定的函数依赖,声明合法关系上的约束
平凡函数依赖:能满足所有关系的函数依赖是平凡函数依赖,自身决定自身或自身的一部分
闭包:被F逻辑蕴含的全体函数依赖的集合称为F的闭包,用F+表示F的闭包
范式:符合某一种级别的关系模式的集合
关系数据库中的关系必须满足某一范式
BCNF:消除了函数依赖范围里的所有冗余
就是说,如果发出箭头的里面不包含主码,说明其不是超码。
1NF(第一范式):如果你的数据库表中的所有字段都是不可分割的最小数据单位,那么这个表就满足了第一范式。这意味着每个字段都是原子性的,不能再细分为更小的数据单位。例如,一个包含用户信息的表,每个字段如姓名、年龄、地址都是不可分割的,就满足了1NF。
2NF(第二范式):在满足1NF的基础上,如果表中的所有非主键字段都完全依赖于主键,而不是仅依赖主键的一部分,那么这个表就满足了第二范式。简单来说,就是表中的每个字段都应该与整个主键有直接关系,不能只与主键的一部分有关系。例如,一个订单表中的订单明细应该与整个订单号有关,而不是只与订单号的一部分有关。
3NF(第三范式):在满足2NF的基础上,如果表中的所有字段不仅完全依赖于主键,而且不存在传递依赖,即非主键字段不依赖于其他非主键字段,那么这个表就满足了第三范式。简单来说,就是表中的每个字段只与主键有直接关系,不能与其他非主键字段有关系。例如,一个订单表中的客户信息不应该依赖于订单明细,而应该直接依赖于订单号。
BCNF(巴斯-科德范式):在满足3NF的基础上,如果对于每一个函数依赖X→Y,X都是候选键,那么这个表就满足了BCNF。简单来说,就是表中的所有函数依赖都是由候选键所决定的,没有任何一个函数依赖是由非候选键所决定的。例如,一个关于课程、教师和教室的表,如果课程决定了教师和教室,那么课程应该是候选键,而不是其他字段。
软件工程
第一大题,名词解释,10题*3分,共30分。其中八个PPT有,两个是软件工程专业应该掌握的,把理解写清楚就好,不用完全准确
第二大题,简答题(简要回答),5题*8分,共40分,需要完全准确。五道题,需求工程×1,结构化分析与设计×1,设计工程×2,软件测试×1,有一道题来自于老师讲的一个案例(数据中心体系架构)
第三大题,综合题(详细回答),2题*15分,共30分。软件测试×1,软件项目管理×1
第一部分 名词解释
- 分析模型:是用来分析软件结构的模型,包含了数据字典、数据流图、实体关系图和状态转换图
- 数据流图:描述输入数据流到输出数据流的变换过程,用于对系统的功能建模。
- 实体 - 关系图:描述数据字典中数据之间的关系,用于系统的数据建模。
- 状态转换图:描述系统接收哪些外部事件,以及在外部事件的作用下的状态迁移情况,用于系统的行为建模。
- 信息流:包括变换流和事务流。
- 资源分析:论证是否具备系统开发所需的各类人员、软件、硬件等资源和相应的工作环境。
- 概要设计:也就是系统设计和总体设计,主要包括数据类的设计、体系结构的设计和接口的设计。
- 详细设计:也就是部件设计,主要包括软件内部的算法以及相应的数据结构。
- 逻辑内聚:指完成一组逻辑相关人物的模块,调用该模块时,由传送给该模块的控制型参数来确定该模块应执行哪一种功能。
- 数据耦合:两个模块之间仅通过参数表传递简单数据,称之为数据耦合。
- 项目管理:是通过项目经理和项目组织的努力,运用系统理论的方法,对项目及其资源进行计划、组织、协调、控制,实现项目的特定目标。
- 软件可靠性:一个程序期望以所需的精确度完成它的预期功能的程度。
第二部分 简答题
一、需求规约的原则
- 从现实中分离功能,即描述要做什么而不是怎样实现。
- 要求使用面向处理的规约语言,定义一个行为模型,从而得到做什么的规约。
- 整个系统都包括在规格说明的描述之中。
- 规约必须包括系统运行环境。
- 规约必须是一个认识模型,而不是设计或实现的模型。
- 规约必须是可操作的。
- 规约必须允许不完备性并允许扩充。
- 规约必须局部化和松散耦合。
分处归运,认可布局。
二、设计原则
- 设计对于分析模型应该是可跟踪的:软件的模块可能被映射到多个需求上
- 设计结构应该尽可能地模拟实际问题
- 设计应该表现出一致性
- 不要把设计当成编写代码
- 在创建设计时就应该能够评估质量
- 评审设计以减少语义性的错误
- 设计应该模块化,将软件逻辑地划分为元素或子系统,并包含数据、体系结构、接口和构建的清晰表示
根模一代,姑婶模块
三、数据中心的体系结构中,平台基础服务有什么?
- 数据模型管理
- 数据层次关系管理
- 数据质量管理
- 数据安全服务
- 元数据管理
- 流程配置管理
- 信息集成服务
- 日志管理
磨蹭治安,源流吉日
四、分层数据流程的分解原则
- 7加减2
- 分解应自然,概念合理清晰
- 只要不影响DFD的易理解性,可适当多分解几个加工,以减少层数
- 一般来说,上层分解得快些(即多分解几个加工),下层分解得慢些(即少分解几个加工)
- 分解要均匀
七二自然东分倒,上层下层要均匀
五、软件测试的目的、原则以及完成的标准
目的:
- 测试是一个为了发现错误而执行程序的过程
- 一个好的测试用例是指很可能找到从未被发现的错误的测试用例
- 一个成功的测试用例是指揭示了从未被发现的错误的测试
原则:
- 所有的测试都应可追溯到客户需求
- 应该在测试工作真正开始前的较长时间就进行测试计划
- Pareto原则:测试中发现的80%的错误可能来自于20%的程序代码
- 测试应该从小规模开始,逐步转向大规模
- 穷举测试是不可能的
- 为了达到最有效的测试,应由独立的第三方来承担测试
完成标准:
- 使用指定的测试用例设计方法产生测试用例,运行这些测试用例均未发现错误,则测试可终止。
- 观察测试阶段中单位时间内发现错误数目的曲线。
第三部分 详答题
英语文学
考试范围、题型和复习方法
三首诗背诵默写
I'm Nobody! Who are you?
I'm Nobody! Who are you?
Are you - Nobody - too?
Then there's a pair of us!
Don't tell! They'd advertise - you know!
How dreary - to Somebody!
How public - like a Frog -
To tell one's name - the livelong June -
To an admiring Bog!