《数据库表结构设计.pptx》由会员分享,可在线阅读,更多相关《数据库表结构设计.pptx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、本课教学内容数据库设计的重要性实体和属性提取关系特殊情况下的表设计第1页/共23页数据库设计的重要性实际的项目中,数据库设计非常重要,数据库设计过程中,最重要的是表设计。因此,好的表结构设计,对应着较高的效率和安全性,而差的表设计,对应着差的效率和安全性。(例子参考课本P16)第2页/共23页实体和属性在进行数据库设计之前,必须要进行需求分析。根据需求分析的结果,使用E-R模型描述系统中数据的概念。在E-R模型中,首先遇到的就是实体和属性。第3页/共23页实体和属性1.实体的提取。如何提取实体呢?我们知道,客观存在并可相互区别的事物称为实体,一般情况下,实体表现为名词。因此,通过将需求中,需要
2、保存的名词提取出来,就可以提取出实体。2.属性的提取。实体所具有的某一特性称为属性,一般说来,一个实体可以由若干个属性来刻画。属性,一般表现为名词。因此,我们通过将需求中,需要保存的实体的具体特征提取出来,就可以得到属性。第4页/共23页实体和属性有了实体和属性的E-R图,接下来是将实体映射为表。实体映射为表的一般方法是:原则上,每个实体对应一个表,实体中的属性对应表中的列。第5页/共23页提取关系一对一关系下的表设计以学校和校长之间的关系为例,一个学校只有一个校长,一个校长只在一个学校任校长,属于一对一关系,其E-R图如图所示:第6页/共23页提取关系一对一情况下,表设计的一般经验是:1.每
3、个实体设计一张表。2任选一表,其中的主键在另一个表中充当外键。第7页/共23页提取关系学校与校长关系表设计:校长编号(主键)姓名职称0001王海教授学校编号(主键)名称地址校长编号(外键)001华东大学上海0001校长信息表学校信息表第8页/共23页提取关系一对多情况下的表设计以班级和学生之间的关系为例。一个班级中有若干名学生,每个学生只在一个班级中学习,其E-R图如图所示:第9页/共23页提取关系一对多情况下,表设计的一般经验是:1.每个实体设计一张表。2选“一”方表,其主键在“多”方表中充当外键。第10页/共23页提取关系班级与学生关系表设计:学号(主键)姓名性别班级号(外键)0001雷萍
4、女0010002郭丽方女001班级号(主键)教室号001科教楼401学生信息表 班级信息表 第11页/共23页提取关系多对多情况下的表设计以学生和课程之间的关系为例。一个学生可以选多门课程,一门课程可以有多个学生选,其E-R图如图所示:第12页/共23页提取关系多对多情况下,表设计的一般经验是:1.每个实体设计一张表。2另建第三个表(关系表),两个“多”方的主键在关系表中充当外键;关系表中的主键为这两个外键的组合。第13页/共23页提取关系学生与课程关系表设计学号(主键)姓名性别0001雷萍女0002郭丽方女课程号(主键)教材名称001大学物理教程002高等数学教程学号(外键)课程号(外键)0
5、00100100020010001002学生信息表课程信息表选课信息表第14页/共23页提取关系实体自身发生联系情况下的表设计以学生和班长之间的关系为例,学生中有班长,班长也属于学生的一员,班长和学生属于一对多关系,此时属于学生实体与自身的关系,其E-R图如图所示:第15页/共23页提取关系此种情况下,表设计的一般经验,实际上可以参考一对多情况下的方法。为:1.每个实体设计一张表。2选“一”方表,其主键在“多”方表中充当外键。3将两个表合成一个表。第16页/共23页提取关系学生与班长关系表设计学号(主键)姓名性别班长学号(外键)0001雷萍女00010002郭丽方女0001学生信息表 第17页
6、/共23页特殊情况下的表设计引入冗余字段一般说来,表及其字段之间的关系,应尽可能避免冗余字段。但是,为了提高数据库的运行效率,有时可以降低标准,适当增加一些冗余,提高查询性能,达到以空间换时间的目的。第18页/共23页特殊情况下的表设计例如:有一张存放订单明细的表,结构如表所示:该表的设计没有什么问题。但是,考虑一种特殊情况,如果系统经常进行统计总金额操作,而统计时将每一种图书的单价和数量相乘,然后加起来,如果统计操作反复执行,这里面将会执行大量的乘法,怎样避免大量乘法操作,提高统计速度呢?编号(主键)产品名称单价数量0001大学物理教程2540002高等数学教程2030003Java154订
7、单明细表第19页/共23页特殊情况下的表设计这就可以在订单明细表表中增加冗余字段。增加了冗余字段的订单明细表,如表所示:在新的订单明细表表中,增加了“总价”字段,由于“总价”可以由“单价”乘以“数量”得到,说明“总价”是冗余字段。因此,该表数据存在低级冗余。但是,这种设计可以消除在统计时的大量乘法操作,提高查询统计的速度,从算法策略上讲,这是以空间换时间的作法。编号(主键)产品名称单价数量总价0001大学物理教程2541000002高等数学教程203600003Java15460订单明细表第20页/共23页特殊情况下的表设计数据库设计中的其他技巧包括:1.科学地进行主键取值。2.适当使用“列变行”技术,减少不必要的数据冗余,提高性能。第21页/共23页本章知识体系本章知识体系知识点知识点重要等级重要等级难度等级难度等级表设计的重要性提取实体和属性关系设计特殊情况下的表设计第22页/共23页感谢您的观看!第23页/共23页