笔记有错误欢迎直接在评论区进行纠正!我将不再维护软件设计师笔记!
外模式(用户模式或子模式)------视图
概念模式(模式)----基本表
内模式(存储模式)------存储文件
这个主属性的描述有问题,其实说白了就是所有候选键都是主属性,其他都是非主属性
元组就是表中一行数据,属性就是表中的列表名称
我的理解就是实体完整性就是主键不能为空,参照完整性就是一个表的外键它可以为空,但是它必须要在另外一个表中找的到,例如员工的部门号是唯一的,这个部门号可以作为员工的外键,然后还有一张部门表,部门表的id就是员工表中的部门号,而员工表的这个部门号必须要在部门表中找的到对应的值,部门号可以为空,因为刚入职的员工会有没有分配部门的情况,自然没部门号
集合运算符只有差不熟
投影就是选中指定的列把他们重新合在一起组成新的关系,如上图中的πA,C(R) 其实就是把A列和C列重新拼在一起组成新的关系(π1,3(R)和πA,C(R) 是等价的,只是说这个是用列号来表示的)
选择就是选中符合条件的指定的行然后把它们拼在一起组成新的关系,如上图的
是选择B列中有5的行然后拼在一起组成新的关系,这里要注意如果是要指定某列的值等于哪个数(像上面的这个)那就要单引号引起来,不然的话意思就变了,61=5(S)指的是s关系表中第一列和第五列相等的那就拼装在一起,这里没有第五列,所以上面用61=3(S)结果是2 3 2
投影和选择的符号别搞混淆
θ连接
连接其实就是在两个关系的笛卡尔积中选择符合条件的行,而上面这种连接其实就是用比较运算符来进行比较
这上面的字母比较是比较26字母先后顺序
等值连接
等值连接就是笛卡尔积中某一列和另外一列相等就符合要求,然后选择出来就行了
自然连接
自然连接也是在笛卡尔积的基础上去选择符合条件的行,自然连接是没有选择条件的,不像等值连接,它有条件,然后根据条件去选择,同时自然连接要去重,自然连接的条件是看有哪些公共的属性(其实就是列名一样),像上图明显A和C是两个关系中都有的公共属性,所以就是在笛卡尔积中找R.A=S.A并且R.C=S.C(也就是两个关系职中A和C必须同时相等才是符合要求的,如果有三个公共属性,那么这三个公共属性要求在两个关系中都相同,以此类推),符合这个条件的就找出来
左外连接
右外连接
全外连接
全外连接是自然连接的结果加左右外连接的结果
这里与和或是用来连接上面选择或者投影的条件的连接词,与就是and,或就是or,或只要两边条件有一方满足就可以了
真题1
答案:(55)B (56) A
讲解地址:2009年上半年第55、56题_哔哩哔哩_bilibili
真题2
答案:B (这里要注意如果是公共属性那就需要指名是哪个关系的,例如这题C和D是公共属性,所以要说清楚是R关系的C还是S关系的C,也就是R.C还是S.C,我最开始选了A)
讲解地址:2010年上半年第52题_哔哩哔哩_bilibili
答案:(54)C (55)B
讲解地址:2016年下半年第54、55题_哔哩哔哩_bilibili
这里我最开始是没动哪里来的1=5和3=6,这里其实自然连接的条件,要求要公共属性相同才可以,自然连接也是建立在笛卡尔积的基本上
这个题目有点问题,R×S应该是R⋈S(垃圾题目)
真题3
答案:(51)C (52)A
讲解地址:2012年下半年第51、52题_哔哩哔哩_bilibili
自然连接的做题技巧:首先找两个关系的公共属性,上图的C和D,所以属性就有5个(原来7个减去重复的2个),也就知道了是几元关系或者几个属性,然后在看笛卡尔积中公共属性是否都相同,这里我是不画笛卡尔积的,直接看,其实就是找两个关系的C和D一样的,好比上面的adce和cebc中C和D都一样(也就是我图上红色框画出来的),所以这一行可拼在一起作为新的关系的一个元祖,组成结果就是adcebc(去重)。这只是其中一个不是最终答案,不知道你们看懂没?反正我是懂了!
真题4
讲解地址:2020年下半年第54、55题_哔哩哔哩_bilibili
完全外连接是自然连接+左外连接新增的+右外连接新增的(如上图的右边一样,完全外连接有6个元组)
左外连接 右外连接
真题5
答案:D
讲解地址:2016年下半年第56题_哔哩哔哩_bilibili
这个题目我没搞得太懂,我是理解为R×S的效率是最低的,例如R关系属性值有100,S关系属性值有100个,那么R×S是10000个,然后在这10000个中查询符合条件的那自然效率极低,反而如果范围缩小的去查,那自然效率更高,D选项中在做笛卡尔积运算之前先进行了一次筛选,这样范围就小了,效率就高了
真题6
讲解地址:2021年上半年第54、55、56题_哔哩哔哩_bilibili
这个题目一开始我看见是三个关系我就动不了手,其实这三个表应该都是独立的,也就是这里不像前面的题目一样要你把它们这些关系拼接成一个新的关系,而是让你求拼装的哪些条件都是什么?值得一提是自然连接是要求要有公共属性的,所以第二个空在投影的里面必须包含商品号,即必须包含1,所以A是错的,基本上可以看出这样的题目都是用的排除法快速求解(其中汉字一定是要单引号引起来的)
投影转SQl语句
选择转SQl语句
笛卡尔积转SQl语句
自然连接转SQl语句
先把它的关系代数变形为上面等价的笛卡尔积表达式,然后在转SQL
真题
真题1
这里的序列号是合并之后的序列号,这个π1,3,6,7是自定义的投影,如果说只是63<6(R⋈S)转成等价的式子那就是π1,2,3,4,5,8,9(63<6(R⋈S))
总之就是如果给你指定的字母求对应的数字序列的题目那就是求笛卡尔积序列
如果是给你指定的序列要求对应的字母那就是自然连接后的序列
讲解地址:2013年下半年第51、52、53、54题_哔哩哔哩_bilibili
真题2
答案是CDB
讲解地址:2014年下半年第53、54、55题_哔哩哔哩_bilibili
真题3
讲解地址:2018年上半年第52、53题_哔哩哔哩_bilibili
真题4
总结:做这样的题目第一要细心看清楚列号对应的属性,第二看清楚是R×S还是R⋈S,如果是R⋈S的话那就要去重(也就是去掉重复的属性列,一般是去掉后面关系的重复列,例如R(A,B,C,D)和S(A,B,F,G)那自然连接的结果是R.A,R.B,R.C,R.D,S.F,S.G),可以看到S关系的A和B都去掉了,保留的是前面R关系的A和B
数据定义语句(DDL)
修改不是指的修改列的表名,而是指的修改列的类型,一般用上面modify来进行修改
列的完整性约束
not null 是不能为空
unique 是不能重复(也就是唯一约束)
not null unique 是不能为空并且不能重复
default 是设置默认值
表的完整性约束
primary key是主键约束(功能和not null unique 一样)
foreign key是外键约束(上面的外键约束语句意思是对sid设置外键约束并且参照S表中的sid)
check 是用户自定义完整性约束(上面语句意思是检查成绩是否在0-100范围内,也就是在表中插入数据的时候成绩这一列会有一个自动检查成绩范围的约束,不在这个范围就会报错)
数据操纵语言(DML)
数据查询语言(DQL)
投影查询
选择查询
排序查询
注意上面红色画出来的语句不是说课程号和分数都是降序排列,这里课程号没有指明是什么排序,那就是默认的升序,分数指明了是降序排序,但是这里是多条件排序,所以是先按课程号进行升序排序,如果课程号相同,那就按分数降序排序
聚合函数查询(注意聚合函数只会返回一个结果值)
上面这句是验证分数的平均值,也就是AVG集合函数
指的一提的是上面这样写是没问题的,可以进行加减乘除运算(这是我的知识漏洞)
同时要注意count(*)和count(列表名)的区别,区别就是count(*)会把null也算作一个值,会把null这条记录进行统计,而count(列表名)就直接忽视null的记录,不会把这条记录进行统计。
这是查询课程号的数量并且去重
数据分组
分组后
所谓的分组就是把属性值相同的分为一组,例如上面是按课程号分组的,那么课程号中相同的值就会被分作一组,分组主要用于聚合函数查询只能返回一个值,如果想看具体的情况就使用分组
这里要注意having和where的使用区别,区别就是如果拼接的条件里用到了聚合函数,那就只能用having,不能用where!
回炉重造:数据分组_哔哩哔哩_bilibili
内连接
回炉重造:内连接_哔哩哔哩_bilibili
外连接
回炉重造:外连接_哔哩哔哩_bilibili
子查询(先子查询再主查询)
真题
真题1
讲解地址:2010年上半年第53、54、55题_哔哩哔哩_bilibili
真题2
讲解地址:2012年上半年第55、56题_哔哩哔哩_bilibili
这里注意59题的3500是不要单引号引起来的,不要把这里和前面的选择6的条件搞混淆了,这里只有字符串才需要用单引号引起来,数值型是不需要用单引号引起来!
讲解地址:2013年上半年第56、57、58、59题_哔哩哔哩_bilibili
真题3
上面红色框出来的是正确答案,注意第56题的C和D选项,D选项是使用了DISTINCT关键字进行去重的,这里特别注意,由于这里使用了聚合函数所以用HAVING,其二由于分组了所以去重后每个组的结果数量都只会是1,例如上面D选项的结果就如下图所示,结果每个部门都是1,因为分组是把相同的分作一组,而相同的又会被去重掉,自然结果就是1
讲解地址:2014年上半年第54、55、56题_哔哩哔哩_bilibili
真题4
这里要跟真题3的56题区分开来,具体要不要去重要结合题意进行分析,真题3中员工和部门是一对多,不用去重,而这里项目和供应商是多对多,需要去重,因为同一个项目的同一个供应商提供多种零件,如果这时对项目属性进行统计就会大于1,也就是不去重的话结果是一定大于1的,单实际上只有一个项目
讲解地址:2017年上半年第54、55、56题_哔哩哔哩_bilibili
数据控制语言(DCL)
SQL访问控制
真题
真题1
真题2
真题3
这里注意视图它是虚拟表,对视图进行的增改操作实际上是对基本表进行操作,例如上面的创建student视图,它的基本表就是学生表(也就是这个视图是在谁的基础上创建的),然后在视图中插入不符合where后面的条件的数据,视图里不会新增这条数据,这条数据会新增到基本表中去,如果符合where后面的条件,那这条数据会到视图中去,这样就确保了视图中的数据都是符合where后面的条件的数据,例如上面的第二条插入会到视图中,第一条不会,第一条插入会到基本表中去
如果加了with check option的话就意味着这个视图的增改删操作必须要满足where 后面的条件才可以进行操作,不然就会报错,例如上面第一条插入4444的数据是软件工程专业,而where后面的条件是专业为计算机专业,所以会报错,插入失败,第二条同理会成功插入,也就是在这个例子中只能对专业是计算机专业的进行插入删除修改操作,如果专业不是计算机的就不能操作,但是可以对姓名增改删操作,因为where后面的条件并没有对姓名做出要求,只要你要操作的那个姓名他的专业是计算机就行
真题
真题1
真题2
真题
这里的箭头可以理解为决定的意思,例如学号--->姓名,可以理解为学号决定姓名
完整函数依赖就是一个组合里的任何真子集不能够决定依赖关系,例如(学号,课程号)----->成绩这是一个组合关系的函数依赖,表示学号和课程号两个一起决定成绩,这其中任何子集不能单独来确定这个依赖关系,例如学号不能单独决定成绩,课程号也是不能单独决定成绩,这就是完整函数依赖,如果不是一个组合,就是一一对应的函数依赖关系那一定是完整函数依赖,例如学号---->姓名这样的就是完整函数依赖,它不是一个组合,(学号,课程号)----->成绩这样的才是一个组合,这里还要理解真子集的含义,例如(A,B,C)的真子集有(A),(B),(C),(A,B),(A,C),(B,C)跟数学里的概念是一样的
部分函数依赖就是一个组合里任意真子集能够决定依赖关系,例如(学号,课程号)---->姓名这个组合关系的函数依赖中,单一个学号就能够决定姓名了,也跟就不需要课程号,所以这就是部分函数依赖
如果只有一个候选键那就是主键,有多个候选键那就挑一个做主键
真题1
这里主要是之前我有个误解,我觉得AC如果是候选键的话那AC是一个整体,不能用C--->B这个依赖关系,事实上可以直接用
做题技巧:但凡出现在箭头右边的都不可能是候选键,例如上面这题箭头右边有B和C,那直接排除,剩下一个A,也就是这个A一定是候选键或者候选键中一定要有A,然后发现A不能单独推出U,所以就试一下AC和AB能不能推出
然后主属性是指候选键包含的属性那就是主属性,例如上面的AC和AB为候选键,那主属性就有ABC
讲解地址:2011年上半年第55、56题_哔哩哔哩_bilibili
这些题目在我没听这个博主的课之前是完全不会做,但是现在我都会做,所以后面题目都是没听直接做的,就不会有什么笔记,讲解地址就放这一个,顺序跟视频题目顺序是一样的,以此类推,不懂直接去听讲解
真题2
真题3
某个关系的主键为全码,那这个关系的主键就是它所有属性组合在一起,例如上面的主键就是HLMP
真题4
真题5
这里的什么是冗余的这个我是第一次见到这样的题型,我的做法是直接把对应的选项去掉看能不能用A1这个主键去推出对应的U,如果可以那就是冗余的,一个个试,试出C是多余的,在F中去掉C选项的这个函数依赖照样退出U
真题6
真题7
这里可以立马确定A1,但是单独A1推不出来U,所以直接快速排除没有A1的候选键直接选C,都不用一个个试了,候选键必须包含A1
真题8
第二题中用到了那个推理规则,A-->BC那么就可以得出A-->B,A-->C,这是分解法则,经常用到,需要掌握的,
然后看看有没有A-->B,B-->C这样的的,因为这样可推出A-->C
真题9
这里注意AC-->D是不能拆了,如果是 AC-->DE的话应该可以拆成AC-->D和AC-->E
真题10
真题11
讲解地址:2021年下半年第52、53题_哔哩哔哩_bilibili
这里主要是第二题有个推理的过程,A和B我是推理出来了,然后C选项是可以推出A1-->A4和A2-->A4,然后就得出A1A2-->A4,这个的话在推理原则里并没有这条,所以只是可以这样理解,相比D选项压根推不了,所以这里选择最优解为D选项,总体来说题目不严谨
第一范式
上面这个是不符合第一范式,因为它的工资可以再进行细分,要符合第一范式那就变成下面这样就可以了
第一范式说白了就是看属性列表能不能在继续分,能继续分那就不符合第一范式
然后第一范式会有数据冗余和更新异常(包括修改,删除,插入异常)这些问题并存在部分函数依赖
数据冗余容易理解,例如上图画出来的可以看出是内容是一样的,那就重复了很多次这就是数据冗余
更新异常中的修改异常,好比修改红色框中的张三为张四,那就必须把所有的张三都改成张四,如果只改一条就会出现问题,查询学号为001的数据的时候那姓名可能是张三也可能是张四,这就是修改异常
更新异常中的删除异常,好比删除高等数学这个课程名,但是上面这个表中要删除高等数学这个课程名那整一条数据都会被删除掉,也就是孙七这条记录都删除了,而我只是想删除这个课程,这就是删除异常
更新异常中的插入异常,好比我只是想要插入一个学生的信息是插入不成功的,因为上面这个表中主键是学号和课程号,由于主键的完整性约束,不能为空或部分为空,无论是单独插入学生信息还是单独插入课表信息都是插入失败,必须两个都插入才能成功,这就是插入异常
第二范式
第二范式是在第一范式的基础上解决了部分函数依赖的问题得来的,第二范式要求每个非主属性都完全依赖于候选键,上面的例子中候选键是学号和课程号,所以学号和课程号都是主属性,其他的都是非主属性,例如姓名是非主属性,由于姓名是由学号决定的,跟课程号毫无关系,所以姓名只是部分依赖于候选键,因此不符合第二范式的要求,但是符合第一范式
前面说的那个例子符合第一范式不符合第二范式,只要消除了部分函数依赖就能够转为第二范式,往往都是通过分解关系来实现消除部分函数依赖的,例如上面的把前面的关系分解成三个关系后就都满足于完全函数依赖(也就是把一个表分解为三个表),所以它是符合第二范式的
回炉重造地址:关系模式分解消除部分函数依赖_哔哩哔哩_bilibili
第二范式只是解决了第一范式的部分函数依赖问题,但是数据冗余和更新异常没有完全解决,因为存在传递函数依赖,例如上面的 学号-->学院,学院-->院长,得出学号-->院长
第三范式
第三范式是在第二范式的基础上,并且消除了非主属性的传递依赖问题得到的,原来学号-->学院,学院-->院长,得出学号-->院长这是传递依赖,一般把后面的那个关系直接给拿出来单独作为一个关系,例如这个传递依赖中把后面的学院-->院长从原来的关系中抽离出来作为一个新的关系就可以解决传递依赖这个问题了
第三范式只是解决了第二范式的传递函数依赖问题,但是数据冗余和更新异常没有完全解决,因为存在主属性对候选码的部分依赖和传递依赖
例如上图就是存在主属性对候选码的部分依赖这个问题,在F函数关系依赖中,红色画出的就是存在主属性对候选码的部分依赖的问题,因为候选码是(书店和图书)。而它书店就能够推出店长,跟图书没啥关系,所以存在部分依赖
回炉重造地址:第三范式和消除传递函数依赖_哔哩哔哩_bilibili
BC范式
BC范式是在第三范式的基础上解决了存在主属性对候选码的部分依赖和传递依赖这个问题,同时还消除了插入和删除异常,下面就是把上面的表再进行分解,解决了存在主属性对候选码的部分依赖和传递依赖这个问题从而到达了BC范式
回炉重造地址:消除主属性对候选码的部分、传递函数依赖_哔哩哔哩_bilibili
第四范式
回炉重造地址:第四范式_哔哩哔哩_bilibili
总结
1、一般软考中的相关题目是都符合第一范式的,不需要考虑
2、判断非主属性是否对候选键存在部分函数依赖,说白了就是看非主属性能不能只靠候选键的一部分就可以推理出来(靠候选键组合中任意一个主属性就可以推出那个非主属性的就不是第二范式,但是如果是组合中其中一个和其他非主属性组合在一起推出非主属性的那就没问题)
3、看有没有传递依赖,存在传递依赖不符合第三范式
4、看主属性对候选码有没有传递依赖或部分依赖,也就是主属性可以由候选码中任意一个就推出来那就不符合BCNF范式
5、看有没有多值依赖,并且多值依赖的左边是码,例如A->B,A->C,并且A是码,那就符合第四范式
做题技巧
首先知道软考的相关这类题都是符合第一范式的,所以可以直接判断是否符合第二范式,判断第二范式首先要知道这个关系的候选键是什么?这是为了知道哪些属性是主属性?哪些是非主属性?这个例题中零件号和供应商的组合属性是候选键,所以主属性是零件号和供应商,其他都是非主属性,然后判断非主属性是否对候选键存在部分函数依赖,说白了就是看非主属性能不能只靠候选键的一部分就可以推理出来(靠候选键组合中任意一个主属性就可以推出那个非主属性的就不是第二范式,但是如果是组合中其中一个和其他非主属性组合在一起推出非主属性的那就没问题),例如零件名称是非主属性,根据函数依赖关系,零件号-->零件名称,可以看出这个非主属性只需要零件号就能推出来,跟候选键中的供应商没屁关系,所以就是存在部分依赖,不符合第二范式!所以是第一范式!
候选码是EM,所以主属性是E和M,非主属性是N,Q,L,然后去函数依赖集里看非主属性能不能只靠候选键的一部分就可以推理出来,发现E可以直接推出N,不需要M,也就是我所说的只靠候选键的一部分就可以推出某个非主属性,所以不符合第二范式,应该是第一范式!
候选键是学生和时间的组合,主属性就是时间和学生,非主属性就是课程,教师,成绩,教室,这些非主属性都不能由候选键的部分推理出来,所以符合第二范式,然后在判断符不符合第三范式
这里由于存在传递函数依赖,所以不符合第三范式,挺难搞的这个题,它用到了伪传递原则,然后可以推理出(时间,学生)时间-->课程这个关系,由于这两个时间是一样的所以去掉一个后最终是(时间,学生)-->课程,然后课程-->教师,所以得到(时间,学生)-->教师,这是传递函数依赖,因此不符合第三范式,所以可以看出其实就是把那些关系通过那些原则去变形,挖掘其中隐藏的关系,看看有没有存在传递函数依赖的,有就不符合第三范式
回炉重造地址:判断传递函数依赖技巧_哔哩哔哩_bilibili
真题
真题1
这里我是看存不存在主属性对候选码的部分依赖或传递依赖来判断能不能达到BC范式,对于R2关系来说,主属性是学生和课程,非主属性是成绩,候选键是学生和课程的组合,可以看到候选键中是包含主属性的,所以不存在主属性对候选码的部分依赖,就一个函数关系依赖,也不存在主属性对候选码的传递依赖,所以满足BC范式,第四范式主要是看存不存在多值依赖,所谓的多值依赖就是一个属性决定很多个其他属性,例如A-->B,A-->C,A-->D,这里一个A决定了BCD三个属性,也就是多值依赖
讲解地址:2010年下半年第54、55、56题_哔哩哔哩_bilibili
真题2
真题3
真题4
真题5
真题6
这里分享一个判断第二范式的技巧,找到主属性A2和A5后,那么其他都非主属性都知道了,直接看非主属性是怎么得到的?如果是由单独的一个A2或A5就能得到那就不符合第二范式的要求,例如上面题目的A1是由A5和A6一起得到的,所以这个A1是不存在部分函数依赖的,如果说上面关系中有A5-->A1,那就存在部分函数依赖,同理,再看A3是由A1得到的,跟A2和A5没屁关系,所以也不存在部分函数依赖的,总之,只有非主属性是靠单独的一个主属性就能推理得到的那就是存在部分函数依赖,不符合第二范式,其他都是不存在部分函数依赖的
关系分解
真题1
这个题目跟前面做的不一样,它并没有给函数依赖关系,而是直接给了个表,首先不要慌,可以看到每一列都有重复的,所以一定是一个组合的候选键,这里选员工号和家庭成员组合为候选键,为什么不选成员关系呢?因为成员关系中可能会有多个兄弟姐妹,所以主属性是员工号和家庭成员,然后姓名是可以直接由员工号推出,存在部分函数依赖,不符合第二范式,主要是分解表怎么分解?自己看视频去
讲解地址:2009年上半年第52、53、54题_哔哩哔哩_bilibili
真题2
这里我第一想法是分解成A选项,但是当我看到库存量的时候我发现单靠一个供应商决定不了,所以A选项是有问题的,库存量应该是由零件号和供应商组合决定,所以C选项没问题
讲解地址:2010年上半年第56题_哔哩哔哩_bilibili
真题3
讲解地址:2016年上半年第54、55、56题_哔哩哔哩_bilibili
无损连接和保持函数依赖
这里我是没看的太懂
回炉重造地址:无损连接和保持函数依赖_哔哩哔哩_bilibili
真题1
是否保存函数依赖就直接看分解后的两个关系中是否有原来函数依赖集的那些关系依赖,如果没有那就不保持!
讲解地址:2013年上半年第55题_哔哩哔哩_bilibili
真题2
判断是有损连接还是无损连接直接把分解后的关系作自然连接,看看得到的结果是不是跟原来的R一致,如果不一致那就是有损连接,否则无损连接,在这里的自然连接就是把分解后所有关系的属性列合在一起去个重就可以了,例如上面的把分解后的两个关系中的属性列合在一起是A1A2A1A3,A1重复,去重后是A1A2A3,跟R对比少了A4,是有损连接,这里要注意自然连接是必须要两个关系有公共的属性自然连接才有值,否则就是空集,例如上面的都有公共属性A1,所以自然连接不是空集,但如果是(A1,A2),(A3,A4)这样的就没有公共属性,自然连接就是空集,如果多个关系自然连接,只要有一个自然连接结果是空集,那就整个关系自然连接的结果都是空集
讲解地址:2015年上半年第52题_哔哩哔哩_bilibili
真题3
讲解地址:2017年下半年第54、55题_哔哩哔哩_bilibili
上面图红色框出来的都是重点
需求分析
E-R图(实体-联系-属性)
真题
真题1
真题2
讲解地址:2010年下半年第52、53题_哔哩哔哩_bilibili
弱实体
概念设计(合并E-R图)
重点是这个E-R图合并的时候的三种冲突
真题
讲解地址:2020年下半年第51、52题_哔哩哔哩_bilibili(51题我没看懂)
逻辑设计(把E-R图转为对应的关系模式)
一对一转换
一对一转换就是把联系对应的属性随便放到一个实体里面(注意联系本身不放),然后把另外的实体的主键也放到该实体里
一对多转换
一对多转换就是把联系对应的属性放到多方实体类中(注意联系本身不放),并且把其他实体的主键也放到该多方实体类中
多对多转换
多对多转换就是把联系单独作为一个新的关系,把对应联系的实体的主键的组合作为这个新关系的主键
关系模式的规范化
真题
真题1
真题2
这里第54题我是选了A选项,但是如果一个病人总是找一个医生来看病的话,那么通过病历号和职工号是没办法唯一标识一条记录的,所以还要加一个就诊时间才能唯一标识一条记录
讲解地址:2011年上半年第51、52、53、54题_哔哩哔哩_bilibili
真题3
真题4
这个题目的54小题我是选了B,因为我觉得电话和联系方式是一个东西,属于命名冲突,这就是搞混淆了,命名冲突出现在E-R图组合里,而这里只是一个自然连接,说白了就是我想太多了
真题5
真题6
真题7
真题8
真题
真题1
真题2
真题3
把对数据的增删改操作写到日志文件中
排它锁就是加了这个锁那么其他的排它锁和共享锁都不能加了,直到这个锁被释放了才可以加其他的排它锁和共享锁
共享锁就是加了这个锁那么不能加排它锁,但是可以加共享锁,直到这个锁被释放了才可以加排它锁
真题1
真题2
真题
以下这些题目很多都是不按套路出牌的,出现的概率非常小,所以就当课外扩充知识点,随便背一下就行了
杂题1
多对多的转换是要转换成一个新的关系模式,并且把对应的实体的主键作为候选键
杂题2
杂题3
杂题4
讲解地址:2018年上半年第54、55题_哔哩哔哩_bilibili
杂题5
杂题6