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