第4章(2) 空间数据库 —关系数据库 北京建筑工程学院 王文宇
第二节 关系数据库 概述 关系模型 SQL语言 Arcview tables 应用实例(人事管理信息系统)
一 概述 系统而严格地提出关系模型的是美国IBM公司的E.F.Codd 1970年提出关系数据模型 一 概述 系统而严格地提出关系模型的是美国IBM公司的E.F.Codd 1970年提出关系数据模型 E.F.Codd, “A Relational Model of Data for Large Shared Data Banks”, 《Communication of the ACM》,1970 之后,提出了关系代数和关系演算的概念 1972年提出了关系的第一、第二、第三范式 1974年提出了关系的BC范式
一 概述(续) 典型实验系统 System R University INGRES 典型商用系统 ORACLE SYBASE 一 概述(续) 典型实验系统 System R University INGRES 典型商用系统 ORACLE SYBASE INFORMIX DB2 INGRES
二 关系数据模型 20世纪80年代以来,关系型数据库理论日益成熟并得到空前广泛的应用。关系数据模型成为主流数据模型 单一的数据结构----关系 现实世界的实体以及实体间的各种联系均用关系来表示 数据的逻辑结构----二维表 从用户角度,关系模型中数据的逻辑结构是一张二维表。
两个实体型间的联系 实体型1 联系名 实体型2 1 1:1联系 m n m:n联系 1:n联系
Relational Model No hierarchy of entities; records are simply stored as a set of tuples A tuple is a set of permanantly related fields. Also called a table, or file. One-to-one or many-to-one relationships are encoded
关系数据模型的特点 (1) 能够以简单、灵活的方式表达现实世界中各种实体及其相互间关系。 (2)关系模型具有严密的数学基础和操作代数基础—如关系代数、关系演算等。
关系代数 专门的关系运算 选择 投影 连接 除 传统的集合运算 并 差 交 广义笛卡尔积
1. 并(Union) R和S 具有相同的目n(即两个关系都有n个属性) 相应的属性取自同一个域 R∪S R∪S = { t|t R∨t S }
并(续) A B C a1 b1 c1 b2 c2 a2 R A B C a1 b1 c1 b2 c2 b3 a2 R∪S A B C a1 Select * from R and S A B C a1 b2 c2 b3 a2 c1 S
2. 差(Difference) R - S 仍为n目关系,由属于R而不属于S的所有元组组成 R -S = { t|tR∧tS }
差(续) A B C a1 b1 c1 b2 c2 a2 R A B C a1 b1 c1 R-S A B C a1 b2 c2 b3 a2
3. 交(Intersection) R∩S 仍为n目关系,由既属于R又属于S的元组组成 R∩S = { t|t R∧t S } R∩S = R –(R-S)
交 (续) A B C a1 b1 c1 b2 c2 a2 R A B C a1 b2 c2 a2 c1 R ∩ S A B C a1 b2
4. 广义笛卡尔积 (Extended Cartesian Product) n目关系,k1个元组 S m目关系,k2个元组 R×S 列:(n+m)列的元组的集合 元组的前n列是关系R的一个元组 后m列是关系S的一个元组 行:k1×k2个元组 R×S = {tr ts |tr R ∧ tsS }
广义笛卡尔积 (续) A B C A B C A B C a1 b1 c1 b2 c2 a2 R A B C a1 b2 c2 b3 a2 R × S A B C a1 b2 c2 b3 a2 c1 S
三 SQL语言 ——结构化查询语言 是一种用于存取和查询数据,更新并管理关系数据库系统的数据库查询和编程语言。 Transact-SQL是增强的SQL。
SQL语言主要组成部分 数据定义语言— 定义和管理数据库 数据操作语言—查询添加修改和删除数据库中数据 包括CREATE、ALTER和DROP等语句 数据操作语言—查询添加修改和删除数据库中数据 包括SELECT、INSERT、UPDATE、DELETE等 数据控制语言—设置或者更改数据库权限 包括GRANT、DENY、REVOKE等语句
查询数据库(SELECT子句) 1、命令基本格式: SELECT 选择列表 FROM 表的列表 WHERE 查询条件 2、说明: ①选择列表—可包括几个列名或表达式,用逗号隔开, 指示返回哪些数据。 ②表的列表—包括提供数据的表或视图的名称。 ③每一个SELECT子句必须有一个FROM 子句。
a∪b Select实现集合运算 使用union实现combinition Select * from t1 Union from t2
a∩b a-b Select实现集合运算(续) 使用exists和no exists实现intersection和difference from t1 Where exists (select * from t2) a∩b intersection Select * from t1 Where not exists (select * from t2) a-b difference
对多个表或视图进行查询 条件连接 例:查询学生信息和学生相应的班级 USE XK GO SELECT * FROM Class,Student WHERE Class.ClassNo=Student.ClassNo ①笛卡尔积 多表的无条件连接 例:将班级表与学生表连接 USE XK GO SELECT * FROM Class,Student 例:查询各班可以选择的非本系开设的选修课程信息 USE XK SELECT ClassName,Couname,Kind,Credit,Teacher FROM Class,Course WHERE Class.DepartNo<>Course.DepartNo 例:查询“01电子商务”班的学选修课程情况,要求显示班级名称、学号、姓名、课程名、课程类别、学分、教师、上课时间、报名人数 SELECT ClassName,Student.StuNo,StuName, CouName,Kind,Credit,Teacher, SchoolTime,WillNum FROM Class,Student,Course,StuCou WHERE Class.ClassNo=Student.ClassNo AND Student.StuNo=StuCou.StuNo AND StuCou.CouNo=Course.CouNo AND ClassName=’01电子商务’ 查询语句的其它功能 ①使用ORDER BY子句重新排序查询结果 (ASC表示升序,DESC表示降序,默认升序) ②使用COMPUTE BY子句计算总计或进行小分组计并进行排序 例:按类显示课程表的课程编码、课程名称、课程分类、 报名人数,并计算每类课程的平均报名人数。 USE XK SELECT CouNo,CouName,Kind,WillNum FROM Course ORDER BY Kind COMPUTE AVG(WillNum) BY Kind ③使用GROUP BY子句对查询结果按指定列进行分组 例:按课程分类统计平均报名人数 USE XK SELECT ’课程分类’=Kind, ’每类平均报名人数’=AVG(WillNum) FROM Course GROUP BY Kind ④使用UNION运算符将多个查询结果合并成一个 例:从班级表中查询班级名称,从系部表中查询系部名称,并将两个查询结果合并 SELECT ClassName FROM Class UNION SELECT DepartName FROM Department
Relational model
四 Arcview tables A table is an Arcview object that allows the user to access and modify a source data file source data files may be dbase (.dbf), info, or text (.txt) files you may also connect to an SQL database like Oracle for source data tables may be reformatted, sorted, etc. without changing the data on the disk Opening the file for editing allows the source data to be modified
Arcview tables Two types of source tables in Arcview Attribute Tables are linked to a theme Others are not connected to a theme--they are simply data
Table statistics From menu Table Statistics Uses only the selected set
Calculating fields Numeric or string 要求编辑的状态!!!
Summarize a table what’s the average county population for each state? What’s the total population of each state from all counties? 选中字段!!!
Joining tables Connect two tables using a common fieldNow the new data are ALSO linked to the map Does not change the source data on the disk 选中两张表的同名字段!!!!
Types of joins-1 Use the Arcview Join button
Types of joins-2 Also knows as a look-up table A way to save space when storing the same info over and over
Lookup tables
Linking Use the Arcview link feature
四 应用实例 人事管理针对我国目前人事管理现状以及未来的发展趋势将人事管理思想融入其中,充分体现了现代人事管理新思想。主要功能是完成了对大量人事档案信息的系统化管理。包括新档案的录入,对存档数据的更新、删除、修改、综合查询;帮助等。通过计算机使人事档案管理步入了自动化,科学化管理的行列。 本系统是在Windows2000的环境下,用Visual Basic6.0 开发的信息管理系统。
VB可访问的数据库 VB默认的数据库格式与Access格式相同,其默认的数据库文件(.mdb)称为内部数据库。除此之外,在VB中还可以访问: 外部数据库,如dBASE、FoxPro、Paradox等ISAM(索引顺序访问方法)数据库,以及Lotus123和Excel等电子表格数据列表 ODBC(开放式数据互接)数据库,如SQLServer等
数据库访问技术 1. VB数据库应用程序的组成: 用户界面、数据库引擎和数据库 (VB提供的是Microsoft Jet数据库引擎) Data控件:提供无需编程就能访问数据库的能力。实际应用时,还需绑定其它控件,并编写简单的程序代码。 数据访问对象(DAO):供了一个由一系列对象和集合组成的分层结构模型,可方便地访问和处理数据库。 3. ActiveX数据对象(ADO) 建立在被称为OLE DB的最新数据访问接口之上的高性能的、统一的数据访问对象。
应用实例 该系统采用模块化设计,根据人事管理系统的实际情况,研究开发的一套管理系统。
界面
界面
总结 关系数据库组织简单,便于理解和交流 关系数据库应用数学方法来处理数据库中的数据 关系数据库系统成为最重要的数据库系统
课堂练习 使用SQL实现关系数据库的并、差、交、积 使用SQL实现多表的关联(下图)