《第三章关系型数据库的设计》由会员分享,可在线阅读,更多相关《第三章关系型数据库的设计(37页珍藏版)》请在金锄头文库上搜索。
1、数据库实用技术SQLServer2008第三章关系型数据库的设计数据库实用技术第二章第二章 数据库基础数据库基础关系型数据库的定义关系型数据库的定义1E-R模型到关系模型的转换模型到关系模型的转换2关系规范化关系规范化3SQL Server 2008实训:计费系统的逻辑设计实训:计费系统的逻辑设计4使用使用PowerDesigner5数据库实用技术关系型数据库的定义关系型数据库的定义v关系型数据库是基于关系模型的数据库。v关系模型的三要素:l关系数据结构:u关系模型的数据结构非常单一。u现实世界中的实体以及实体之间的各种联系统一用关系表示。u在用户看来,一个关系就是一张二维表。l关系数据操作。
2、l关系数据完整性约束。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术关系型数据库的定义关系型数据库的定义v关系型数据库是基于关系模型的数据库。v关系模型的三要素:l关系数据结构。l关系数据操作:u数据操作是指对数据库中各种数据对象允许执行的操作的集合。u主要有查询和更新(插入、删除、修改)两大类操作。u数据模型必须定义这些操作的确切含义、操作符号、操作规则及实现操作的语言。l关系数据完整性约束。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术关系型数据库的定义关系型数据库的定义v关系型数据库是基于关系
3、模型的数据库。v关系模型的三要素:l关系数据结构。l关系数据操作。l关系数据完整性约束:u数据的约束是一组完整性规则的集合。u完整性规则是数据模型中数据及其联系所具有的制约和依存规则,用以保证数据的正确性、有效性和一致性。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术关系型数据库的定义关系型数据库的定义v关系数据结构:l关系术语:u关系(Relation):是满足一定条件的二维表。每个关系有一个关系名。u元组(Tuple):关系表中的一行,描述一实体或联系。也被称为记录。u属性(Attribute):关系表中的各列,也被称为字段。每一个属性都有一
4、个名字,即表中的列标题称为属性名;表中各列对应的数据称为属性值,描述实体或联系的特征。u域(Domain):属性的取值范围,即不同的元组对同一个属性的取值所限定的范围。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术关系型数据库的定义关系型数据库的定义v关系数据结构:l关系术语:u候选码(CandidateKey):若关系表中的某一属性或属性组(多个属性的最小组合)的值能唯一地确定一个元组,称该属性或属性组为候选码。候选码可以有多个。u主键(PrimaryKey,PK):如果候选码有多个,取其中某一个作为关系的主键。主键也被称为关键字。其值不允许为
5、NULL,而且唯一标识一行。uNULL表示该字段的值为空,它不是0,也不是空格。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术关系型数据库的定义关系型数据库的定义v关系数据结构:l关系术语:u外键(ForeignKey,FK):是一个关系中的属性或属性组,但不是本关系的主键,而是另一关系的主键,则称该属性或属性组是该关系的外键,也被称为外关键字。关系型数据库的表间关系必须借助外键来建立。u主属性(PrimaryAttribute):能作为候选码的属性。一个关系表中至少必须有一个候选码。u非主属性(Non-primaryAttribute):不包含
6、在任何候选码中的属性。即不是候选码的属性。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术关系型数据库的定义关系型数据库的定义v关系数据结构:l关系:关系是一个二维表,它必须满足以下特性:u关系(表)的每一元组(行)定义实体集的一个实体,每一列定义实体的一个属性。u每一列表示一个属性(字段),且列名不能重复。u关系必须有一个主键(关键字),用来唯一标识一个元组(行),即实体。u列的每个值必须与对应属性的类型相同。u列是不可分割的最小数据项。u行、列的顺序无关紧要。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库
7、实用技术关系型数据库的定义关系型数据库的定义v关系数据结构:l关系:关系是一个二维表,它必须满足以下特性:u例如客户信息关系:第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008客户ID客户名称注册日期联系人ID类型状态20100146新大白宾馆2006/2/1231002894大户120101845石永贵2004/2/120101845流动120102481覃显明2000/7/2520102481流动1数据库实用技术关系型数据库的定义关系型数据库的定义v关系数据结构:l关系模式:关系模式是对关系的结构及其特征的抽象描述,一般由关系名、关系中的属性名及主键构成。l描
8、述方式:u关系名(属性1,属性2,属性n)u有下划线的“属性1”为主键。u例如客户信息:客户信息(客户ID,客户名称,密码,注册日期,联系人ID,类别,状态,预存费余额)第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术关系型数据库的定义关系型数据库的定义v关系数据操作:l常用的数据操作可分为查询和更新(插入、删除、修改)两大类。其中,查询是最主要也最频繁执行的操作。l关系数据操作的执行过程以关系代数为理论基础。u将数据库的各表视作集合,执行并、交、差和笛卡儿积等集合运算。u专门用于数据库操作的关系运算:选择运算:从参与运算的关系中选择满足给定条件的
9、那些元组构成一个新关系。投影运算:从参与运算的关系中选择给定的若干属性构成一个新关系。连接运算:从两个关系的广义笛卡儿积中选择属性值满足一定条件的元组构成一个新关系。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术关系型数据库的定义关系型数据库的定义v关系数据完整性约束:l实体完整性(EntityIntegrity):u关系的主属性值不能取空值。l参照完整性(ReferentialIntegrity):u参照关系(子表)的外键取值不能超出被参照关系(父表)的主键取值。l用户定义的完整性(User-definedIntegrity):u属性取值满足某
10、种条件或函数要求,包括对每个关系的取值限制(或称约束)的具体定义。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术E-R模型到关系模型的转换模型到关系模型的转换v实体(E)的转换:l一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的主键就是关系的主键。l为实体和属性命名时,建议尽量使用英文或拼音,以适应各种数据库管理系统(DBMS)的兼容操作。l例如,客户实体转换为关系模式:u实体:客户信息(客户ID,客户名称,密码,注册日期,类别,状态,预存费余额),其中主键为“客户ID”。u关系:Customer(CID,CName,Cpasswor
11、d,CRegistrationDate,CType,CStatus,CAccountBalance)PK:CID第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术E-R模型到关系模型的转换模型到关系模型的转换v联系(R)的转换:l一对一联系的转换:u将联系与任意端实体所对应的关系模式合并,并加入另一端实体的主键和联系本身的属性。l一对多联系的转换:u方法一:把联系与多的一端实体所对应的关系模式合并,加入一的那端实体的主键和联系的属性。u方法二:联系可独立转换成一个关系模式,其属性包括联系自身的属性以及相连的两端实体的主键。l多对多联系的转换:u实体直
12、接可转换为关系模式,联系则只能独立转换成一个关系模式,其属性包括联系自身的属性以及相连的各实体的主键。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术E-R模型到关系模型的转换模型到关系模型的转换v联系(R)的转换:l【例3-1】有下列实体,实体之间存在一对一联系,将其转换为关系模式。u客户(客户ID,客户名称,密码,注册日期,类别,状态,预存费余额)u联系人(联系人ID,姓名,身份证号码,职务,地址,通信方式)l关系模型:uCustomer(CID,CName,RID,CPassword,CRegistrationDate,CType,CStat
13、us,CAccountBalance)PK:CID;FK:RIDuRelation(RID,RName,RIndentityNo,RDuty,RAddress,RContactinfo)PK:RID第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008关联11客户客户名称类别注册日期客户ID状态预存费余额联系人联系人ID通信方式姓名职务地址联系人ID类别身份证号码数据库实用技术E-R模型到关系模型的转换模型到关系模型的转换v联系(R)的转换:l【例3-2】客户实体与产品(产品号码,产品名称,购买日期,安装地址,单价)实体存在一对多的购买联系,将其转换为关系模式。l关系
14、模型:u由于客户与产品之间存在的购买联系没有属性,所以使用方法一,将购买联系与产品合并,转换成一个关系模式:uCustomer(CID,CName,RID,CPassword,CRegistrationDate,CType,CStatus,CAccountBalance)PK:CID;FK:RIDuEProduct(ENo,EName,CID,EJoinDate,EAddress,EUnivalence)PK:Eno;FK:CID第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008购买1n客户客户名称类别注册日期客户ID状态预存费余额联系人ID类别产品产品名称产品号
15、码购买日期安装地址客户ID单价数据库实用技术E-R模型到关系模型的转换模型到关系模型的转换v联系(R)的转换:l【例3-3】客户实体与产品(产品号码,产品名称,购买日期,安装地址)实体存在一对多的支付联系,支付联系(支付时间,付款方式,对应帐号),将客户、产品和支付联系转换为关系模式。l关系模型:u由于客户与产品之间的支付联系存在属性,所以使用方法二,将支付联系独立转换成一个关系模式:uCustomer(CID,CName,RID,CPassword,CRegistrationDate,CType,CStatus,CAccountBalance)PK:CID;FK:RIDuPayment(CI
16、D,ENo,PayDate,PaymentWay,PayAccountNo)PK:CID,Eno;FK:CID和EnouEProduct2(ENo,Ename,EJoinDate,EAddress,EUnivalence)PK:Eno第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008支付1n对应帐号付款方式客户ID产品号码支付时间客户客户名称类别注册日期客户ID状态预存费余额联系人ID类别产品产品名称产品号码购买日期安装地址单价数据库实用技术E-R模型到关系模型的转换模型到关系模型的转换v联系(R)的转换:l【例3-4】产品实体与附加服务(附加服务ID,附加服务名
17、称,附加服务收费)实体存在多对多的联系,由主产品绑定开通附加服务项目,开通联系有开通时间属性。现将其转换为关系模式。l关系模型:uEProduct(ENo,EName,CID,EJoinDate,EAddress,Eunivalence)PK:Eno;FK:CIDuStartAdditionalService(ENo,ASID,SATime)PK:ENo,ASID;FK:ENo和ASIDuAdditionalService(ASID,ASitem,ASPrice)PK:ASID第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008开通mn开通时间附加服务附加服务名称附
18、加服务ID附加服务收费产品号码附加服务ID产品产品名称产品号码购买日期安装地址客户ID单价数据库实用技术关系规范化关系规范化v关系规范化:l就是能够确保所建立的数据库具有较少的数据冗余、较高的数据共享度、较好的数据一致性,以及较灵活和方便的数据更新能力。l关系模型要求关系必须是规范化的,即必须满足三个范式:u第一范式1NF:关系表R中的每一个属性(字段)是不可再分的。u第二范式2NF关系表R是1NF,而且它的每一非主属性(即不是候选码里的属性)完全依赖于全部主属性。u第三范式3NF关系表R是2NF,而且它的每一非主属性不传递依赖于主属性。传递依赖的含义是指经由其他属性而依赖于主属性的字段。第三
19、章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术关系规范化关系规范化v关系规范化举例:l第一范式1NF:u不符合第一范式:u符合第一范式:第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008联系人ID联系人职务地址通信方式电话邮编EmailFax60200105张力经理天河区五山路26号6127906351011060200110刘思唯户主天河软件园79049453510123联系人ID联系人职务地址电话邮编EmailFax60200105张力经理天河区五山路26号6127906351011060200110刘思唯户主天河软
20、件园79049453510123数据库实用技术关系规范化关系规范化v关系规范化:l第二范式2NF:u不符合第二范式:客户与联系人是一对一联系,可以将它们合并为一个关系表:客户信息(客户ID,客户名称,密码,注册日期,类别,状态,预存费余额,联系人ID,姓名,身份证号码,职务,地址,电话,邮编,Email,传真),主属性有:客户ID,联系人ID,身份证号码。有非主属性部分依赖主属性的情况。u符合第二范式:将该关系表分解成客户关系表和联系人关系表:客户(客户ID,联系人ID,客户名称,密码,注册日期,类别,状态,预存费余额);主键:客户ID;外键:联系人ID联系人(联系人ID,姓名,身份证号码,职
21、务,地址,电话,邮编,Email,传真);主键:联系人ID第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术关系规范化关系规范化v关系规范化:l第三范式3NF:u不符合第三范式:用一个关系表来表示帐单和明细,其关系为:帐单明细(明细ID,产品号码,客户ID,对方号码,日期,起始时间,持续时间,发生费用,帐单ID,帐单日期,固定费用,通信费用)主属性有:明细ID。帐单ID是非主属性,它是依赖于明细ID的,而帐单日期、固定费用、通信费用又是依赖于帐单ID,有传递依赖主属性的情况。u符合第三范式:将该关系表分解成明细关系表和帐单关系表:明细:(明细ID,产
22、品号码,对方号码,日期,起始时间,持续时间,发生费用,帐单ID);主键:明细ID;外键:帐单ID帐单:(帐单ID,产品号码,客户ID,帐单日期,固定费用,通信费用);主键:帐单ID第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术关系规范化关系规范化v数据模型的优化:l关系模型要求关系必须规范化。l设计的数据库逻辑结构必须满足三个范式。l设计步骤:u完成E-R图向关系模式转换u对所建立的关系模式进行三个范式的验证u对不优化的关系要进行拆分:u拆分原则:概念单一。数据完整。尽量减少冗余。u注意:在实际设计中,完全消除冗余是很难做到的。有时为了提高数据检
23、索等处理效率,也允许存在适当的冗余。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术实训:计费系统的逻辑设计实训:计费系统的逻辑设计v计费系统概念模型描述:l实体:u客户:客户ID,客户名称,密码,注册日期,客户类别,状态,预存费余额。u联系人:联系人ID,姓名,身份证号码,职务,地址,电话,邮编,Email地址,传真。u产品:产品号码,产品名称,购买日期,安装地址,单价。u附加服务项目:附加服务ID,附加服务名称,附加服务收费。u明细:明细ID,帐单ID,产品号码,对方号码,日期,起始时间,持续时间,发生费用。u帐单:帐单ID,客户ID,产品号码
24、,帐单日期,固定费用,通信费用。l存在自身属性的联系:u支付:支付时间,付款方式,对应帐号。u开通:开通时间。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术实训:计费系统的逻辑设计实训:计费系统的逻辑设计v计费系统概念模型描述:l联系:u客户与联系人的一对一联系:u客户、产品、明细及帐单的一对多联系:u产品与附加服务的多对多联系:第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008客户联系人关联111n1nn11n1n1n客户支付产品接收购买帐单明细表使用汇总消费产品附加服务开通mn开通时间数据库实用技术实训:计费系统
25、的逻辑设计实训:计费系统的逻辑设计vE-R图向关系模式转换:l按照概念模型的描述,完成向关系模式的转换。l转换原则:u一个实体转换为一个关系模式。u按照联系的一对一、一对多、多对多的分类类型,其转换方法不同。u遵从三范式的准则。v数据模型的优化:l根据转换原则和三范式的准则完成E-R图向关系模式的转换后,还应该对得到的关系模式进行优化,可以尽量减少数据冗余,但不能完全消除冗余。l目标:根据计费系统的业务需求,对关系模式进行合理优化。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术使用使用Powerdesigner进行逻辑设计进行逻辑设计vPower
26、Designer的物理数据模型(PDM)是定义模型的物理实现细节,与具体的数据库管理系统有关。v在PowerDesigner中建立PDM有三种方式:l直接新建物理模型。l设计好概念模型,然后由概念模型生成物理模型。l设计好逻辑模型,然后由逻辑模型生成物理模型。l注意:在此只介绍使用前两种方式建立PDM。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术使用使用Powerdesigner进行逻辑设计进行逻辑设计v在PowerDesigner中直接新建PDM:l新建PDM步骤:启动PowerDesigner,并新建一个工程。新建PDM:在PowerDes
27、igner窗口中选择“File”“NewModel”;在“ModelType”中选择“PhysicalDataModel”。创建表:添加表图标:单击“表”按钮,然后在模型设计面板中单击一次便可添加一个表图标;是创建表按钮;是创建外键按钮。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术使用使用Powerdesigner进行逻辑设计进行逻辑设计v在PowerDesigner中直接新建PDM:l新建PDM步骤:启动PowerDesigner,新建工程。新建PDM。创建表:添加表图标;定义表属性:双击一个表图标,打开表属性窗口,在选项卡“General”
28、中可以设置表的Name、Code等属性。Name是在模型中显示的名称;Code是生成数据库时的实际表名。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术使用使用Powerdesigner进行逻辑设计进行逻辑设计v在PowerDesigner中直接新建PDM:l新建PDM步骤:定义表主键:定义单列主键:在“Columns”选项卡中,直接选中主键列的P列复选框。定义自增主键:选中要设为自增主键的列,单击工具栏的“属性”按钮,选中Identity复选框,如图所示。定义多列主键:切换到“Keys”选项卡中,添加一行命名为PK_CID,单击工具栏的“属性”按
29、钮,打开键属性窗口,在该窗口中切换到“Columns”选项卡,单击添加列按钮,弹出列选择窗口,选中主键中应该包含的列。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术使用使用Powerdesigner进行逻辑设计进行逻辑设计v在PowerDesigner中直接新建PDM:l新建PDM步骤:启动PowerDesigner,并新建一个工程。新建PDM。创建表。定义表主键。定义表的外键:通过PDM工具选项板的Reference按钮来建立两表间的外键。例如,客户表和帐单表是一对多的关系,在帐单表中添加CID列作为外键列的操作:在PDM工具选项板中单击“Re
30、ference”按钮;单击帐单表;拖拽到客户表中放开鼠标。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术使用使用Powerdesigner进行逻辑设计进行逻辑设计v由CDM生成PDM:l从“概念数据模型”到“物理数据模型”转化的步骤:打开概念模型的图表:启动PowerDesigner;打开“计费系统”工程文件,展开“BS_CDM”,选择图表项“BillingSystem”,如左图;双击图表项,即可打开已完成的概念数据模型。由概念模型生成物理模型。完善物理数据模型。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008 计
31、费系统的CDM图表项数据库实用技术使用使用Powerdesigner进行逻辑设计进行逻辑设计v由CDM生成PDM:l从“概念数据模型”到“物理数据模型”转化的步骤:打开概念模型的图表:由概念模型生成物理模型。依次选择菜单“Tools”“GeneratePhysicalDataModel”,进入PDM的生成选项窗口;选择一个具体的DBMS(选择SQLServer2008),并为PDM命名;单击“确定”按钮。完善物理数据模型。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术使用使用Powerdesigner进行逻辑设计进行逻辑设计v使用Powerdes
32、igner生成计费系统的PDM为:第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008数据库实用技术小结小结v数据库的逻辑设计l将E-R模型转换为关系表。必须掌握以下内容:u关系型数据库系统的基本概念:关系术语:关系、元组、属性、域、候选码、主键、外键、主属性、非主属性。关系:满足一定特性的二维表。关系模式,其描述方式:关系名(属性1,属性2,属性n)。uE-R模型转换为关系模式的方法(重点);u关系规范化问题。(难点)l实训练习:计费系统的逻辑设计。u给出了详细的计费系统概念模型描述。u主要任务:完成向关系模式的转换。v使用Powerdesigner完成计费系统的数据库逻辑设计l直接新建PDM。l由CDM生成PDM。第三章第三章 关系型数据库的设计关系型数据库的设计SQL Server 2008