《概念模型ER图及概念模型转化成关系模型.ppt》由会员分享,可在线阅读,更多相关《概念模型ER图及概念模型转化成关系模型.ppt(93页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二讲:概念模型ER图及概念模型转化成关系模型l概念模型和实体关系图l概念模型转化成逻辑模型lPowerDesigner建立概念模型CDMl概念数据模型CDM转化成物理数据模型PDMl建立数据库一、概念模型和实体关系图l把用户需求抽象为概念模型即为概念结构设计。l概念模型除了要求能反映客观世界并且易于理解外,还要求其易于向数据模型(如关系模型)转化。l概念模型独立于具体的数据库系统,是整个数据库设计的基础。1.概念模型l概念模型的用途u概念模型用于信息世界的建模概念模型用于信息世界的建模u是是现实世界到机器世界的一个中世界到机器世界的一个中间层次次u是数据是数据库设计的有力工具的有力工具u数据
2、数据库设计人人员和用和用户之之间进行交流的行交流的语言言l对概念模型的基本要求u较强的的语义表表达达能能力力,能能够方方便便、直直接接地地表表达达应用用中中的各种的各种语义知知识u简单、清晰、易于用、清晰、易于用户理解理解。2.信息世界中的基本概念 (1)实体(Entity)客客观存在并可相互区存在并可相互区别的事物称的事物称为实体。体。可以是具体的人、事、物或抽象的概念可以是具体的人、事、物或抽象的概念。(2)属性(Attribute)实体所具有的某一特性称体所具有的某一特性称为属性。属性。一个一个实体可以由若干个属性来刻画。体可以由若干个属性来刻画。(3)码(Key)唯一唯一标识实体的属性
3、集称体的属性集称为码。信息世界中的基本概念(续)(4)域(Domain)属性的取属性的取值范范围称称为该属性的域属性的域。(5)实体型(Entity Type)用用实体名及其属性名集合来抽象和刻画体名及其属性名集合来抽象和刻画同同类实体称体称为实体型体型(6)实体集(Entity Set)同型同型实体的集合称体的集合称为实体集体集信息世界中的基本概念(续)(7)联系(Relationship)现实世界中事物内部以及事物之世界中事物内部以及事物之间的的联系在信息世界系在信息世界中反映中反映为实体内部的体内部的联系和系和实体之体之间的的联系系实体型间联系 两个两个实体型体型 一一对一一联系(系(1
4、:11:1)三个三个实体型体型 一一对多多联系(系(1:n1:n)一个一个实体型体型 多多对多多联系(系(m:nm:n)两个实体型间的联系实体型体型1联系名系名实体型体型2111:1联系系实体型体型1联系名系名实体型体型2mnm:n联系系实体型体型1联系名系名实体型体型21n1:n联系系An Introduction to Database System两个实体型间的联系 l一对一联系 u如如果果对于于实体体集集A A中中的的每每一一个个实体体,实体体集集B B中中至至多多有有一一个个实体体与与之之联系系,反反之之亦亦然然,则称称实体体集集A A与与实体体集集B B具具有有一一对一一联系系。记
5、为1:11:1。u 实例班班级与班与班长之之间的的联系:系:一个班一个班级只有一个正班只有一个正班长一个班一个班长只在一个班中任只在一个班中任职两个实体型间的联系(续)l一对多联系u如如果果对于于实体体集集A A中中的的每每一一个个实体体,实体体集集B B中中有有n n个个实体体(n0n0)与与之之联系系,反反之之,对于于实体体集集B B中中的的每每一一个个实体体,实体体集集A A中中至至多多只只有有一一个个实体体与与之之联系,系,则称称实体集体集A A与与实体集体集B B有一有一对多多联系系 记为1:n1:nu实例班班级与学生之与学生之间的的联系:系:一个班一个班级中有若干名学生,中有若干名
6、学生,每个学生只在一个班每个学生只在一个班级中学中学习两个实体型间的联系(续)l多对多联系(m:n)u如如果果对于于实体体集集A A中中的的每每一一个个实体体,实体体集集B B中中有有n n个个实体体(n0n0)与与之之联系系,反反之之,对于于实体体集集B B中中的的每每一一个个实体体,实体体集集A A中中也也有有mm个个实体体(m0m0)与与之之联系系,则称称实体体集集A A与与实体体B B具具有有多多对多多联系系。记为m:nm:nu实例课程与学生之程与学生之间的的联系:系:一一门课程同程同时有若干个学生有若干个学生选修修一个学生可以同一个学生可以同时选修多修多门课程程3.概念模型的表示方法
7、ER图l实体型u用矩形表示,矩形框内写明实体名。学生学生教教师E-R图(续)l属性u用椭圆形表示,并用无向边将其与相应的实体连接起来学生学生学号学号年年龄性性别姓名姓名An Introduction to Database SystemE-R图(续)l联系u联系本身:用菱形表示,菱形框内写明用菱形表示,菱形框内写明联系名,并用无系名,并用无向向边分分别与有关与有关实体体连接起来,同接起来,同时在无向在无向边旁旁标上上联系系的的类型(型(1:11:1、1:n1:n或或m:nm:n)u联系的属性:联系本身也是一种系本身也是一种实体型,也可以有属性。体型,也可以有属性。如果一个如果一个联系具有属性,
8、系具有属性,则这些属性也要用无向些属性也要用无向边与与该联系系连接起来接起来 An Introduction to Database System联系的表示方法实体型体型1联系名系名实体型体型2111:1联系系实体型体型1联系名系名实体型体型2mnm:n联系系实体型体型1联系名系名实体型体型21n1:n联系系联系的表示方法(续)实体型体型1联系名系名mn同一同一实体型内部的体型内部的m:n联系系实体型体型1联系名系名实体型体型21m多个多个实体型体型间的的1:n联系系实体型体型3n联系的表示方法示例班班级班班级-班班长班班长111:1联系系课程程选修修学生学生mnm:n联系系班班级组成成学生学
9、生1n1:n联系系联系的表示方法示例(续)职工工领导1n同一同一实体型内部的体型内部的1:n联系系课程程讲授授教教师1m多个多个实体型体型间的的1:n联系系参考参考书n联系属性的表示方法课程程选修修学生学生mn成成绩An Introduction to Database SystemE-R图实例:学生课程班级学生卡学号姓名选课办卡属于课程号课程名学分卡号余额班号辅导员mn11n1成绩二、概念模型转化成逻辑模型将E-R图转换为关系模型实际是将实体集、属性以及联系转换为相应的关系模式。1.实体集的转换规则:概念模型中的一个实体集转换为关系模型中的一个关系,实体的属性就是关系的属性,实体的码就是关系
10、的码,关系的结构是关系模式。2.实体集间联系的转换规则l以下举例基于以下的E-R图学生课程班级学生卡学号姓名选课办卡属于课程号课程名学分卡号余额班号辅导员mn11n1成绩1)1:1联系的转换方法l一个1:1联系可以转换为一个独立的关系,也可以与任意一端实体集所对应的关系合并。l如学生与学生卡关系的处理可以有三种,一种把学生卡的卡号作为学生关系(表)的一个属性(字段);第二种方法是把学生编号作为学生卡关系(表)的一个属性(字段);第三种方法为是单独建立一个关系(表),属性(字段)为学生号和学生卡卡号。An Introduction to Database System2)1:n联系的转换方法l实
11、体间的1:n联系可以有两种转换方法:一种方法是将联系转换成一个独立的关系;另一种方法是在n端实体集中增加新属性,新属性由联系对应的1端实体集的码和联系自身的属性构成,新增属性后原关系的码不变。l如学生与班级为1:n的关系,一种方法是单独建立一个关系(表),属性(字段)为学生号和班级代码;第二种方法为在学生的关系(表)中增加班级编号属性(字段)。An Introduction to Database System3)m:n联系的转换方法l在向关系模型转换时,一个m:n联系转换为一个关系,两个多对多实体的码组成关系的码或码的一部分,多对多关系本身可以包含属性。l如学生与课程的关系为m:n的关系,可
12、以用一个独立的关系(表)表示,其属性(字段)为学生编号,课程编号和成绩,前两者是码且是外码。最后上述概念模型转成的逻辑模型为:学生(*学号,姓名,班号)学生卡(*卡号,余额,学号)班级(*班号,辅导员)课程(*课程号,课程名,学分)学生-课程(*学号,*课程号,成绩)*表示为码,下划线表示为外码三、PowerDesigner设计数据库的过程一)E-R图学生课程班级校园卡学号姓名选课持有属于编号名称学分卡号余额班号班名mn11n1成绩班长11二)概念数据模型CDM使用Powerdesigner描述E-R图(TeachingCDM):三)生成的物理模型根据CDM生成的物理模型PDM图(Teachi
13、ngPDM):生成物理模型的警告 l学生和课程之间的多对多关系生成物理模型时会有一个index inclusion的警告l原因是外码和主码生成pdm时会自动建立index,生成的学生课程关系中,学号和课程同是为主码和外码,所以重复建立了以下索引:学号,课程号,学号课程号。四)生成的DDL语句(部分)lPDM包含了选择的DBMS的DDL语句:create table Students(stdid char(6)not null,classid char(6)not null,name title null,constraint PK_STUDENTS primary key (stdid)alt
14、er table Students add constraint FK_STUDENTS_STDBELONG_CLASSES foreign key(classid)references classes(classid)四、PowerDesigner的概念数据模型(Conceptual Data Model)PD对概念数据模型定义主要的内容:l设计数据库过程通常开始于概念级,在此级不需要考虑实际物理实现的细节。l一个概念数据模型CDM代表了一个数据库的整体逻辑结构,它独立于任何软件或数据存储结构。1、基本概念l目标:使用PowerDesigner建立概念数据模型l新建:选菜单New,然后选Co
15、nceptual Data Model(概念模型),在Browse窗口的根WorkSpace下产生一个概念模型的结点,使用弹出菜单更名为“TeachingCDM”。在该结点下已自动加入一个Diagram。l在概念模型中加入实体等元素:右击概念模型TeachingCDM,选择New/Entity或其他菜单。l设置元素的特性:右击元素,选择菜单Properties将出现特性设置的对话框,不同类型的元素由不同的页框组成。l元素的Name用于图中显示,所以一般取中文,而Code用于生成物理模型的对象名(如表名、列名等),一般取英文字母。A、实体(Entity)实体特性窗口中主要包含下列页框:lGene
16、ral:设置实体(Entity)的编码(Code)、名称(Name)和发生的行数(Number)lAttributes(属性):设置实体的属性lIdentifiers:设置实体的标识(对应物理模型中码和唯一性约束)实体属性(Attributes)和数据项(Data Items)l实体属性:在实体的特性窗口的Attributes页框中设置实体的属性l属性设置内容:包括Code、Name、Comment、Data type、Length、Domain和Standard Checks(Maximum、Minimum和Default)等l数据项Data Item:在Entity中加入的所有属性将被自动
17、加入在Data Items结点下作为数据项进行集中管理。也可以直接在Data Items下增加数据项,实体属性通过使用相同的Code引用该数据项定义。l属性和数据项关系:实体的属性可以看作是Data Items下数据项的组合;Data Items是所有实体属性的集合数据项机制的意义l相同数据项目定义一次,节省了工作量l保证不同实体相同属性的定义一致性l保证相同性质的列名一致性u后两条通常先定义数据项,然后在实体中引用该数据项u前两条通过域也能实现u相同含义不同定义的属性code名不要同名(如进价和售价等)l属性的Code值:u缺省情况下为Data Items的唯一性标识,不同实体相同Code属
18、性被认为对应的是一个数据项定义。u是以后生成建表SQL语句的列名。l属性的M、P和D:uM=Mandatory(强制):选中表示属性非空,P=Primary Identifier:选中为主标识。uD=Displayed:选中在图中显示该属性,否则不显示。Attribute Properties列约束l设置:双击某一属性,进入属性特性设置框,其中standard Checks页框中包含了下列常用设置:最大、最小、缺省值、格式以及所有合法值l生成的物理模型中建表SQL语句示例:age int null default 18constraint CKC_AGE_ENTITY_1 check(age
19、is null or(age between 16 and 20 and age in(17,18,19,20,16),行约束:进货价格必须小于销售价格l在概念模型中新建一个Business Rules,在Expresion/Server中输入“进货价格=销售价格”(Client中只在文档中反应,而不会对物理模型产生影响)l在实体的Properties中的Rules页框点击Add Objects,选择上面建立的rule。l在生成的物理模型的建表的SQL语句中出现:constraint CKT_ENTITY_1 check(agelength)选作实体主码数据项的排它性l若一个数据项作为一个实体
20、的主码,就不能再作为其他实体的属性。基于的理由是Powerdesigner假设与某一实体主码同名的属性必是外码,而外码是在生成物理模型时根据实体间关系自动生成,在概念模型中无需设置。引出的Code的取名(即表列名)问题:l被选作主码属性的code不能被其他实体使用u所有实体主码属性的Code取值必须不同名。如实体一般均有编号,并且通常为主码,为此我们必须在编号前加上前缀,如StdId。u任一实体主码属性的Code值不能再被其他实体的属性使用lCode数据项定义,同时Code列名,所以生成的物理模型中相同的列名必须具有相同的定义。u在商场管理信息系统中,很多单据都有数量属性,若这些数量属性具有相
21、同的长度和精度要求,则Code可相同,反之,则Code不能同名,如必须取名为OrderQty、SaleQty等。突破限制的方法:l如在上述Code不能同名情况下,要求生成的物理模型列名一定要同名,可在生成的物理模型时打开选项:Convert Names into Codes,即把Name作为列名。但一般不建议这样做。l选择菜单Tools/Model Options,对Model设置中的Data Item中关闭Unique Code选项。(注意:进入Model Options对话框内容根据当前Diagram是概念模型还是物理模型而不同)判定实体属性合适的准则:l在概念模型中,不要试图使用属性来反
22、映两个实体的关系,这本身就包含了实现方法,而实现方法应该由物理模型完成。l辅导员不应该作为班级的属性,而应该通过班级和辅导员的关系来反映。l学号不应该作为校园卡的属性,而应该通过学生和校园卡的关系来反映校园卡和学号的对应关系。l课程和学生的关系Association即“选课”中不应该包括教师属性,而应该通过课程、学生和教师三者之间的Association来反映学生所选课和教师关系。实体标识(Identifier)l定义:实体的属性或属性组合,在非空情况下其值唯一地标识一个实体(可以为空)lPrimary Identifier:一个实体可有多个Identifier,但只能指定一个为Primary
23、 Identifier,一定非空。l设置方法:在实体Propertise窗口的Identifier中设置,双击某个Identifier设置其对应属性。l生成物理模型:Primary Identifier对应属性即为主码,其他Identifier对应属性被定义为Unique约束。Primary Identifier设置:l在实体的Properties窗口的Attributes中指定一个实体的某些属性为Primary Identifier后,该实体将自动产生一个Identifier_1,其对应属性即为所有指定为Primary Identifier的属性。l去除属性的Primary Identifi
24、er标志,并不会自动删除Identifier_1,但对应属性被自动删除;反之,删除Identifier_1或去除对应属性或去除Primary Identifier标志,则实体所有属性自动去除Primary Identifier标志。域(Domain)l定义域,即属性的取值类型和范围。l所有实体属性的Domain可取已定义的域,其Data type将被该域取值类型和范围所取代。l例:定义一个名称域title,则学生姓名和课程名称的Domain取title。l域定义保证了具有相同取值类型和范围的属性域的一致性,一旦域需要修改,不必再逐个对实体属性进行修改,而只要对定义的域作一次修改。图(Diagr
25、am)l以图形化的方式显示概念模型,一个概念模型下至少有一个Diagram,自动显示概念模型下的实体等元素。l打开Palette窗口:右击工具栏,在弹出式菜单中打开Palette选项。l在Palette窗口中包含了图形化方式显示的概念模型中的元素,可选中需要的元素加入Diagram中。关系lPowerdesigner提供了两种方法建立实体之间关系。lRelationships:为ER模型表示法lAssociations:为Merise表示法,Merise为信息系统设计和开发方法,类似UML。l在一个概念数据模型中,可以只使用relationship或只使用Association,也可以两者同时
26、使用。关系(Relationship)l建立实体之间的关系,在其Properties的Detail中设置关系的不同类型。l在生成物理模型(Table)时,将根据两个实体的不同的关系,作不同处理:uone-one:双方或单方产生外码。uone-many或many-one:many方产生外码。umany-many:产生新表,属性由两者的主码属性构成。Relationship不能包含属性。Relationship的Details:l主导作用(Dominant role):在One to One情况下可选:uNone:双方产生外码u实体A to 实体B:仅在实体B产生外码l实体A to 实体B:u基数
27、(Cardinality):n,m表示一个实体A可对应n-m个实体B,可选0,1、1,1、0,n和1,nu依赖关系(Dependent):u含义:A的每个实例被B的一个实例所标识u对物理模型影响:B的主码将成为A的主码一部分同时为B的外码l强制关系(Mandatary):u含义:A的每个实例需要一个B的实例 u对物理模型影响:A中的对B的外码非空基数和依赖、强制之间的约束关系:基数(n,m)和依赖、强制关系存在下列约束关系:1)0,1:不强制、不依赖2)0,n:不强制、无依赖3)1,1:强制、依赖可选4)1,n:强制、无依赖强制(Mandatory)关系实例:l1-1例:学生 to 校园卡,假
28、设学生可不办校园卡,则学生和校园卡非强制关系,否则为强制关系。l多-1例:学生 to 兴趣班,假设一个学生最多参加一个兴趣班,则为非强制关系;假设一个学生必须参加一个兴趣班,则为强制关系依赖(Dependent)关系实例:l学生和班级的多-1关系:u如整个学校学生的学号唯一,则学生对班级为非依赖关系。产生物理模型结果是班号作为学生的外码。u如学生的学号仅在班级中唯一,则学生对班级为依赖关系。产生物理模型结果是班号将作为学生主码一部分(和学号一起为主码)同时班号为学生的外码。把关系转换为实体:l11、1多和多多关系均可以转换为实体,特别是对多多关系,转换为实体后可以包含属性。l把Relation
29、ship转换为实体的方法是使用关系的弹出菜单中的Change to Entity。思考和练习:l在TeachingCDM中,students和classes的Relationship加上依赖关系,然后生成物理模型,观察区别。l在实际应用中,学号往往包含了学生的级别、专业、班号等信息,这实际不符合1NF,如何设计更规范?同时又能按需求规则输出包含级别、专业、班号等信息的学号?l提示:参考上述1-多关系中的依赖关系进行设计。思考和练习:l实体学生的班长的关系,由于班长本身是学生,所以是一个实体自己和自己的关系,建立这种关系后将在物理模型中产生什么情况?如此处理是否是唯一方法?是否可以通过学生和班级
30、的关系来反映学生和班长的关系,比较两种方法。Association和Association Linkl作用:Association通过Assocation Link与多个实体连接,并可包括自己的属性。一般用于二个和二个以上实体的联系。l使用方法:可以直接用Association Link连接两个实体,将产生一个Association,两个Assocation和实体的连接Association Link。也可以先建立一个Association,然后用Association Link连接Assocation和某个实体。l生成物理模型:将同Relationship一样根据是1-1、1-多还是多-多关
31、系生成外码或生成一个Table。关系类型的表示:l通过Association连接的两个实体的关系类型,是分别通过两实体和Association的Association Link类型来确定的。l下面是班级和学生的1多关系,其中的1,1和1,n并非表示班级和学生的多1关系(事实是1多关系),而表示的是学生在学生和班级关系中发生11次,而班级在学生和班级的关系中将发生1n次。1多Association及生成的物理模型:Relationship和Association的使用建议:l对11、1多和不包含属性的多多关系,使用Relationship。l实体之间的多多关系且包含属性的使用Associatio
32、n比较简单。l要处理复杂的问题,如建立关系之间的关系或关系与实体之间的关系,必须使用Relationship。思考和练习:l学生和课程的关系即“选课”可使用Association,也可以使用一个实体,该实体具有成绩属性,然后分别和学生和课程建立强制的依赖多-1关系,分别用这两种方法设计CDM,然后生成PDM。比较分析两种方法的优缺点。l上述实体及其关系可以在两个实体建立的Relationship后,右击Relationship使用弹出菜单中的Change to Entity/Standard生成。3.3.1.6继承关系(Inheritance):l继承关系的一端连接具有普遍性的Entity,称
33、为Parent Entity,继承关系的另一端连接具有特殊性的一个或多个Entity称为Child Entity。l例如,“学生”为“本科生”与“研究生”的Parent,后者为前者的Child。l继承关系生成物理模型的控制:u如关系属性中打开Generate Children选项,可选Parent的所有属性或仅主属性复制到Children对应表中。u如关闭Generate Children选项,则仅生成Parent表,该表将包含子实体所有属性并可设置Specifying Attribute。u如生成父子表同时打开,父表主码将作为子表主码和外码。lSpecifying Attribute:设置属
34、性,这些属性将出现在生成的父表中,通常用作区分是哪个Children。互斥性继承(Mutually Exclusive Children):l同一事件(occurrence)不能出現在同一Parent的两个child中,这种继承称为互斥性继承,反之,则称为非互斥性继承。l如父实体一个学生只能是本科生或研究生取其一,则本科生和研究生为学生的互斥性继承,否则,如一个学生可同时为本科生和研究生,则为非互斥性继承。l此设置只影响文档而不影响生成的PDM。继承的实践应用:l对若干实体的公共属性,可把这些公共属性抽取出来形成一个父实体,具有公共属性的实体可从该父实体继承这些公共属性。l如所有单据都有单据号
35、,日期,制单人等,则这些属性可形成一个“单据公共属性”实体,所有单据实体继承该实体属性。l概念模型下,出现在主键(如单据号)中的数据项不能重复使用,若在物理模型下,所有单据号要使用相同的列名,可以使用Inheritance。实用技巧:l实际继承的前提条件是Child具有较多的共同属性。使用继承可避免共同属性重复维护并保持其一致性。l仅生成Child:适用Child之间共同属性相对少而差异大的情况。在Child之间非互斥情况下,会有冗余。l仅生成Parent:适用Child之间差异小的情况,五斥情况下,某个Child的属性对其他Child一定为空。l生成Parent及部分Child:适用Chil
36、d之间共性属性相对多而差异也大情况,此情形Child仅需要继承Parent的主属性。互斥和非互斥情况均适用,互斥情况下Parent与Child为1-1,在非互斥情况下为1对多。例:使用继承完成下列概念模型设计l业务单据:u共同属性:单据号、日期、备注、制单人、审核人等诸多共同属性。u特殊属性:进货单:供应商、结算方式出库单:仓库、出库类型思考和练习:l继承最后生成的物理模型可有下列选择,分析其利弊:u生成Parent,u不生成Parentu仅继承主码属性u继承所有属性3.3.2概念数据模型实例分析例1:商品和单据实体的概念模型错误的设计:单据实体的属性一部分和单据为1-1,另一部分为1-多,所
37、以把它分成两个实体,分别为单据摘要和单据明细。生成的物理数据模型:l必须在生成的物理数据模型中为单据明细设置主码:正确的处理:l单据明细实际上反映的是单据实体和商品实体的多对多关系:生成的物理数据模型:l生成的物理数据模型不必作任何修改例2 同一实体的多个外键引用的处理单据主表中有制单人、申请人和验收人等,这些属性同是“员工表”的外键。产生问题是:在概念模型中,“员工”实体和“单据”实体将有多个1-M relationship,生成物理模型后,“单据”表中将产生多个“员工号”外键,其列名由PowerDesigner根据概念模型对应属性的code自动合成,无法人工控制。错误的处理:概念和物理数据
38、模型l生成物理数据模型中单据的处理人的列名无法控制,只能作修改。实际上单据中处理人的列是重复的,不符合1NF。正确的处理:l增加单据责任实体。生成的物理模型:例3:多供应商问题l问题:一个超市中某种商品的供应商一般一个时期固定为一个,所以供应商和商品的关系为1-多,但可能会有个别商品同时有多个供应商,即对个别商品供应商和商品的关系为多-多。l通常的解决方案:设计成多对多模型,包含3个关系:u商品(*商品编号,名称,单位,)u供应商(*供应商编号,名称,地址,联系电话)u商品和供应商对应表(*商品编号,*供应商编号)l设计缺陷:因为极个别的商品,查询任何和商品及供应商相关的信息,都必须连接三个表
39、。连接的表越多,查询效率自然越差。改进方法:l设计成1-多模型,适用大多数商品:u商品(*商品编号,名称,单位,供应商编号)u供应商(*供应商编号,名称,地址,联系电话)l对个别商品,可能有多个供应商,其供应商编号可取一个特殊的编号表示它有多个供应商,而其对应的供应商使用下列关系来表示:u商品和供应商对应表(*商品编号,*供应商编号)l优点:对大多数商品的商品信息和供应商信息查询,只需要连接两个表。如何设计概念数据模型:l可在商品实体和供应商实体之间建立两个关系,一个为多对一,一个为多对多。l表示对多数商品实体和供应商实体为多对一,对个别商品商品实体和供应商实体为多对多。思考和练习:l对两种设
40、计,分别写出并比较查询供应商供货表的select语句,列包括:供应商编号,供应商名称,商品编号,商品名称,按第一列排序。u仅查单供应商的商品u仅查多(多于一个)供应商的商品u查所有商品l针对二种设计方案,从对商品和供应商的增、删和改三个方面,分别给出处理逻辑,比较其复杂性,并设计一种商品和供应商关系的维护界面。五、PowerDesigner的物理数据模型PDM(Physical Data Model)一)生成物理数据模型l打开生成对话框:使用菜单Tools/Generate Physical Data Model生成物理数据模型。出现对话框PDM Generation Options对生成进行
41、控制。l第一次生成:选中“Generate New Physical Data Model”,并选择DBMS(Microsoft SQL Server 2000),按确认则生成PDM。l重新生成:修改了CDM后,要重新生成PDM,选中“Update Existing Physical Data Model”,并关闭“Preserve Modifications”选项,按确认则重新生成PDM覆盖原PDM。二)修改物理数据模型:l问题:有时需要对生成的PDM进行修改,修改后若重新生成PDM,对PDM的修改将丢失。l解决方法:打开“Update Existing Physical Data Mode
42、l”中Preserve Modifications选项,PD将根据CDM生成PDM,并与原来的(生成后可能修改过的)PDM比较,由用户选择是那些内容要根据新的PDM进行更新、删除或增加。l建议:尽可能建立合理完整的CDM,避免或尽可能少地对生成的PDM作修改。例:由CDM生成PDM后对CDM和PDM做下列修改:1)PDM的学生表中增加“出生日期”2)把CDM学生性别Sex由BooleanChar(1)l选择Update Existing Physical Data Model并打开Preserve Modifications,按确认后出现下列对话框,左边是新生成的PDM,右边是原生成并已增加“
43、出生日期”的PDM,其中所有比较后的不一致项用户可打勾表示用新 PDM更新,更新方式是:不一致项上的“-”表示删除,“+”表示增加,“=”表示更新l本例中,我们希望保留PDM的“出生日期”,而更新Sex的定义,所以仅在右边“性别”前打勾。l点OK,产生新PDM将保留“出生日期”,性别类型改为Char(1)。l更新时原PDM和新PDM比较控制界面:三)生成物理数据模型的其他控制lDetail页框:uCheck Mode:在生成PDM前检查模型是否有错,有错则停止生成。uSave Generation Dependencies:跟踪每一个生成对象的标识。在以更新方式生成PDM时,即使同时修改了对象
44、Name和Code,在新老PDM的比较时,PD仍能识别是同一对象。uConvert Names to Codes:在生成时把对象Name作为Code,即以 Name作为PDM的对象名(如表名和列名)lSeletion页框:列出所有实体,选择是否生成。六、数据库的建立方法一:逐个手工创建数据表l在PDM各table属性(properties)中的Preview页中包含了系统生成的创建该表的DDL语句,在SQL Server的查询分析器中可选择性的执行这些DDL语句。l在生成的SQL语句中,包含了对需要创建的对象是否已经存在的判断以及存在情况下进行删除的操作,使创建工作可重复进行。生成的SQL片段
45、:if exists(select 1 from sysobjects where id=object_id(Students)and type=U)drop table Studentsgocreate table Students(sno char(6)not null,classid char(6)not null,sname title null,sex bit null,areano char(3)null,Telephoneno char(8)null,constraint PK_STUDENTS primary key (sno),constraint AK_IDENTIFIER
46、_2_STUDENTS unique(areano,Telephoneno)go方法二:自动创建所有数据表准备工作:l建立ODBC数据源:PD通过ODBC执行SQL命令,所以先要建立ODBC数据源(代表SQL Server中某个数据库),可以使用控制面板/管理工具/数据源(ODBC)建立,也可在Generate Database过程中建立。l建立数据库:PDM生成的SQL语句并不包含建立数据库的语句,所以先要使用企业管理器或查询分析器建立数据库,也可以在PD中用菜单Database/Execute SQL执行建立数据库的命令。自动创建所有数据表l选择菜单Database/Change Curr
47、ent DBMS,选择Microsoft SQL Server 2000l选择菜单Database/Generate Database,在弹出的对话框中选择目录和文件名,所有建表的SQL语句将放入该文件中,并选中ODBC Generation以建立数据表l确认后将弹出Connect to an ODBC Data Source对话框,选择数据源。确认后将生成要执行的SQL语句,按Execute执行SQL语句爱是什么?一个精灵坐在碧绿的枝叶间沉思。风儿若有若无。一只鸟儿飞过来,停在枝上,望着远处将要成熟的稻田。精灵取出一束黄澄澄的稻谷问道:“你爱这稻谷吗?”“爱。”“为什么?”“它驱赶我的饥饿。
48、”鸟儿啄完稻谷,轻轻梳理着光润的羽毛。“现在你爱这稻谷吗?”精灵又取出一束黄澄澄的稻谷。鸟儿抬头望着远处的一湾泉水回答:“现在我爱那一湾泉水,我有点渴了。”精灵摘下一片树叶,里面盛了一汪泉水。鸟儿喝完泉水,准备振翅飞去。“请再回答我一个问题,”精灵伸出指尖,鸟儿停在上面。“你要去做什么更重要的事吗?我这里又稻谷也有泉水。”“我要去那片开着风信子的山谷,去看那朵风信子。”“为什么?它能驱赶你的饥饿?”“不能。”“它能滋润你的干渴?”“不能。”爱是什么?一个精灵坐在碧绿的枝叶间沉思。风儿若有若无。一只鸟儿飞过来,停在枝上,望着远处将要成熟的稻田。精灵取出一束黄澄澄的稻谷问道:“你爱这稻谷吗?”“爱
49、。”“为什么?”“它驱赶我的饥饿。”鸟儿啄完稻谷,轻轻梳理着光润的羽毛。“现在你爱这稻谷吗?”精灵又取出一束黄澄澄的稻谷。鸟儿抬头望着远处的一湾泉水回答:“现在我爱那一湾泉水,我有点渴了。”精灵摘下一片树叶,里面盛了一汪泉水。鸟儿喝完泉水,准备振翅飞去。“请再回答我一个问题,”精灵伸出指尖,鸟儿停在上面。“你要去做什么更重要的事吗?我这里又稻谷也有泉水。”“我要去那片开着风信子的山谷,去看那朵风信子。”“为什么?它能驱赶你的饥饿?”“不能。”“它能滋润你的干渴?”“不能。”爱是什么?一个精灵坐在碧绿的枝叶间沉思。风儿若有若无。一只鸟儿飞过来,停在枝上,望着远处将要成熟的稻田。精灵取出一束黄澄澄
50、的稻谷问道:“你爱这稻谷吗?”“爱。”“为什么?”“它驱赶我的饥饿。”鸟儿啄完稻谷,轻轻梳理着光润的羽毛。“现在你爱这稻谷吗?”精灵又取出一束黄澄澄的稻谷。鸟儿抬头望着远处的一湾泉水回答:“现在我爱那一湾泉水,我有点渴了。”精灵摘下一片树叶,里面盛了一汪泉水。鸟儿喝完泉水,准备振翅飞去。“请再回答我一个问题,”精灵伸出指尖,鸟儿停在上面。“你要去做什么更重要的事吗?我这里又稻谷也有泉水。”“我要去那片开着风信子的山谷,去看那朵风信子。”“为什么?它能驱赶你的饥饿?”“不能。”“它能滋润你的干渴?”“不能。”爱是什么?一个精灵坐在碧绿的枝叶间沉思。风儿若有若无。一只鸟儿飞过来,停在枝上,望着远处