数据库系统概论攻略
1. 数据库系统概论
1) 就这个数据给出其两个以上的语义(李明,男,197205,江苏南京市,计算机系,1990)。
一、语义:学生姓名,性别,出生年月,籍贯,所在院系,入学时间。
解释:李明,性别男,1972年5月出生,出生于江苏南京市,1990年入学,就读于计算机系。
二、语义:学生姓名,性别,出生年月,大学所在地,所在院系,入学时间。
解释:李明,1972年5月出生,1990年考入江苏南京市的一所大学的计算机系。
2) 怎么理解数据库定义中的:有组织、可共享?
数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
3) 数据库的冗余度为零好不好?
数据冗余会妨碍数据库中数据的完整性,也会造成存贮空间的浪费。尽可能地降低数据冗余度,是数据库设计的主要目标之一。但是冗余度为零的话,数据之间将不再有联系,所以数据库的冗余度为零并不好
4) 怎么理解:数据独立性较高?数据的物理独立性和逻辑独立性?
物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。 逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,当数据的逻辑结构改变时,用户程序也可以不变。
据的逻辑结构改变了,用户程序也可以不改变。
5) 用文本文件储存数据和用数据库来存储数据有何优劣?
文件系统面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,整体无结构,由应用程序自己控制。
数据库的缺点是并发访问麻烦,无法实现多个程序同时修改数据库里面的不同记录;查询、修改、删除非常麻烦,只能顺序查找,修改、删除需要更新整个文件。优点在于程序简单,数据库管理方便。
6) CSV文件是什么?
csv是最通用的一种文件格式,可以非常容易地被导入各种PC表格及数据库中。 此文件,一行即为数据表的一行。生成数据表字段用半角逗号隔开。
2. 数据模型及其组成
1) 信息世界与机器世界有何关系
信息世界是概念模型,机器世界为计算机上的数据模型,我们要把信息世界转换为机器世界
2) 信息世界与现实世界有何关系
信息世界由现实世界抽象而来,即把显示世界中的客观对象抽象为某一种信息结构。
3. 概念模型
模型:对现实世界中某个对象特征的模拟和抽象。
两类数据模型:用户从数据库所看到的模型,是具体的DBMS所支持的数据模型,如网状数据模型(Network Data Model)、层次数据模型(Hierarchical DataModel)等。此模型既要面向用户,又要面向系统,主要用于数据库管理系统(DBMS)的实现。
概念模型:面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且还与操作系统和硬件有关。每一种逻辑数据模型在实现时都有其对应的物理数据模型。DBMS为了保证其独立性与可移植性,大部分物理数据模型的实现工作由系统自动完成,而设计者只设计索引、聚集等特殊结构。
数据模型:面向数据库用户的实现世界的模型,主要用来描述世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析数据以及数据之间的联系等,与具体的数据管理系统(DatabaseManagement System,DBMS)无关。概念数据模型必须换成逻辑数据模型,才能在DBMS中实现。
一、信息世界中的基本概念
(1)实体(Entity)客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念。
(2)属性(Attribute)实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。
(3)码(Key)唯一标识实体的属性集称为码。
(4)域(Domain)属性的取值范围称为该属性的域。
(5)实体型(EntityType)用实体名及其属性名集合来抽象和刻画同类实体称为实
(6)实体集(EntitySet)同一类型实体的集合称为实体集
(7)联系(Relationship)
1. 现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系。
2. 实体内部的联系通常是指组成实体的各属性之间的联系
3. 实体之间的联系通常是指不同实体集之间的联系
一对一联系定义:如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1
对多联系定义:如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n
多对多联系定义:如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体B具有多对多联系,记为m:n
E-R图:
实体型:用矩形表示,矩形框内写明实体名;
属性:用椭圆形或圆角矩形表示,并用无向边将其与相应的实体连接起来;多值属性由双线连接;主属性名称下加下划线;
联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型
在E-R图中要明确表明1对多关系,1对1关系和多对多关系。
1对1关系在两个实体连线方向写1;
1对多关系在1的一方写1,多的一方写N; ˙多对多关系则是在两个实体连线方向各写N,M
4. 关系模型
关系(Relation)
一个关系对应通常说的一张表
元组(Tuple)
表中的一行即为一个元组
属性(Attribute)
表中的一列即为一个属性,给每一个属性起一个名称即属性名
主码(Key)
表中的某个属性组,它可以唯一确定一个元组。
域(Domain)
属性的取值范围。
分量
元组中的一个属性值。
关系模式
对关系的描述关系名(属性1,属性2,...,属性n)
学生(学号,姓名,年龄,性别,系,年级)
优点:
建立在严格的数学概念的基础上
概念单一
实体和各类联系都用关系来表示
对数据的检索结果也是关系
关系模型的存取路径对用户透明
具有更高的数据独立性,更好的安全保密性
简化了程序员的工作和数据库开发建立的工作
缺点:
存取路径对用户透明导致查询效率往往不如非关系数据模型
为提高性能,必须对用户的查询请求进行优化增加了开发DBMS的难度
5. 数据库系统结构
(1) 模式:(逻辑模式)
模式是数据库中全体数据的逻辑结构和特征的描述。它仅仅涉及到结构的描述,不涉及到数据库本身具体的值。模式的一个具体值称为模式的一个实例,同一个模式可以有很多实例。模式是相对稳定的,而实例是相对变动的,因为数据库中的数据在不断更新。模式反映的是数据的结构及其联系,而实例反映的是数据库某一时刻的状态。
(2) 外模式:(子模式/用户模式)
外模式又称子模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。用户可以通过外模式描述语言来描述、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言对这些数据记录进行。外模式反映了数据库的用户观。
(3) 内模式:存储模式或内视图)
内模式又称存储模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式翱物理结构,对应着实际存储在外存储介质上的数据库。内模式由内模式描述语言来描述、定义,它是数据库的存储观。
三级模式的优点:
(1)保证数据的独立性(内模式与模式分开物理独立;外模式与模式分开逻辑独立)
(2)简化用户窗口
(3)有利于数据共享
(4)利于数据的安全保密
(5)数据存储由DBMS管理(用户不用考虑存取路径等细节)
二级映像功能:
1) 外模式/模式映像(应用可扩充性)
定义外模式(局部逻辑结构)与模式(全局逻辑结构)之间的对应关系,映象定义通常包含在各自外模式的描述中,每一个外模式,数据库系统都有一个外模式/模式映象。
用途:保证数据的逻辑独立性
当模式改变时,数据库管理员修改有关的外模式/模式映象,使外模式保持不变
应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
(2) 模式/内模式映像(空间利用率,存取效率)
模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关。数据库中模式/内模式映象是唯一的。该映象定义通常包含在模式描述中。
用途:保证数据的物理独立性
当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变。应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。
二级映像优点:
(1)保证了数据库外模式的稳定性。
(2)从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。
(3)数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去
6.域:在关系中,每一个属性都有一个取值范围,称为属性的值域。
笛卡尔积:给定一组域D1,D2,...,Dn,这些域中可以有相同的。D1,D2,...,Dn的笛卡尔积为:D1×D2×...×Dn={(d1,d2,...,dn)|diDi,i=1,2,...,n}所有域的所有取值的一个组合
元祖(Tuple)表中的行即为元组
分量(Component)笛卡尔积元素(d1,d2,...,dn)中的每一个值di叫作一个分量
关系:
由n个域笛卡尔积(即从每个域中抽取作为元组的一个分量)的子集组成的一张2维表称为关系。由于并非所有元组都有意义,所以只有那些有意义的元组的集合才是关系。
关系有3个属性:a、关系名(表名) b、属性列表及值域(列) c、属性间的数据依赖(完整性约束)
7. 关系操作和关系完整性
常用的关系操作:选择(select)、投影(project)、连接(join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)等查询(Query)操作和增加(Insert)、删除(Delete)、修改(Update)操作两大部分
关系完整性:
实体完整性规则:
若属性A是基本关系R的主属性,则属性A不能取空值。实体完整性规则规定基本关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。
实体完整性规则的说明
(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。例如学生关系对应于学生的集合。
(2)现实世界中的实体是可区分的,即它们具有某种唯一性标志。
(3)相应地,关系模型中以主码作为唯一性标志。
(4)主码中的属性即主属性不能取空值。所谓空值就是"不知道"或"无意义"的值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体。这与第(2)点相矛盾,因此这个规则成为实体完整性。
外码(ForeignKey):
设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码
参照完整性规则:
若属性(或属性组)F是基本关系R的外码,它对于基本关系S的主码K相对应(基本关系R和S不一定是不同的关系),则对于R中的每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。
8、关系的并
2、关系的交可以用差来表示,那么关系的并呢
集合的并运算
设有兼容关系R、S(即R、S具有相同的关系模式),则二者的并运算定义为:
式中“∪”为并运算符,t为元组变量,结果R∪S为一个新的与R、S兼容的关系,该关系是由属于R或属于S的元组构成的集合。
数据库系统概论攻略(研讨题9-15)
9选择与投影
1.查询信息系男同学的年龄,写出关系代数表达式。
πSage(σSdept=‘IS’∧Ssex=男(Student))
2.查询19岁到21岁之间的学生。
πSname(σ‘19’<Sage<‘21’(Student))
10连接
查询ID号为20015234,同学的操作系统的成绩,能写出多少个关系代数表达式。
πGrade,Sname(σID=‘20015234’∧Cname=‘操作系统’(SC⋈S))
πGrade(σID=‘20015234’∧Cname=‘操作系统’(SC))
πSname(σID=‘20015234’∧Cname=‘操作系统’(S))
11除
在关系R中A可以取3个值分别为a,b,c 其中a的象集为{(bcd),(bef),(bhk)},bde象集为{(def),(dd1)},c的象集为{(kcd),(kef)},S在(c,d)上的投影为{(cd),(ef)}
显然只有a和c的象集包含了S在(c,d)上的投影。
所以R÷S={a,c}
12关系代词的综合运用
写出关系代数表达式
(1)查询课程成绩在90分以上的学生姓名和成绩
πSname,Grade(σCno>‘90’(SC⋈S))
(2)查询CS系学生选修的课程
πCno(σSdept=‘CS’∧Cname(C))
13SOL介绍
1.国际标准化组织是干什么的
制定国际标准化
2.SQL语言与SQL Sever是什么关系
My SQL是第三方设计的软件,SQL Sever是微软设计的软件。
MySQL 是一个开放源代码的数据库管理系统,SQL Server 2000 是一个完整的关系数据库管理系统。
3.写出将名为S_T模式改名为S_T1的SQL语句
ALTER TABLE S_T ALTER COLUMN S_T1;
14基本表的定义删除和修改:
1建立一个教师表Teacher;建立一个工作岗位表Work
教师表:
CREATE TABLE Teacher
(Tno CHAR(9) PRIMARY KEY,
Tname CHAR(20) UNIQUE,
Tsex CHAR(2),
Tage SMALLINT,
Tdept CHAR(20)
);
工作岗位表:
CREATE TABLE Work
(Wno CHAR(9) PRIMARY KEY,
Wname CHAR(20) UNIQUE,
Tincome INT,INTEGER,
Tage SMALLINT,
Ttime INTERVAL
);
2.SQL语言中模式与基本表的关系
一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表,视图和索引等数据库对象。
3.删除基本时要注意什么?
若选择RESTRICT,则该表的删除是有限制条件的。欲删除的基本表不能被其他表的约束所引用,不能有视图,不能有触发器,不能有存储过程或函数等。如果存在这些依赖该表的对象,则此表不能被删除。
若选择CASCADE,则该表的删除没有限制条件。在删除基本表的同时,相关的依赖对象,例如视图,都将被一起删除。
4.猜猜看:购票网站定义了哪些基本表、?
购票表
身份证号码,姓名,购买时间,动车列次,开车时间,起始地点,目的地点。
退票表
身份证号码,姓名,退票时间,动车列次
15.索引的建立与删除
1.建立索引后,查询所需要的时间代价包括哪些?
包括占用一定的存储空间,会增加数据可的负担
2.举例说明索引更新的时间代价
假如在一个学生表中,每一个系主任姓名重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同,这将占用了大量的空间。
16、选择表中的若干列 写出下列查询的SQL语句
(1) 查询课程号和课程名
(2) 查询学生的学号和年龄
(3) 查询学号、课程号和成绩
17_查询满足条件的元组 写出下列查询的SQL语句
(1) 查询成绩及格的学生的学号和成绩
(2) 查询学生学号和成绩
(3) 查询CS系的学生或者性别为“女”的学生的记录
(4) 查询CS系和MA系,且年龄大于18岁的学生的记录
18_Orderby聚集函数Groupby 写出下列查询的SQL语句
(1) 查询各科课程的平均成绩,并按升序排序
(2) 查询CS系女学生的年龄,并按降序排序
(3) 查询各系男学生的平均年龄,并按照系部升序、年龄降序排序
19_连接查询 写出下列查询的SQL语句
(1) 查询’CS’系学生所选课程的平均分
(2) 查询选了1号课程的学生的姓名
(3) 查询选了1号课程的男学生的姓名
20_嵌套查询与带IN谓词的子查询 写出下列查询的SQL语句
(1) 查询’CS’和’MA’系学生选修的课程号
(2) 查询选修了’刘晨’选修的课程的学生学号和姓名
21_带有比较运算符的子查询 写出下列查询的SQL语句
(1) 查询与’刘晨’同龄的学生选修的课程号
(2) 查询学分数比数学的学分数多的课程号和课程名
22_带有ANY或ALL谓词的子查询 写出下列查询的SQL语句
(1) 查询选修了全部课程的学生的学号
(2) 查询所选课程都及格的学生的学号和姓名
研讨题16-22题做题攻略
16.(1)在本题中是需要查询课程号和课程名,所以先写出课程号(Cno)和课程名(Cname),SQL表示即"SELECT Cno,Cname",然后再写从哪个表中查询,即"FromCourse",最后答案为:
SELECTCno,Cname
FromCourse;
(2)在本题中是需要查询学生的学号和年龄,所以先写出学生的学号(Sno)和年龄(Sage),SQL表示即"SELECT Sno,Sage",然后再写从哪个表中查询,即"FromStudent",最后答案为:
SELECTSno,Sage
FromStudent;
(3)在本题中是需要查询学号、课程号和成绩,所以先写出学号(Sno)和课程号(Cno)还有成绩(Grade),SQL表示即"SELECT Sno,Cno,Grade",然后再写从哪个表中查询,即"From SC",最后答案为:
SELECTSno,Cno,Grade
FromSC;
也等价于
SELECT*
FromSC;
17.(1)在本题中是需要查询成绩及格的学生的学号和成绩,所以先写出学号(Sno)和成绩(Grade),SQL表示即"SELECTSno,Grade",然后再写从哪个表中查询,即"From SC",最后写条件,即"Where Grade>60",所以最后答案为:
SELECTSno,Grade
FromSC
WhereGrade>60;
(2)在本题中是需要查询学生学号和成绩,所以先写出学号(Sno)和成绩(Grade),SQL表示即"SELECT Sno,Grade",然后再写从哪个表中查询,即"FromSC",所以最后答案为:
SELECTSno,Grade
FromSC;
(3)在本题中是需要查询CS系的学生或者性别为“女”的学生的记录,因为没有说要查询出特定属性,所以直接写"SELECT*",然后再写从哪个表中查询,即"From Student",最后写条件"Where Sdept="CS" or Ssex=‘女’"所以最后答案为:
SELECT*
FromStudent
WhereSdept="CS" or Ssex=‘女’;
(4)在本题中是需要查询CS系和MA系,且年龄大于18岁的学生的记录,因为没有说要查询出特定属性,所以直接写"SELECT *",然后再写从哪个表中查询,即"FromStudent",最后写条件"Where Sdept="CS" ORSdept="CS" AND Sage>18"所以最后答案为:
SELECT*
FromStudent
WhereSdept="CS" OR Sdept="CS" AND Sage>18;
18.(1)在本题中是需要查询各科课程的平均成绩,并按升序排序且使用_Orderby和Groupby。所以先写出课程号(Cno)和平均成绩 AVG(Grade),SQL表示即"SELECT Cno,AVG(Grade)",然后再写从哪个表中查询,即"From SC ",再写聚集函数Group by Cno andOrder by AVG(Grade) ASC。最后答案为:
SELECTCno,AVG(Grade)
FromSC
Groupby Cno and Order by AVG(Grade) ASC;
(2)在本题中是需要查询CS系女学生的年龄,并按降序排序且使用_Orderby和Groupby。因为没有说要查询出特定属性,所以直接写"SELECT *,然后再写从哪个表中查询,即"From Stuent ",再写条件Where Sdept=‘CS’AND Ssex=‘女’,最后写聚集函数Group by Sno and Order by Sage DESC。最后答案为:
SELECT*
FromStuent
WhereSdept=‘CS’AND Ssex=‘女’
Groupby Sno and Order by Sage DESC;
(3)在本题中是需要查询各系男学生的平均年龄,并按照系部升序、年龄降序排序且使用_Orderby和Groupby。因为没有说要查询出特定属性,所以直接写"SELECT *,AVG(Sage)"然后再写从哪个表中查询,即"FromStuent ",再写聚集函数 "Group by Sno and Order byAVG(Grade) ASC"。
数据库系统概论攻略(研讨题23-29)
23.带有EXIST谓词的子查询
1)查询所有选修了课程的学生号
SELET Sno
FROM SC
WHERE EXIST
(SELET*
FROM Course
WHERE Sno=SC.Sno AND Cno=’1’);
2)查询所有没有被学生选修的课程名
SELET Cname
FROM Course
WHERE NOT EXIST
(SELET*
FROM SC
WHERE Cno=Course.Cno AND Cno=’1’);
24.集合查询
1)查询’CS’系和’MA’系学生的选修的课程;
SELET Cname
FROM Course
WHERE Sdept=’CS’
UNION
SELET Cname
FROM Course
WHERE Sdept=’MA’;
2)查询年龄不大于20岁,且不在’MA’系的学生
SELET Sname
FROM Student
WHERE Sage<=20
INTERSECT
SELET Sname
FROM Student
WHERE Sdept=’CS’ AND Sdept=’IS’;
25.插入数据
对每门课,求该课的平均分数、最高分数、最低分数,并把结果存入数据库
首先建立一个新表,其中一列存放课程号,其余存放相应的数据
CREATE TABLE Course_Grade
(Cno CHAR(15)
Avg_Grade SMALLINT
High_Grade SMALLINT
Low_Grade SMALLINT);
然后对SC表按课程号分组求各数据,在把数据存入新表中
INSERT
INTOCourse_Grade(Cno,Avg_Grade,High_grade,Low_grade)
SELETCno,AVG(Grade),MAX(Grade),MIN(Grade)
FROM SC
GROUP BY Cno;
26.修改数据和删除数据
1)将所有学分为2的课程的学分都加1
UPDATE Course
SET Ccredit=Ccredit=+1
WHERE Ccredit=’2’;
2)将学分为2的课程的成绩置零
UPDATE SC
SET Grade=0
WHERE Cno IN
(SELET Cno
FROM Course
WHERE Ccredit=’2’);
3)删除男同学的选课记录
DELET
FROM SC
WHERE Sno IN
(SELET Sno
FROM Student
WHERE Ssex=’男’);
27.视图
1)建立信息系男同学的视图
CREATE VIEW IS_malestudent
AS
SELET Sno,Sname,Sage,Sage
FROM Student
WHERE Ssex=’男’;
2)建立数学系学生选了学分为2的课程的视图
CREATE VIEW MA_Student
AS
SELET Sno,Sname,Sage,Ssex
FROM Student,SC,Course
WHERE Ccredit=’2’ AND
Sdept=’MA’ AND
Student.Sno=SC.Sno AND
Course.Cno=SC.Cno;
3)建立课程及课程平均成绩的视图
CEATE VIEWCourse_grade(Cno,avg_Grade)
AS
SELET Cno,AVG(Grade)
FROM SC
GROUP BY Cno
28,视图的删除、查询及更新
1)建立所有选修了‘计算机导论’课程的‘男’同学的成绩表
CREATE VIEW CS_Grade
AS
SELET Sno,Sname, Grade
FROM Student,SC,Course
WHERE Sdept=’CS’ AND
Ssex=’男’ AND
Student.Sno=SC.Sno AND
Course.Cno=SC.Cno;
2)在上面视图中查询‘张三’的成绩
SELET Sno,Grade
FROM CS_Grade
WHERE Sname=’张三’;
3)向上面视图插入一个新的选修‘计算机导论’课程的学生的记录,其中学号为200,姓名为 李四,成绩为 78
INSERT
INTO CS_Grade
VALUES(‘200’,’李四’,’78’)
29.计算机安全
1.你所了解的棱镜计划
众所周知,2013年6月,前中情局(CIA)职员爱德华·斯诺登将两份绝密资料交给英国《卫报》和美国《华盛顿邮报》,并告之媒体何时发表。按照设定的计划,2013年6月5日,英国《卫报》先扔出了第一颗舆论炸弹:美国国家安全局有一项代号为"棱镜"的秘密项目,要求电信巨头威瑞森公司必须每天上交数百万用户的通话记录。6月6日,美国《华盛顿邮报》披露称,过去6年间,美国国家安全局和联邦调查局通过进入微软、谷歌、苹果、雅虎等九大网络巨头的服务器,监控美国公民的电子邮件、聊天记录、视频及照片等秘密资料。
而百度百科上对棱镜计划的介绍如下:
棱镜计划(PRISM)是一项由美国国家安全局(NSA)自2007年小布什时期起开始实施的绝密电子监听计划,该计划的正式名号为“US-984XN”。英国《卫报》和美国《华盛顿邮报》2013年6月6日报道,美国国家安全局(NSA)和联邦调查局(FBI)于2007年启动了一个代号为“棱镜”的秘密监控项目[1] ,直接进入美国网际网路公司的中心服务器里挖掘数据、收集情报,包括微软、雅虎、谷歌、苹果等在内的9家国际网络巨头皆参与其中。
我所认为的棱镜计划,是现如今数据安全隐私性的缺失和各种个人隐私数据被高价值的商业利用,当代的个人隐私数据安全性极其堪忧
2)数据库的安全性问题是怎么产生的
数据库的特点在于能共享,而这样既有利又有弊,数据大量集中在一起,然后为众多的用户共享使用,使得极有可能会出现数据泄露等极危险的安全性问题。
数据库系统概论攻略(研讨题30-36)
30.数据库的安全控制
常言道,堡垒是从内部攻破的。请从这句话谈谈数据库的安全问题。
SQL注入是攻击数据库应用系统的一种主要技术。它借助应用程序通过参数化、动态SQL语句与数据库系统进行交互的内部逻辑,利用程序中存在的漏洞或Bug。构造与应用程序设计预期不同的SQL声明,非法访问非授权数据、篡改数据、监视隐私、破坏系统。SQL注入攻击是一个严重而又普遍的数据库安全问题。
31.数据模型及其组成
设计一个情景,在mysql上创建基本表,然后根据这个情景对本组的同学分配不同的权限,并进行授权操作和非授权操作,体会自主储存控制。
把查询Student表的权限授给用户U1
GRANTSELECT ON TABLE Student TO U1;
收回U1用户对Student表的查询权限
REVOKESELECT ON TABLE Student FROM U1;
把修改学生号的权限授给用户U2
GRANTUPDATE(Sno) ON TABLE Student TO U2;
把用户U2修改学生号的权限收回
REVOKEUPDATE(Sno) ON TABLE Student FROM U2;
32.数据库角色与强制存储控制
8. 给王平、张明、赵琳三人更新Student表的权力。
grant update on table table Studend to 王平,张明,赵琳;
9. 从上题中收回王平的权力。
revoke update on table Studend from 王平;
33.视图机制、审计、加密、统计数据安全性
1.视图的权限如何授予?
视图机制间接地支持存取谓词的用户权限定义。例如,在某大学中假定王平老师只能检索计算机系学生的信息,系主任张明具有检索和增删改计算机系学生信息的所有权限。这就要支持“存取谓词”的用户权限定义。在不直接支持存取谓词的系统中,可以先建立计算机系学生的视图CS_Studend,然后在视图上定义存取权限。
例题:建立计算机系学生的视图,把对该视图的SELECT权限授予王平,把该视图上的所有操作权限授予张明。
CREATE VIEW CS_Student
AS SELECT *
FROM Student SHERE Sdept=’CS’;
GRANT SELECT
ON CS_Student TO 王平;
GRANT ALL PRIVILEGES
ON CS_Student TO 张明;
2.有两个关系模式
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号码)
请用SQL的GRANT和RREVOKE语句完成以下授权定义或者存取控制功能:
1) 用户王明对两个表有Select权力
grant select on table 职工 to 王明; grantselect on table 部门 to 王明;
2) 用户李勇对两个表有lnsert和Delete权力
grant insert,delete on table 职工to 李勇; grant insert,delete on table 部门to 李勇;
3) 每个职工只对自己的记录有Select权力
Greate view mine
as
select *
from 职工
where 姓名=current user
grant select on mine to all
4) 用户张欣具有修改这个两个表的结构的权力
grant alter on table 职工 to 张星; rant alteron table 部门 to 张星;
34.数据库完整性的功能及实体完整性
在表中插入一条记录的时间复杂如何?
O(n)
在表中删除一条记录的时间复杂如何?
O (n+m)
35.参照完整性
1、试用多种方式定义下列完整性约束
在删除关系Course中的一个元组时,首先要把关系SC中具有相同Cno值得元组全部删去在关系Student中把某个Sno改为新值是,必须同时把关系SC中那些同样的Sno也修改为新值。
2、外码在什么条件下可以为空?什么条件下不可以为空?
实体完整性规则是指若属性A是基本关系R的主属性,则属性A不能取空值。若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。即属性F本身不是主属性,则可以取空值,否则不能取空值。
36.用户定义的完整性
试定义下列完整性约束
建立一个教师表,要求教龄在3年以上,教师姓名不能同名;
37~43研讨题学习攻略
37.完整性约束命名子句
表级列级的完整性约束命名子句有何区别?
完整性约束命名子句constraint用来对完成下约束条件命名,列级约束是对列进行约束的,而表级的是对主键约束的。给出个例子:
createtable student (
sno numberic(6)
constraint c1 check (sno between 100 and1000), //sno只能为100到1000
sex char(2)
constraint c2 check (sex in ('男','女')), //sex必须为男或者女
constraintsno primary key (sno) //主键约束
)
38.触发器
触发器有什么好处?
建立触发器时,就要指定该触发器的用途,是同步更新,还是删除、插入,由你指定。当你对一个字段进行操作时,其他表也会跟着一起修改,这就是触发器的好处。但是,触发器少用,不利于以后维护。
39.数据依赖
用生活中实例解释数据依赖带来的问题
数据依赖就是,生活中,你要知道一个人在哪上网,你就得知道他的ip地址,这就是数据依赖,他的地理位置依赖于他的ip地址。
40.函数依赖
写出student、course、sc中各表中所有的函数依赖类型
要写出函数依赖类型,首先要知道函数依赖分为三种:完全函数依赖、部分函数依赖和 传递函数依赖.
在student表中无论是Ssex,Sage,Sname还是Sdept与Sno都是完全函数依赖关系,原因很简单,因为,性别,年龄,所在系,姓名,是学号决定的。
在course表中Cpno<-Cname,Cname<-Cno,所以他们之间是传递函数依赖,Ccredit和(Cno,Cname)是部分函数依赖关系,因为单单课程号就能决定学分是多少了。
在sc表中,Grade与(Sno,Cno)是完全函数依赖,因为成绩需要学号和课程名两个属性才行决定成绩。
41码与范式
主属性和非主属性的关系是怎么样的?
主属性和非主属性的并集是全集。
42.2NF3NF
对给定的关系模式R(U,F),
U={A,B,C,D,F,P},F={A->B,C->P,E->A,CE->D},有如下的分解:
R1(ABE),R2(CDEP)
1)求R的候选关键字
2)R1和R2属于几范式
1)只需要看谁推出谁就知道谁是候选码了,CE推出P和D和A,A推出B,很简单知道是CE推出的,所以候选关键字是C,E
2)要知道属于第几范式很简单,只要判断他最高能满足第几范式的要求就知道属于第几范式了。
R1由于主键是CE,而E->A,因此存在部分依赖,所以R1属于第一范式。
R2由于主键是CE,但是存在C->P,存在部分依赖,所以,R2属于第一范式。
43.BCNF
设有关系模式R(U,F)
U={C,T,H,R,S,G},F={CS->G,C->T,TH->R,HR->C,HS->R}
将其规范化为BCNF。