• 1. 数据库系统原理与应用 第二讲 2012年秋季学期
  • 2. 上节课的回顾数据库系统中的三种数据模型
  • 3. 3.3 关系代数传统的集合运算 关系的并 / 关系的差 / 关系的交 / 关系的笛卡尔积 专门的关系运算 选择 / 投影 / 连接 / 除
  • 4. 3.3.2 专门的关系运算1.选择(Selection)运算选择运算又称为限制运算。选择运算指在关系R中选择满足给定条件的元组,记作: σF(R)= {t | t R ∧ F(t)= '真' }.逻辑算子 根据公式F对关系R作水平分割,从中挑选出满足公式F的那些元组组成新关系。适用于:可以在某一关系中选择满足给定条件的诸元组构成新的关系
  • 5. 3.3.2 专门的关系运算设学生数据库,其关系模式为: 学生(学号, 姓名, 年龄, 性别, 系, 年级);【例】用关系代数表示在学生数据库中查询全体女生的操作。 σ性别= ‘女’ (学生)选择是从行的角度进行的运算,产生的关系具有与R相同的属性,但其元组数量总是小于或等于R中的元组数量
  • 6. 举例:选择关系R中符合F的元组, 将F设为性别=“女” 。关系R结果3.3.2 专门的关系运算
  • 7. 3.3.2 专门的关系运算2. 投影(Projection)运算 投影是从关系R中选择出若干属性列组成新的关系,记作: πA (R) = { t [A] | t ∈R }适用于:可以从某一关系中选出若干属性列构成新的关系,通常用于查询结果的输出按照A的顺序,从关系R中取相应的列,然后除去结果中的重复元组,
  • 8. 3.3.2 专门的关系运算【例】在学生数据库中,查询学生的姓名、性别和系。 π姓名, 性别, 系(学生)注意:投影操作后,在新关系中如包含重复元组,则会删除重复元组。投影是从列的角度进行的运算 投影的下标可是列序号,也可是列属性名
  • 9. 关系R 结果举例:求关系R, 在X上的投影, 属性列表X为:姓名,性别, 系。3.3.2 专门的关系运算
  • 10. 3.3.2 专门的关系运算3. 连接(Join)运算 (1)θ连接 连接是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。记作: ⌒ R S={tr ts| trR ∧ tsS ∧ tr [A]θts [B]} AθB 连接运算从R和S的广义笛卡儿积R×S中,选取符合AθB条件的元组,θ是比较远算符。适用于有选择条件的多个关系的数据组合
  • 11. 可以将θ连接理解为:首先对两个关系作笛卡尔积, 然后从乘积中选择满足条件的元组。举例: 对关系R和S进行θ连接, 条件是R元组的属性1小于S元组的属性3。 即 R.A < S.D 关系R关系S3.3.2 专门的关系运算R SR.A < S.D
  • 12. 3.3.2 专门的关系运算连接运算最常用的有等值连接: ⌒ R S={tr ts|trR ∧ tsS ∧ tr[A]=ts[B]} A=B (2)自然连接 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。 自然连接的结果是在 R 和 S 中的在它们的公共属性名字上相等的所有元组的组合。 ⌒ R S={tr ts|trR ∧ tsS ∧ tr[A]=ts[A]}
  • 13. 关系 R 关系 S自然连接结果例: R和S唯一的公共属性是B. 因此要成功匹配, 元组只需在B分量上一致即可, 本例在公共属性B上的公共值是2、4 。3.3.2 专门的关系运算
  • 14. 例:下面这个自然连接的例子中, 两个关系有多个公共属性B和C: 关系 R 关系 S 自然连接结果
  • 15. 自然连接与等值连接的区别: 当两个关系R和S有相同属性时,自然连接与等值连接都是判断在相同属性上的值是否相等。但结果关系中,自然连接的公共属性只出现一次,而等值连接的公共属性则要重复出现; 当关系R和S无公共属性时,R与S的自然连接即为R与S的广义笛卡儿积。 3.3.2 专门的关系运算
  • 16. 3.3.2 专门的关系运算4. 除(Division)运算 除法是写为 R ÷ S 的二元关系。其结果由 r-s限制构成(就是说只在 R 表头中而不在 S 表头中的属性),并且它们与 S 中的元组的所有组合都存在于 R 中。 关系R(X,Y)与关系S(Y,Z),其中X、Y、Z为属性集合,R中Y与S中Y具有相同的域集,则: R÷S ={tr[X] | tr∈R ∧ πY(S) YX} 除运算得到的一个新关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上的分量值x的像集Yx包含S在Y上的投影。
  • 17. 设R和S的目数分别为r和s,且r>s,s≠φ。    用基本关系代数运算可定义除为: R÷S=π1,2,…,r-s(R)-π1,2,…,r-s((π1,2,…,r-s(R)×S)-R)3.3.2 专门的关系运算
  • 18. ABCDabcdabefbcefedcdedefabde关系RCDcdef关系SABabbcedR÷Sr-s例已知关系R和S,求R÷SABabedπA,B(R)3.3.2 专门的关系运算R÷S= π1,2,…,r-s(R)-π1,2,…,r-s((π1,2,…,r-s(R)×S)-R)
  • 19. 【例】给出选课和必修课关系,它们的关系模式为:选课(学号,课号,成绩);必修课(课号,课名),求学号课号成绩S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1A课号课名C1数据结构C3操作系统
  • 20. R÷S=π1,2,…,r-s(R)-π1,2,…,r-s((π1,2,…,r-s(R)×S)-R)学号S1S2S3S4S5π1,2,…,r-s(R)=π学号π1,2,…,r-s(R)×S学号课号课名S1C1数据结构S1C3操作系统S2C1数据结构S2C3操作系统S3C1数据结构S3C3操作系统S4C1数据结构S4C3操作系统S5C1数据结构S5C3操作系统
  • 21. R÷S=π1,2,…,r-s(R)-π1,2,…,r-s((π1,2,…,r-s(R)×S)-R)π1,2,…,r-s(R)×S学号课号课名S1C1数据结构S1C3操作系统S2C1数据结构S2C3操作系统S3C1数据结构S3C3操作系统S4C1数据结构S4C3操作系统S5C1数据结构S5C3操作系统学号课号成绩S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1AR(π1,2,…,r-s(R)×S)-R学号课号课名S4C3操作系统
  • 22. R÷S=π1,2,…,r-s(R)-π1,2,…,r-s((π1,2,…,r-s(R)×S)-R)学号S1S2S3S4S5π1,2,…,r-s(R)(π1,2,…,r-s(R)×S)-R学号课号课名S4C3操作系统学号S1S2S3S5该结果表示求出了选择了必修课表中所有规定的全部课程的学生学号。思考:如果直接求选课÷必修课,结果为什么?
  • 23. 小结●在关系操作集合中还有很多种其它的运算。但是, 最基本的运算只有五个:并、差、笛卡尔积、选择、投影。●使用上述五种基本运算, 可将其它的所有运算表达出来。 比如, θ连接运算, 可通过先进行笛卡尔积运算, 然后再进行选择运算来得到。 再比如, 对关系R1和R2作交运算, 则可以从R1中减去R2得到R3, 然后再从R1中减去R3得到。也就是说, 通过几步差运算表达。●可见, 在关系操作集合中再引入其它的操作, 并不会增强关系操作的能力, 但是, 通过引入更多的操作方式, 可以简化表达, 使用户能更容易把握操作表达式的内容。
  • 24. 【例3.2】求各运算结果⑴ σB=5 (S)书上第32页对关系S作行筛选,条件是属性B=5⑵ ∏ A, C( R )对关系R的A、C二个属性作投影BCD563AC134679 (3)∏ C,D (σB = 5 ( S ) ) CD63
  • 25. (4) R S 【例3.2】求各运算结果书上第28页对关系R、S作θ连接, 条件是R的第3属性=S的第2属性[ 3 ]=[ 2 ](5) R S对关系R、S作自然连接AR.BR.CS.BS.CD123232456563ABCD12324563
  • 26. 1、查询教师关系T(T#,TNAME,TSEX,TBIRTHIN,TITLEOF,TRSECTION,TEL)中全体教师的教职工号、教师姓名、职称和所在教研室。   解题思路:从教师表中把各教师的相应属性投影出来。πT,TNAME,TITLEOF,TRSECTION (T) 关系代数运算在查询中的应用
  • 27. σSSEX=“女”(S) 2、查询学生关系模式S(S#,SNAME,SSEX,SBIRTHIN,PLACEOFB,SCODE,CLASS) 中全部女学生。   解题思路:从学生表中选择出那些性别为“女”的元组。关系代数运算在查询中的应用
  • 28. πS, SNAME (σSSEX=“男”∧SCODE=“S0401”(S) )3、找出学生关系模式S(S#,SNAME,SSEX,SBIRTHIN,PLACEOFB,SCODE,CLASS)中专业代码为S0401的男学生的学号和姓名。   解题思路:涉及到的查询条件有两个,选择专业代码为“S0401”和性别为“男”的元组;最后,查询结果用投影表示出来。关系代数运算在查询中的应用
  • 29. πS(σC=“C401001”∨C=“C401002”(SC) )4、找出学习关系模式SC(S#,C#,GRADE)中选修了课程号为C401001或课程号为C401002的学生的学号。   解题思路:在SC表中判断元组是否满足条件为选修了课程号C401001或C401002,可以在选择条件中用“∨”连接“或”的条件;也可以分别查询出满足条件的元组,再并运算。关系代数运算在查询中的应用或 πS(σC=“C401001” (SC) )∪ πS(σC=“C401002”(SC) )
  • 30. πS(σ2=“C401001”∧5=“C401002”(SC×SC) )或 πS(σC=“C401001” (SC) )∩ πS(σC=“C401002”(SC) )5、找出学习关系SC(S#,C#,GRADE)中选修了课程号为C401001和课程号为C401002的学生的学号。   解题思路:由于查询是按元组一行一行地检索,因此在SC表中一个元组只能满足一个课程号的条件。因此,可利用广义笛卡儿积的办法创造一个元组中有两个课程号能分别满足不同的课程号要求;另一种办法为分别求出满足条件的元组,再交运算。关系代数运算在查询中的应用
  • 31. 6、在学生关系S(S#,SNAME,SSEX,SBIRTHIN,PLACEOFB,SCODE,CLASS)和学习关系SC(S#,C#,GRADE)中找出选修了课程号为C402002的学生的学号、姓名的考试成绩。   解题思路:首先确定涉及到的表,学号和姓名在S表中,成绩在SC表中,而S表和SC表具有相同属性S#,因此需将两个表作自然联接操作;查询条件为选修了课程号C402002,作选择操作;最后,投影出查询结果的列。πS,SNAME,GRADE(σC=“C402002” (SSC) )关系代数运算在查询中的应用
  • 32. 7、在学生关系S(S#,SNAME,SSEX,SBIRTHIN,PLACEOFB,SCODE,CLASS)、课程关系C(C#,CNAME,CLASSH)和学习关系SC(S#,C#,GRADE) 中找出专业代码为S0403学习了“计算机网络”课程的学生的学号、姓名的考试成绩。   解题思路:由于查询涉及到条件“计算机网络”课程,该属性在C表中,而查询学生的学号、姓名及专业代码在S表中,另外,考试成绩在SC表中,需将三个表作自然联接;选择出满足条件的元组;并投影出相应结果列。πS,SNAME,GRADE(σSCODE=“S0403” ∧CNAME=“计算机网络”(S∞SC∞C))关系代数运算在查询中的应用
  • 33. 第四章 SQL Server2005系统概述本章自学
  • 34. 第五章 创建和使用数据库5.1 数据库对象 5.2 系统数据库 5.3 SQL Server数据库的存储结构 5.4 创建数据库 5.5 配置数据库(自学) 5.6 删除数据库(自学)
  • 35. 5.1 数据库对象1. 表 由行和列组成,每一行为一条记录。 2. 字段 表中的每列称为一个字段,其具有字段类型、大小等属性。基本类型有字符型、文本型、数值型、逻辑型和日期时间型。 3. 索引 索引是一种表形式的数据结构,由给定的一个或一组数据项(主键或非主键)组成。
  • 36. 5.1 数据库对象4. 视图 是从一个或多个表中导出的表,视图的结构和数据建立在对表的查询的基础上。 5. 存储过程 是一组为完成特定功能的SQL语句集合,经编译后以名称的形式存储在SQL Severe服务器端的数据库中。 6. 触发器 是特殊的存储过程,能在某个规定的事件发生时触发执行。
  • 37. 5.2 系统数据库1. Master数据库 记录了SQL Server实例的所有系统级信息,是最重要的数据库。 2. Tempdb数据库 用于保存临时对象或中间数据库。 3. Model数据库 为新的数据库充当模板,用户新建的数据库是model的副本。 4. Msdb数据库 用来作为计划警报和作业调度的数据库。
  • 38. 5.3 SQL Server数据库的存储结构一、文件和文件组 1. 数据库文件 主数据文件(Primary):存放数据,默认扩展名为mdf 次数据文件(Secondary):也用来存放数据,但一个数据库中可以没有次数据文件,其默认扩展名为ndf 事务日志文件(Transaction Log):用来存放事务日志,记录了SQL Server所有事务和这些事务引起的数据库变化,其扩展名为ldf
  • 39. 5.3 SQL Server数据库的存储结构 2. 数据库文件组 文件组就是文件的组合,通过设置文件组,可以有效地提高数据库的读写速度。 主文件组:包含主数据和没有被包含在其他文件组里的文件 自定义文件组:包含创建数据库时用FileGroup来约束的文件 默认文件组:容纳所有创建时没有指定文件组的的表、索引等
  • 40. 5.3 SQL Server数据库的存储结构二、数据库的存储结构页(8KB)数据盘区(8个连续页面)表、索引数据库数据(文件) .mdf及.ndf日志(文件) .ldf
  • 41. 5.3 SQL Server数据库的存储结构1. 页面(Page) SQL Server中的所有信息都存储在页面上,它是数据库中使用的最小数据单元。每个页面都有一个页面头,用来唯一标识存储在页面中的数据,分为数据页、索引页、文本页、图像页等8种。 2. 区(Extent) 由8个连续的页面组成的数据结构,每个区只能包含一个数据库对象,每个数据库对象可占用多个盘区。
  • 42. 5.3 SQL Server数据库的存储结构三、事务日志 事务日志是SQL Server的一个重要的容错特性,可以有效地防止数据库的损坏,维护其完整性。 SQL Server中,事务是指一次完成的操作的集合。当一个事务包含多个SQL语句时,为了维护数据库的完整性,它们必须彻底完成或根本不执行。使用数据库的事务日志可以用来防止没有完成的事务破坏数据。
  • 43. 5.4 创建数据库在SQL Server中,创建一个数据库需要确定数据库名、所有者、数据库大小和存储数据库的文件等信息。 一般有两种方法: SQL Server Management Studio管理器 T-SQL命令语句
  • 44. 5.4 创建数据库1.通过SQL Server Management Studio启动SQL Server管理器
  • 45. 5.4 创建数据库2.在左边的“对象资源管理器”中选择“数据库”节点,右击后在快捷菜单中选择“新建数据库”
  • 46. 3.进入“新建数据库”对话框,输入和设置相关信息
  • 47. 第八章 创建和使用表8.1 表的概念 8.2 创建表 8.3 修改表结构(自学) 8.4 建立数据库关系图 8.5 更改表名(自学) 8.6 删除表(自学) 8.7 记录的新增和修改
  • 48. 8.1 表的概念一、表 数据库中,表是反映现实世界某类事务的数学模型,现实世界中事务的属性对应表的列——字段,而数据类型则是指定列所保存数据的类型。
  • 49. 数据类型 类型 描             述 bit 整型 其值只能是0、1或空值。如Yes 或No、True 或Fa lse int 整型 存储从- 231(-2147483648)到231 (2147483 647)之间的整数。这种数据类型在数据库里占用4个字节 smallint 整型 存储从- 215(-32768)到215(32767)之间整数。占用2 字节空间 tinyint 整型 能存储从0到255 之间的整数。占用1 个字节 decimal 精确数值型 用来存储从-1038-1到1038-1的固定精度和范围的数值型数据。p (有效位数),有效位数必须是 1 至最大有效位数 38 之间的值。预设有效位数是 18. s (小数位数) 小数点右侧所能储存的最大十进位数。小数位数必须是从 0 到 p 的值。预设小数位数是 0.money 货币型 表示钱和货币值。这种数据类型能存储从-9220亿到9220 亿之间的数据,精确到货币单位的万分之一
  • 50. 数据类型 类型 描             述 real 近似数值型 可以表示数值在-3.40E+38到3.40E+38之间的浮点数 datetime 日期时间型 表示日期和时间。这种数据类型存储从1753年1月1日到9999年12月3 1日间所有的日期和时间数据char 字符型 用来存储指定长度的定长非统一编码型的数据。此数据类型的列宽最大为8000 个字符 varchar 字符型 同char类型一样,用来存储非统一编码型字符数据。与char 型不一样,此数据类型为变长。 text 字符型 用来存储大量的非统一编码型字符数据。这种数据类型最多可以有231-1或20亿个字符 image 二进制数据类型 用来存储变长的二进制数据,最大可达231-1或大约20亿字节
  • 51. 8.1 表的概念二、表中数据的完整性 1.规则 指表中数据应满足的一些基本条件 2.默认值 指表中数据的默认取值 3.约束 指表中数据应满足的一些强制条件 非空约束、检查约束、唯一约束、主键约束、外键约束
  • 52. 8.2 创建表一般有两种方法: SQL Server Management Studio管理器 T-SQL命令语句书上例8.1 在school数据库中建立student表
  • 53. 8.2 创建表
  • 54. 8.3修改表结构(自学)
  • 55. 8.4 建立数据库关系图一个数据库中存在多个表,而表和表之间存在着一些关联关系 SQL Server Management Studio管理器 T-SQL命令语句书上例8.3 在school数据库中,对表student、表score、表teacher、表course建立关联关系
  • 56. 8.4 建立数据库关系图
  • 57. 8.4 建立数据库关系图
  • 58. 8.4 建立数据库关系图
  • 59. 8.5 更改表名(自学) 8.6 删除表(自学
  • 60. 8.7 记录的新增和修改数据库中的记录一般都是通过T-SQL来进行添加、修改和删除的,当然少量数据也可以通过SQL Server管理控制器来进行。 前者是利用设计人员编写的相关程序来实现;后者是操作员手工进行输入,因此要根据表之间的关联性,注意输入数据的先后次序。
  • 61. 选择要添加数据的表名,按鼠标右键,在弹出的快捷菜单中选择打开表8.7 记录的新增和修改
  • 62. 8.7 记录的新增和修改关系图窗格条件窗格SQL窗格结果窗格
  • 63. 8.7 记录的新增和修改关系图窗格条件窗格SQL窗格结果窗格
  • 64. 8.7 记录的新增和修改如书上例8.6中,对school数据库中,添加表student、表score、表teacher、表course内的数据。1)先添加表student和表teacher的记录 2)再添加表course内的数据 3)最后添加表score内的内容
  • 65. 近期自学与上机安排
  • 66. 自学与上机通知●在四教2楼计算机中心机房上机 完成上机练习1 ●自学内容: 自学第4章、第9章。
  • 67. 课堂练习设学生和选课关系中数据如下, 学生 选课学号姓名年龄1001李强201003周扬21学号课程名成绩1001数据库811001单片机921003微积分77
  • 68. 课后练习对于学生选课关系,其关系模式为: 学生(学号,姓名,年龄,所在系); 课程(课程名,课程号,先行课); 选课(学号,课程号,成绩)。 用关系代数完成下面查询。 1)自动化系所有学生的姓名和年龄。 2)学过数据库课程的学生的学号。 3)学过数据库和数据结构的学生姓名和学号。 4)没学过数据库课程的学生姓名和学号。 5)学过数据库的先行课的学生学号。
  • 69. (本页无文本内容)