版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库的用途90%的软件需要数据库的支持数据是智慧社会的基石!数据库技术是构建这个基石的手段!数据库及相关的基本概念数据模型数据库的设计方法和基本理论数据操作语言--SQL
数据库的管理控制方法数据库的发展方向课程的主要内容课程目标掌握数据库的基本概念。掌握数据库的设计理论及方法。掌握数据库编程理论及结构化的查询语言理解数据库的控制机制教材(1)数据库原理教程,杜金莲,邝劲筠,何明,清华大学出版社,2024年第1版。参考书:1.AFIRSTCOURSEINDATABASESYSTEMSJeffreyD.Ullman,JenniferWidom2.数据库系统基础教程岳丽华等机械工业出版社(2009年8月3版)
3.数据库原理实践,邝劲筠,杜金莲
清华大学出版社(2015年7月第1版)教材及参考书1.充分利用课堂教学,遵守教学纪律。2.独立完成书面作业和上机作业。3.及时沟通教与学。
考试方式:笔试成绩:试卷考试设计及上机实验成绩:数据库设计及上机实现平时成绩:出勤+课堂练习+作业+讨论等教学及考核要求
教学要求:上课时间:1-16周周2:34节,信东1011-8周周四:56节,信东10110-13周周2:34节,
计算机中心上机。总共40(讲课)+8(上机)学时
需要同学课下进行选题和设计,同时预先学习实验平台:openGauss和mySQL(SQLServer)课程安排第一章:绪论(Introduction)数据数据管理技术的发展数据库数据模型数据库管理系统数据库应用系统的结构数据视图数据库管理员(DBA)什么是数据?能够输入计算机并能被计算机程序识别和处理的符号集合。(不是一般意义上的数字,而是描述某一种事物的符号,有多种表现形式:数字、文字、图形、图像、声音、语言等等。)例如:一部电影,一段声音,文字。。。。1970年E.F.Codd提出关系数据模型。systemR出现后,关系数据库管理技术迅速发展至成熟。2.数据管理技术发展的四个阶段1950年以前,没有磁盘设备。计算机的功能是科学计算1950-1969年,磁带、磁盘,操作系统,高级语言的出现,使得数据的存贮及检索成为可能。人工管理阶段文件系统阶段数据库系统阶段多元数据库技术阶段1990年以后3.什么是数据库?数据库(Database,简记为DB)是存储在计算机内的有组织,可共享的数据集合,可以看成是电子文件柜。数据库中数据满足以下要求:
(1)数据按一定的数据模型组织,在描述和存储上具有较小的冗余度;(2)数据间相互联系;
(3)由数据库管理系统(DataBaseManagementSystem---DBMS)进行管理;下一页数据模型:指数据的组织方式,不但表达数据本身,而且表达数据间的联系,以及数据的一致性约束。返回数据模型三要素:
数据结构:组织方式数据操作:对数据进行的各种操作及规则数据约束:数据本身及数据间存在的依存及制约关系。学生课程学生与课程之间的联系返回4.数据库采用的数据模型有哪些?历史上出现的数据模型:
层次模型
网状模型
关系模型面向对象的数据模型对象关系数据模型
XML数据模型下一页层次模型是数据库系统中最早出现的数据模型层次模型用树形结构来表示各类实体以及实体间的联系层次模型除根节点以外,其他结点有且只有一个父亲结点层次数据库系统的典型代表是IBM公司的IMS(InformationManagementSystem,IMS)数据库返回网状模型是网状数据库的组织方式1964年,美国通用电气公司发布了世界上第一个网状数据库系统——IDS(IntegratedDataStorage,集成数据存储)网状模型:允许一个以上的结点无父亲一个结点可以有多于一个的父亲返回关系模型(RelationalModel)JohnsonSmithJohnsonJonesSmith192-83-7465019-28-3746192-83-7465321-12-3123019-28-3746AlmaNorthAlmaMainNorthPaloAltoRyePaloAltoHarrisonRyeA-101A-215A-201A-217A-201nameCustomer-idstreetcityaccount-number属性ASampleRelationalDatabase返回5.数据库管理系统(DBMS)?DBMS是对数据进行统一管理和控制的软件系统。主要解决:如何科学的组织和存储数据,高效的获取和维护数据。它是介于用户和操作系统之间的一种系统软件。基于某种数据模型。1、数据库定义功能(DDL)。3、数据库运行控制功能(DCL)。2、数据库操纵功能(DML)。4、数据库与应用程序的接口支持。18查询解析逻辑优化(查询重写)物理优化代价估计统计信息火山模型编译执行物化模型并行执行向量化执行模型物理算子日志管理故障恢复并发控制页面组织缓冲区元数据索引入侵检测访问认证权限控制数据防护审计机制第三方安全测试查询处理层查询执行层存储管理层安全管理物理计划结果数据存取结果SQL查询结果数据库管理系统日志元数据(数据字典)统计信息索引页面数据页面……数据库数据库更新定义查询查询处理程序存储管理程序事务管理程序DBMS6.数据库(应用)系统的体系结构数据库的应用非常广泛,代表性的如下:
*银行业*航空业*大学*电信业*金融业*销售业*制造业*人力资源什么是数据库(应用)系统?数据库(应用)系统是以下各元素的总称:数据库,数据库管理系统,应用程序,DBA(DataBaseAdministrator),计算机系统平台,包括:硬件、操作系统、网络系统等。数据库数据库管理系统数据库系统数据软件系统数据库应用系统软件结构DatabaseApplicationArchitecturesUserapplicationDBMSdatabaseUserapplicationapplicationserverDBMSdatabaseclientserverTwo-tierarchitectureThree-tierarchitecture7.
DBS的三级体系结构UserapplicationapplicationserverDBMSdatabaseSnoSnameSsexSageSdept9512101李勇男19计算机系9512102刘晨男20计算机系9521103吴宾女21信息系9521104张海男20信息系studentsnocnocnamegrade95121011op8595121022db7895121031op80cnocnamectype1op12db23DS1sccourse例如:学生管理信息系统,包括学生信息,课程信息,学生选课信息等。返回在视图层描述用户使用的数据结构:
如用户只关心学生考试成绩情况,不关心其它信息,则屏蔽其它信息构造简单的用户视图:Sgrade(Sno,Sname,Cno,Grade)
返回在逻辑层描述数据库的逻辑结构:Student=(Sno:string,Sname:string,Ssex:string,Sage:int,Sdept:string)
Course=(Cno:string,Cname:string,Ctype:string)SC=(Sno:string,Cno:string,Grade:float)
Student.sno:SC.Sno=1:nCourse.Cno:SC.Cno=1:m
返回物理层:描述数据如何存贮,需要知道数据的存贮路径,所需空间的大小,填充率,存贮块的大小,每个记录如何存贮,索引建立在那些字段上,采用何种结构,如何存取等。返回用户1用户2外模式1数据库模式全局逻辑结构用户3用户4外模式2局部逻辑结构内模式物理组织结构外模式/模式映像模式/内模式映像
数据独立性:数据与应用程序在一定程度上相互分离。逻辑独立性:模式改变
外模式/模式映象改变
外模式不变应用程序不变;物理独立性:内模式改变
模式/内模式映象改变
模式(尽量)不变
外模式和应用程序不变。(theabilitytomodifythephysicalschemawithoutchangingthelogicalschema)8.数据库管理员
(DatabaseAdministrator)对数据库系统(应用程序和数据)进行集中控制的人.Databaseadministrator'sdutiesinclude:模式定义(Schemadefinition)存取方式的定义(Storagestructureandaccessmethoddefinition)模式的修改(Schemaandphysicalorganizationmodification)用户授权(Grantinguserauthoritytoaccessthedatabase)日常维护结束文件系统及其优缺点:操作系统文件1文件2文件n帐户处理程序创建帐户程序产生财务报表程序。。。。程序文件系统的优点:
数据可长期保存
-有磁盘,磁带数据的物理结构与逻辑结构有了简单区别
-数据的组织方法独立于存贮结构数据已经不再属于某一个特定的程序
-一个数据文件可以被多个应用程序访问文件系统的缺点:没有统一的数据模型,数据访问困难文件格式可随便定义,存贮格式可自己定义数据孤立,容易造成数据冗余和不一致完整性问题—数据间需要满足的一种一致性约束Integrityconstraints(e.g.accountbalance>0)becomepartofprogramcode(完整性约束成为程序的一部分)Hardtoaddnewconstraintsorchangeexistingones(增加新的约束或改变现有的约束)
文件系统的缺点(cont.)更新的原子性(Atomicityofupdates)E.g.transferoffundsfromoneaccounttoanothershouldeithercompleteornothappenatall并发异常(Concurrentaccessbymultipleusers)ConcurrentaccessedneededforperformanceUncontrolledconcurrentaccessescanleadtoinconsistenciesE.g.twopeoplereadingabalanceandupdatingitatthesametime安全性问题(Securityproblems)返回E.F.Codd博士于1981年获得ACM图灵奖1970年E.F.Codd提出关系数据模型IBM实验室开发出SYSTEMR学术界举办论证1980以后,数据库技术趋于成熟ORACLE,DB2,SQLSERVER,INFORMIX…数据库系统阶段数据库应用程序1应用程序2应用程序n一系列相关联的文件的集合数据库管理系统操作系统返回解决了文件系统管理数据时存在的缺点!多元数据技术发展阶段1990||||2000数据仓库分布式数据库技术智能、多媒体、数据库技术2000||||2010地理信息数据库基因数据库多媒体据数据库技术2010||||…基于不同应用的Web数据管理专业应用的数据库技术主要集中于规律挖掘、知识发现,数据分布存储技术上。同时重点研究数据库的智能性随着数据库在不同领域应用而引起的数据组织和应用问题。同时由于数据共享问题而引出的新数据模型研究,XML…主要是WEB技术的发展产生了大量的新应用,它们对数据库的使用要求不同,从而产生新的数据组织和检索技术,NOSQL返回下一页中国数据技术的发展199*|2020|||||||
现在武汉达梦人大金仓南大通用PingCAP-分布式开源数据库TiDB目前在国产数据库中排名第一位.阿里--山东移动核心系统正式上跑“OceanBase”,使得用户处理效率提升30%,数据容量由7TB压缩为0.7TB,存储投入成本降低90%.
OceanBase、PolarDB、AnalyticDB等数据库,稳居Gartner魔力四象限的领导者地位神舟通用返回下一页中国数据技术的发展199*|2020|||||||
现在华为的GaussDB和腾讯的TDSQL等数据库也均入选Gartner魔力四象限。这些都是国产数据库的突破,标志着国产数据库已经得到了国际认可2020年华为的和腾讯的TDSQL等数据库也均入选Gartner魔力四象限。这些都是国产数据库的突破,标志着国产数据库已经得到了国际认可。国产数据库正在朝着分布式、云化、以及国产化的道路快速发展,AI4DB、数据库自治等技术也将得到广泛应用,相信在不久的将来,面对数据库的应用场景,国产数据库可以和“外国人”的数据库有相同的话语权。返回下一页华为数据技术的发展PG开源数据库->内部自用孵化阶段->联创产品化阶段->共建生态。G行核心数据仓库、GaussDB(DWS)华为云商用;Z行核心业务系统替换商业数据库;支撑公司内部40+主力产品,在全球70+运营商规模商用3万+套,服务全球20+亿人口。2019.5.15GaussDB全球发布;构筑合作伙伴生态;兼容行业主流生态,完成金融等行业对接;2020.6.30openGauss开源。2001-20112011-20192019-2020企业级内存数据库。2021~分享企业级数据管理能力;引领生态建设;促进数据库教育事业发展。返回下一页华为数据技术的发展鲲鹏计算产业
鲲鹏计算产业是基于Kunpeng处理器构建的全栈IT基础设施、行业应用及服务,包括PC、服务器、存储、操作系统、中间件、虚拟化、数据库、云服务、行业应用以及咨询管理服务等。数据库虚拟化中间件行业应用存储操作系统Kunpeng处理器服务器云服务PC运营商政府金融游戏媒体与娱乐鲲鹏ECS鲲鹏BMS鲲鹏容器鲲鹏RDS鲲鹏GaussDBopenEluer操作系统兼容丰富的操作系统、中间件、数据库软件高斯数据库TaiShan2280均衡型服务器TaiShan5280存储型服务器TaiShanX6000高密型服务器OceanStorV6/FV6存储智能SSD控制器芯片智能网卡芯片智能管理芯片华为鲲鹏处理器昇腾AI处理器返回下一页华为鲲鹏生态的数据库战略华为数据技术的发展数据库是华为鲲鹏战略中不可或缺的关键能力;以数据库为载体承上启下更好地支撑鲲鹏战略,繁荣鲲鹏生态。OEM合作伙伴服务器、PC、终端等线上硬件软件线下代码移植工具加速库编译器依赖库分析工具性能优化分析工具算子开发工具鲲鹏ECS云服务鲲鹏MRS数据服务鲲鹏CCE云容器ModelArtsAI训练服务鲲鹏昇腾上游产业:计算机硬件,云服务数据库产业开源:openGauss华为&合作伙伴云数据库:GaussDB下游产业政府金融教育医疗运营商……返回本章小结熟练掌握:数据、数据库、数据库管理系统和数据库系统的概念;掌握:数据库系统三级体系结构;数据(逻辑、物理)独立性概念。数据库管理系统的结构。了解:数据管理技术的发展及库系统相对文件系统的优越性。数据库用户,管理员,数据库应用系统的体系结构等。第2章:关系模型(RelationalModel)关系模型关系运算关系完整性约束§2.1关系模型关系模型:用二维表(集合)来组织数据及数据之间联系的模型。SNOSNAMESTATUSCITYS1Smith20LONDONS2Jones10PARISS3Peter30ATHENSS4Clark23LONDON属性元组元组分量或数据项3.元组:表中的每一行数据称作是一个元组,它相当于一个记录值。1.属性:表中的每一列必须有一个名字,称为属性。2.域:属性的取值集合或范围就称为域。例如,大学生的年龄一般在14-40岁之间,因此学生的属性“年龄”的域就是(14-40)关系表中的每一个属性都是原子的。
多值的属性不是原子的(联系电话)组合属性不是原子的(联系地址)表中各属性不能重名。表中的行、列次序并不重要。即交换列的前后顺序不影响其表达的语义。表中不允许有相同的行出现。4.关系的特点:实例模式类似于程序设计语言中变量的类型和值SnoSnameSsexSageSdept9512101李勇男19计算机系9512102刘晨男20计算机系9521103吴宾女21信息系9521104张海男20信息系模式:S(sno,sname,ssex,sage,sdept)5.关系模式(Instances)与关系实例(Schemas)(1)关系名与关系的属性集称为关系模式。E.g.Branch(branch-name,branch-city,assets)A1,A2,…,An
areattributesR(A1,A2,…,An)isarelationschema(2)对应于一个关系模式的当前元组的集合,称为关系实例,也称关系。r(R)isarelationontherelationschemaR
E.g. branch(Branch)5.关系模式(Instances)与关系实例(Schemas)Branch关系模式相对稳定,而实例则经常变动Formally,givensetsD1,D2,….Dn,arelationrisasubsetofD1xD2x…xDn
Thusarelationisasetofn-tuples(a1,a2,…,an)where
eachai
DiExample:if
customer-name={Jones,Smith,Curry,Lindsay}
customer-street={Main,North,Park}
customer-city={Harrison,Rye,Pittsfield}
Thenr={(Jones,Main,Harrison),
(Smith,North,Rye),
(Curry,North,Rye),
(Lindsay,Park,Pittsfield)}
isarelationovercustomer-namexcustomer-streetxcustomer-city6.从数学角度定义关系*如果关系中的某一属性(组),它的值能够唯一地标识一个元组;*而该属性(组)的任一真子集不能标识,则该属性(组)称为关系的键码,或候选码或码。*键码的两个特征:(1)唯一性,(2)最小性7.关系的键码SC(SNOCNOGRADE)S001C180S001C285S002C290由多个属性构成的键码—组合码由全部属性构成的键码—全码TCB(TEACHERCOURSEBOOK)张三DS(本)B1张三DS(本)B2张三DS(辅)B2李四DS(本)B1超码:以键码作为子集的任意属性集.如:(acount-number,branch-name)(sno,cno,grade)主属性:构成键码的属性,如sno,cno,acount-number非主属性:不构成键码的属性,如grade,branch-namedepositor2004.1.131998.4.042005.6.52003.4.52003.4.32003.4.32004.5.6date外码外码:关系R中的属性(组)X是另一个关系S的键码,则X是R的外码(Foreignkey).
外码是表示关系(表)间联系的手段!!!8.关系表示数据用关系模型组织数据时,首先按数据的特征进行分类,将具有相同特征的数据分为一类,用一张二维表组织:branchaccount
customer9.关系表示数据间联系用关系模型表示两类数据的联系时,是将能代表两类数据的属性和描述联系性质的的属性组织成一张表。如:depositor10.关系数据库关系数据库就是若干关系构成的集合,一般来讲,数据库中数据的组织方式用模式图来表示:§2.2关系代数关系代数是抽象的,过程化的查询语言特点是:运算对象和运算结果都是关系操作符=1.关系代数的基本运算:(1).传统的集合运算:(2).关系运算:
投影
(PROJECTION;П)
选择(SELECT;
)
笛卡尔乘积(CARTESIANPRODUCT;
)
差(DIFFERENCE;
)
交(INTERSECTION;
)
并(UNION;
)
改名运算(一元运算;)
连接运算:(JOIN;)θ2.集合运算(3)差运算:记作R-S(1)并兼容的关系:若两个关系的属性个数相同,且对应属性的域也相同,则称这两个关系是并兼容的。(2)并运算:记作R∪S关系R和S必须是并兼容的!(4)交运算:记作R∩SExample.设关系R、S如下:R(A,B,C)a1cd4fc3dS(A,B,C)b2ad4f
R∪S(A,B,C)a1cb2ac3dd4fR-S(A,B,C)a1cc3dR∩S(A,B,C)d4f3.选择运算(SelectOperation)F是条件表达式,由比较及逻辑运算符构成。 (and),(or),(not)
=,,>,.<.Exampleofselection:
branch-name=“Perryridge”(account)从某一关系R中选出满足条件表达式F的元组,构成一个新关系,记为
F(R).SelectOperation–ExampleRelationrABCD
A=B^D>5(r)ABCD
1237104.投影(ProjectOperation)E.g.
account-number,balance(account)在投影的结果里,重复的元组将被删除(Duplicaterowsremovedfromresult,sincerelationsaresets)从某一关系R中选出某些属性A,构成新的关系,记为ПA(R)。ProjectOperation–ExampleRelationr:ABC
102030401112AC
1112=AC
112
A,C(r)5.改名运算(RenameOperation)把一个关系的名称改成另外一个名称.一般来说用于对关系运算的结果进行命名。记为:
s(R)
s(A1,
,An)(R):把关系R的名字改为S,并且把S的属性依次命名为A1,
,An.
s(customer)6.笛卡尔乘积运算两个属性个数分别是m、n,元组个数分别为k1,k2的关系R和S,它们的笛卡尔乘积是一个关系,该关系属性个数(度/元)为m+n、元组个数为k1×k2,记为RSS(A,BB)aa11bb22例R(A,B,C)a1cb2fa1caa11a1cbb22b2faa11b2fbb22R×S(R.A,B,C,S.A,BB)7.θ连接运算两个关系的元组在满足某种条件下进行匹配,即θ-连接。记为:RSθE.g.
R1(A1,A2)a11a22a31a42
R2(B1,B2)b11b21b32b43=(A1,A2,B1,B2)R1R2A2>B2a2
2
b1
1a2
2
b2
1a4
2
b1
1a4
2
b2
18.自然连接(Natural-JoinOperation)两个关系在公共属性上进行等值连接的运算。记为:RS
E.g.R(A,B)a11a21a22a31
S(B,C)1b11b22b2RS=(A,B,C)a11b1a11b2a21b1a21b2a22b2a31b1a31b2NaturalJoinOperation–ExampleRelationsr,s:AB
12412CD
aababB13123DaaabbE
rAB
11112CD
aaaabE
srs9.除法运算(DivisionOperation)*LetrandsberelationsonschemasRandSrespectivelywhereR=(A1,…,Am,B1,…,Bn)S=(B1,…,Bn)TheresultofrsisarelationonschemaR–S=(A1,…,Am)r
s={t|t
R-S(r)u
s(tu
r)}r
s
DivisionOperation–Exampler
s:A
B12AB
12311134612rsAnotherDivisionExampleAB
aaaaaaaaCD
aabababbE11113111r
s:DabE11AB
aaC
rs10.复合运算(CompositionofOperations)由多个运算构成的复杂运算Example:
A=C(r)AB
raa
A,B(A=C(r))AB
aaaCD
aabE111
复合运算Cont.
从Movies(title,year,length,studio)关系里面选出由Fox公司制作的长度不少于100分钟的电影的名称和年份。Пtitle,year(бstudio=“Fox”∧length>=100(Movies))MOVIES(Title,year,length,studio)c1192199foxc21978100
foxc51945100
disniai1990102
foxMOVIES(Title,year)c21978ai1990
BankingExamplebranch(b-name,branch-city,assets)
customer(customer-name,customer-street,customer-only)account(account-number,branch-name,balance)loan(loan-number,branch-name,amount)depositor(customer-name,account-number)borrower(customer-name,loan-number)SchemaDiagramfortheBankingEnterprisebranchcustomer
accountdepositorborrowerloanExampleQueries贷款数额大于$1200的贷款信息
查找每笔贷款数额大于$1200的贷款编号(loan-number)
amount>1200(loan)
loan-number(amount
>1200(loan))loanExampleQueriescont.查找在银行中有借款,存款或二者均有的客户Findthenamesofallcustomerswhohavealoan,anaccount,orboth,fromthebank
customer-name(borrower)customer-name(depositor)depositorborrower查找在银行中既有借款又存款的客户的名称Findthenamesofallcustomerswhohavealoanandanaccountatbank.
customer-name(borrower)customer-name(depositor)depositorborrowerExampleQueriescont.查找在Perryridge分支银行有贷款的客户的名字。
FindthenamesofallcustomerswhohavealoanatthePerryridgebranch.branchcustomer
accountdepositorborrowerloanborrowerloan
customer-name(branch-name=“Perryridge”(
borrower.loan-number=loan.loan-number(borrowerxloan)))哪一种运算效率高??
customer-name(borrower
(loan-number(branch-name=“Perryridge”(loan)))Resultofborrower
loanResultof
branch-name=“Perryridge”(borrower
loan)
查找在Perryridge贷款,且在任何一个分支银行中都没有存款的客户的名字.
FindthenamesofallcustomerswhohavealoanatthePerryridgebranchbutdonothaveanaccountatanybranchofthebank.ExampleQueriescont.depositorborrowerloan
customer-name(borrower
(loan-number(branch-name=“Perryridge”(loan)))–customer-name(depositor)
R1(
customer-name(borrower
(loan-number(branch-name=“Perryridge”(loan))))
R2(
customer-name(depositor))Query=R1-R2ExampleQueriescont.查找最大的accountbalanceF.balance<S.balancef.account-numberf.branch-numberf.balances..account-numbers..branch-numbers..balanceA-101downtown500A215mianus700A-101downtown500A201brigton900A-101downtown500A222redwood700A-101downtown500A217brigton750A215mianus700A201brigton900A215mianus700A217brigton750A102perryridge400A-101downtown500A215mianus700f.balance500700400350700750account.balance500700400350900700750RenameaccountrelationasdThequeryis:
balance(account)-
account.balance(account
d(account)))
account.balance<d.balanceLargestAccountBalanceintheBankExtendedRelational-Algebra-OperationsGeneralizedProjectionOuterJoinAggregateFunctions§2.3关系的完整性关系的完整性是指采用关系模型存储的数据及其间的联系能够正确的表达现实世界。完整性约束主要包括三大类:实体完整性参照完整性用户定义的完整性1.实体完整性:实体完整性是要保证关系中的每个元组都是可识别和唯一的。指的是关系数据库中的所有的表都必须有主码(键码),且其取值非空。关系数据库管理系统提供支持。比如关系:学生(学号,姓名,性别,专业号,出生日期)2.参照完整性:一个表中的一个元组的存在以另一个表中某一元组的存在为前提。学生(学号,姓名,性别,专业,年龄)课程(课程号,课程名,学分)选课(学号,课程号,成绩)SnoSnameSsexSageSdept9512101李勇男19计算机系9512102刘晨男20计算机系9521103吴宾女21信息系9521104张海男20信息系snocnocnamegrade95121012db8695121021op8895121031op8095121032db7595121054ma90学生选课在关系数据库中用外码(Foreignkey)来实现参照完整性。3.用户定义的完整性用户定义的完整性也称为域完整性或语义完整性。用户定义的完整性就是针对某一具体应用领域定义对数据的约束条件。实际上就是指明关系中属性的取值范围,也就是属性的域,即限制关系中的属性的取值类型及取值范围,防止属性的值与应用语义矛盾。例如,学生的考试成绩的取值范围为0-100,或取{优、良、中、及格、不及格}。完整性约束的作用执行插入操作时检查完整性执行插入操作时需要检查实体完整性规则、参照完整性规则和用户定义完整性规则。执行删除操作时检查完整性
执行删除操作时一般只需要检查参照完整性规则。执行更新操作时检查完整性执行更新操作可以看作是先删除旧的元组,然后再插入新的元组。所以执行更新操作时的完整性检查综合了上述两种情况。本章知识框架小结105关系模型关系数据库数据组织方式关系数据结构关系操作关系完整性约束关系查询更新删除插入修改实体完整性参照完整性用户定义完整性关系数据库语言关系运算关系代数语言关系演算语言域关系演算语言元组关系演算语言本章重点及作业熟练掌握:关系数据模型的基本概念,关系代数运算,并能够用关系代数表达式表示查询请求。重点:正确使用关系代数表达式表示查询请求。书面作业:P29:练习2.4.1(a)--(g),写出表达式,不必给出查询结果的具体数据!EndofChapter2
thankyou!第1,2章小结第1章:数据库的相关概念
第2章:关系模型及关系代数
这两章共同为我们描述了数据库是什么?数据的组织方式如何?问题:如何将现实世界中的数据组织到数据库中??第3章:数据库建模与实体联系模型
DatabaseModelingand
Entity-RelationshipModel数据库设计的基本步骤实体联系模型E-RModelE-RModel向关系模型的转化§3.1数据库设计的基本步骤1.数据库设计的内容:为应用系统中的数据及其联系构造较优的数据模式。2.数据库设计与实施的步骤:需求分析设计概念模型设计逻辑模型设计物理结构系统实现试运行及维护3.概念模型及其表达工具:从应用语义视角来抽取模型,按用户的观点来对数据和及其联系进行建模。特点:是面向用户、面向现实世界的数据模型,它与具体的DBMS无关。常用的表示概念模型的工具:实体-联系模型(Entity-Relationship简称E-R)语义对象模型。§3.2实体-联系模型E-RModel由实体(Entity)和联系(Relationship)构成的模型。1.什么是实体(Entity)?现实世界中客观存在的一个具体或抽象的事物叫做实体,一个实体与其它实体是能够相互区分的。§3.2.1基本概念实体客观存在的抽象事件订货、演出、足球赛……等也是实体可以触及的客观对象仓库、器件、职工……等是实体实体是属性来描述的。
属性就是描述实体特征的数据项。实体标识符:能够唯一标识一个实体的属性或属性组,且该属性或属性组的子集不能标识该实体。身高年龄性别体重CID……比赛时间、地点、参赛队……2.实体集:具有共同属性的一类实体的集合。Anentitysetisasetofentitiesofthesametypethatsharethesameproperties.E.g.:学生,教室,树木。。。EntitySetscustomerandloanC-idC-nameC-streetCityloan-amountnumber属性类型Attributestypes属性类型:简单属性和组合属性.单值属性和多值属性E.g.电话号码派生属性Derivedattributes由其它属性计算而来的属性E.g.年龄,出生年月在传统的关系模型中,属性必须是简单,单值的!!!CompositeAttributes3.联系集RelationshipSets联系:实体之间的相互关系
E.g.学生集中的张三和课程集中DB之间会通过选课产生联系;
E.g.客户集中的haye与帐户集中的A-102之间通过存款产生联系;联系集:两个或多个实体集间,实体间联系的总集合.E.g.客户集与贷款集中所有实体间联系的总集合。联系的属性联系可以有属性描述联系的特征一个联系集的所有联系有相同的属性联系集的度DegreeofaRelationshipSet指一个联系集所涉及的实体集的个数涉及两个实体集的联系,叫二元联系binary(ordegreetwo).
涉及三个以上实体集的联系,叫多元联系,书上称为多路联系(见P76)E.g.银行的员工,分支机构和工作职位三个实体集,每个员工都在某个分支机构担任某项工作,它们之间的联系是三元联系(ternaryrelationshipset)二元联系的类型MappingCardinalities用一个实体集中的一个实体与另一个实体集中多少个实体产生联系这一角度定义二元联系的类型共有三种类型的联系(见P75)Onetoone(一对一)Onetomany(一对多)Manytomany(多对多)MappingCardinalitiesOnetooneOnetomany注意:A或B中的实体在B或A中可以没有实体与他们联系a5b5a4b6MappingCardinalitiesManytooneManytomanyNote:SomeelementsinAandBmaynotbemappedtoanyelementsintheotherseta5b6§3.2.2E-R图(Diagrams)Rectangles矩形
代表实体.Ellipses
椭圆代表属性。Diamonds棱形
代表联系集.Lines直线
用于连接属性与实体集,属性与联系集,实体集与联系集.Underline下划线
说明键码
属性primarykeyattributes1.联系类型的表达(
),代表“一,”(—),代表“多”E.g.One-to-onerelationship:一对一E.g.一对多:one-to-manyrelationship:E.g.多对多Many-To-ManyRelationship2.联系中的角色Roles如果联系涉及的实体集是一个,需要区分它在联系中的不同作用标签“manager”and“worker”叫作roles;表明实体间的相互作用3.多元联系联系类型的判断:如有n个实体集,则用(n-1)个实体集中的实体与1个实体集中实体的联系类型来确定。4.将多元联系转化成二元联系通过构造连接实体集E.将R用实体集E来代替,然后生成以E与其它实体集间的二元联系:RA,.RB,RC原联系R的属性成为
E的属性如R中的联系是(ai,bi,ci),ej是E的实体,则1.(ei,ai)∈RA;
2.(ei,,bi
)toRB;3.(ei,ci)toRCvvvv§3.2.3E-R图的设计问题忠实性:设计必须以现实世界为唯一依据。
避免冗余:即,“一事一地”原则。现实世界中的一个事物,在一个数据库中只表达一次。尽量简单:属性、实体集和联系能不用就不用,能合并就合并。选择合适的事物类型:是用实体集还是用属性是用实体集还是用联系集根据它要表达的是一个动作吗?用二元联系还是多元联系根据一个语义里包含几个实体集?联系属性的位置是在实体上还是联系上?根据它是否是描述一个动作的特征或结果?E-R模型的设计步骤:1.先找实体集,一般来说实体集都是名词2.找实体集的属性3.找联系,一般来说,联系是动词E.g.E-R模型的设计实例:用E-R图表示学生运动会信息系统的概念模型。需求描述:系统要求保存如下信息:学院:学院代号,学院名称,办公地点;班级:班号,班长姓名;学生:学号,姓名,性别,出生年月;运动会:举办年份,举办季节,总裁判长;项目:项目代号,项目名称,项目性质,本校记录。其中:一个学院有多个班级,一个班级只属于一个学院.一个班级有多名学生,一名学生只属于一个班级一名学生可以参加多届运动会、多个项目。系统应能够正确记录一名学生在某届运动会、某一项目上所取得的成绩。同时,一个项目可以有不止一名学生报名参加。每年可以举办两届运动会,分别称为春季运动会和秋季运动会。班级学生组成学院运动会项目竞赛成绩隶属注:略去其它属性。举办年份举办季节总裁判长§3.2.4约束的建模能够标识实体的最小的属性集合,称为实体集的键码,或实体标识符.当实体集有若干个键码是时,要指定一个做为主码
primarykey.1.E-R模型中的键Keys运动会举办年份举办季节总裁判长2.参照完整性约束对于从E到F的多对一联系的参照完整性约束,指:对于E中当前存在的一个实体e,在F中必须存在一个相对应的实体f。Customeraccountown(E)(F)参照完整性的表示:3.域约束:属性类型及取值范围的约束。在E-R模型中没有特殊的规定,可以放在属性的旁边§3.2.5子类实体子类实体的概念是来自于面向对象的程序设计技术。当我们对一个实体集进行细分(Specialization)或概括时,就形成高一层和低一层的实体集,它们就分别被称为超类和子类。学生本科生研究生子类实体继承超类的所有属性和联系.子类实体还可以有自己的属性和联系。在E-R图中,子类实体用标有”
ISA“(“isa”)的三角形与超类联系。Note:当子类实体没有自己的属性和联系时,则其不出现在E-R图中!!!!Cartoonsisaisa
MoviestitleyearlengthfilmtypeMurderMysteriesweaponvoicesstars多重继承问题
MoviesCartoonsisaMurderMysteriesisaisaisa
Cartoons-MurderMystery卡通武打动作设计(联系)(其它实体)
Movies面向对象程序设计中,有以下C++类结构:
Cartoons
MurderMysteriesCartoons-MurderMystery§3.2.6弱实体集WeakEntitySetsAnentitysetthatdoesnothaveaprimarykeyisreferredtoasaweakentityset.一个实体集没有主码就是弱实体集来源:当两个实体集有”属于“这种层次结构时:E.g.每个班级都有基于课外小组,课外小组由小组号描述,可为1,2。。。班级班号小组号课外小组课程教员教科书教学开课时间由多元联系转化的连接实体集往往是弱实体集.课程教员人员教科书教材开课开课时间教学转化成二元联系如下:弱实体集的键码组成:自己的属性通过多对一的联系从其它强实体集获取E.g.课外小组的键码:(班号,小组号)班级班号小组号组成课外小组课程人员教材开课开课时间教学教员教员编号
教科书教材编号
键码:(开课时间,教员编号,教材编号)弱实体集的表示:Wedepictaweakentitysetbydoublerectangles.双线矩形框弱实体集与为它提供键码的实体集间的联系用双线棱形E-RDiagramforaBankingEnterpriseE-R模型设计练习:为一个网上书店系统设计概念模型,系统中的数据包括:图书信息,记录书名,价格,出版日期,作者,ISBN,内容简介等。客户信息,记录客户编号,客户名称,手机号码(只需要一个),E-mail(一个),地址信息(地址信息包括省,市,区,街道,邮编等)客户可以有多个地址。客户有会员和普通客户,会员有会员ID号,及相应的折扣信息。仓库信息:记录仓库编号,电话。每个仓库可以存贮多种图书,每种图书可以在多个仓库存贮。客户每次买书时,系统自动为其生成一个购物车,并用唯一的编号标识,一个购物车只属于一个客户,一个客户却可以拥有多个购物车,系统要记录用户获得购物车的时间。一个购物车中可以包含多种图书,每种图书可以放在多个购物车中,系统要能够记录每个购物车中每种图书的数量。图书包含地址仓库客户会员购物车属于isa拥有存贮仓库编号
时间数量IDIDISBNID§3.3E-R模型向关系模型的转化§3.3.1强实体集的转化一个强实体集转化成一个关系模式,实体集的主码和属性成为关系模式的主码和属性。E.g.把“COURSE”实体集,转换为“COURSE”关系模式COURSECnoCnameCreditClassroom
COURSE(Cno,Cname,Credit,Classroom)
Customer(Customerid,Customername,Customerstreet,Customercity)customer§3.3.2
联系集的转化
一般原则:为联系建立一个关系模式。
E1
E2Rk1k2RA
R(k1,k2,RA)1.若按以上原则变换后,R中出现相同属性名,应进行“改名”。2.关系的键码由联系的类型来定多对多联系:转化成一个关系模式,属性由联系本身的属性及参与联系的实体集的键码构成.关系模式的键码由参与联系的实体集的键码共同构成E.g.:forrelationshipsetborrowerBorrower(customerid,loannumber)Borrower一对多联系:Accountbranch(accountnumber,branchname)Account(accountnumber,balance)branch(branchname,branchcity,assets)Account(accountnumber,balance,branchname)branch(branchname,branchcity,assets)消除了冗余!弱实体集与它所依赖的强实体集间的联系就更没有必要转化!!!!Why??结论:多对一联系可以不单独转化成关系模式,而是在多方实体集转化的关系模式中加入联系的属性和一方实体集的键码!一对一联系:
Student
DodumentS_DinDateSno…Documentno…
Student(Sno,sname…)Document(Documentno,…)S_D(Sno,Documentno,inDate)Student(Sno,Documentno,inDate,sname….)消除了冗余!!!!!在关系模型中,联系集可以用关系来表达: {(e1,e2,…en)|e1
E1,e2
E2,…,en
En}
Ei表示实体集(e1,e2,…,en)
是一个元组Example:depositor表示的是客户与帐户间的联系集,
(Hayes,A-102)depositorRelationshipSetdepositor“ISA”不用转化,只涉及到高一层实体与低一层实体如何转化Method1:
为父类实体集建立一个关系模式为每个子类实体集分别建立一个关系模式,属性由父类实体集的主码和子类实体集自己的属性构成Drawback:
检索信息时经常涉及到多个关系。如查询某一个凶杀片的制作年份及播放长度。§3.3.3子类实体集的转化isa
MoviestitleyearlengthfilmtypeMurderMysteriesweaponMovies(Title,Year,length,...)Murder-Mysteries(Title,Year,Weapon)Method2:
如果子类实体集是不相交且全部的。为每个子类实体建立一个关系模式,其属性由子类实体继承的所有属性和其自己拥有的属性共同构成。学生本科生研究生isaisa类型导师姓名本科生(学号,姓名,类型...)研究生(学号,姓名,导师姓名...)学号。。。§3.3.4
弱实体集的转化弱实体集A转化成一个关系模式,该关系模式的属性包括包括:A自已的属性,以及为A提供主码属性的强实体集的主码。班级班号小组号组成课外小组课外小组(班号,小组号,...)Payment(loannumber,paymentnumber,paymentdate,paymentamount)课堂练习:将网上书店的E-R模型转化成关系模式图书(书名,价格,出版时间,作者,简介,ISBN)仓库(仓库编号,电话)存贮(ISBN,仓库编号)购物车(购物车ID,时间,客户ID)包含(ISBN,购物车ID,数量)客户(客户ID,名称,手机,E-mail)会员(客户ID,会员ID)地址(客户ID,省,市,区,街道)掌握:数据库设计的步骤。了解:数据库设计的原则。熟练掌握:E-R图的主要概念(包括:实体、实体集、属性、域、键码、实体之间的联系);E-R图表示法(包括:一般实体集;一对多、多对多、多元联系;子类实体集及其联系;弱实体集及其联系;主码和参照完整性)。要求能够熟练地把现实世界的事物及联系抽象为E-R模型。将E-R模型转化成关系模式。本章小结作业:(i)书面:P81:4.1.1,p86:4.2.1,4.2.5,4.2..6(ii)思考题:p86:4.2.7,P89:4.3.1(c)(ii),4.3.2(iii)书面:P89:4.3.1(a),P92:4.4.4(a),P96:4.5.1,p100:4.6.1(a);p100:4.6.2(a)(iv)思考题:P96:4.5.2,p100:4.6.4(a)EndofChapter31、将一个系统的数据组织成关系模式有多种方法,为什么鼓励使用先建立ER模型再转化逻辑模式?2、如何评价关系模式的好坏?3、如何将不好的关系模式转化成好的关系模式?E.g.设:建立某数据库需要如下信息:供应商号(sno),供应商所在城市(city),邮编(zip),零件号(pno)零件名(pname),供应某种零件的数量(qty)。方案之一:用一个关系模式创建该数据库:
FIRST(sno,city,zip,pno,pname,qty)方案之二:用两个关系模式,创建该数据库:模式一:S(sno,city,zip)
模式二:SP(sno,pno,pname,qty)方案之三:用三个关系模式,创建该数据库:模式一:S(sno,city,zip)
模式二:SP(sno,pno,qty)模式:P(pno,pname)供应商sno零件pno供应第4章:关系数据库设计理论
RelationalDatabaseDesign不合理的关系模式带来的问题函数依赖和范式的定义多值依赖及第4范式函数依赖理论关系的规范化§1.不好的关系模式带来的问题FIRST(sno,city,zip,pno,pname,qty)
FIRST(snocityzippnopnameqty)s1c1z1p1nut100s1c1z1p2bolt200s2c2z2p1nut160s2c2z2p3worm320存在问题?1)数据冗余度太大.2)删除异常.3)插入异常.
S(sno,city,zip)s1c1z1s2c2z2
SP(sno,pno,qty)s1p1100s1p2200s2p1160s2p3320
P(pno,pname)p1nutp2boltp3worm§2.函数依赖及范式的定义
Function
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 1 Time to Relax (Period 4)Section B (1a-1e)学习任务单2025-2026学年人教版英语八年级下册
- 2026周口物流面试题及答案
- 2026年一建市政实务考前易错强化卷试卷及答案
- 2026年一建民航实务考前摸底测评试卷及答案
- 2026年一建矿业实务考前全真冲刺模拟试卷及答案
- 2026年一建经济考前综合训练试卷及答案
- 2026调试维修面试题及答案
- 2026钢琴方面试题及答案
- 2026公关媒介面试题目及答案
- 2026会议工作面试题目及答案
- 医院科研诚信课件
- 临床职业助理医师考试题及答案2025版
- 残疾人旅客航空运输培训
- 妇产科两非两禁止培训
- 渔船合伙投资协议书
- 2025年03月内蒙古鄂尔多斯市卫生健康委员会所属事业单位引进高层次人才30人笔试历年参考题库考点剖析附解题思路及答案详解
- 2025城市水上旅游服务规范
- 《高等教育心理学》教师岗前培训考试复习题库(含答案)
- 散文阅读专题汇编(含答案)(2023全国各地中考语文现代文阅读分类汇编22篇)
- CJJ56-2012市政工程勘察规范
- CJJ-T148-2010城镇燃气加臭技术规程
评论
0/150
提交评论