资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第三章 数据库静态结构设计,3.1,概念模型一般概念,3.2PowerDesigner,概述,3.3,实体 域、数据项和属性,3.4,实体之间的关系,3.5,继承(,Inheritance,),3.6,概念数据模型实例分析,3.7,物理数据模型,PDM,3.8,数据库的建立,任务和方法,任务:实现数据库设计,新奥尔良方法中,概念结构设计和逻辑结构设计,方法:,使用,PowerDesigner(,简写,PD),进行概念数据模型,CDM,设计,,由,CDM,生成物理数据模型,PDM,(逻辑结构),用与,PDM,同时生成的针对具体,DBMS,的,DDL,语句构建数据库。,3.1 概念模型一般概念,把用户需求抽象为概念模型即为概念结构设计。,概念模型除了要求能反映客观世界并且易于理解外,还要求其易于向数据模型(如关系模型)转化。,概念模型独立于具体的数据库系统,是整个数据库设计的基础。,3.1.1,概念模型的两个要素,实体和关系是构成概念模型的两个要素,3.1.1.1,实体(,Entity,),实体(,Entity,)、实体型(,Entity Type,)和实体集(,Entity Set,),属性(,Attribute,),域(,Domain,),码(,Key,),实体(,Entity,)、实体型(,Entity Type,)和实体集(,Entity Set,),实体(,Entity):,客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念。如,XXX,学生。,实体型(,Entity Type):,同类实体称为实体型,用实体名及其属性名集合来抽象和刻画,如学生。,实体集(,Entity Set):,同型实体的集合称为实体集。如,xx,班的学生。,属性(,Attribute):,实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。 如学生的姓名、性别。,域(,Domain):,属性的取值范围称为该属性的域。如年龄的域为:1到150的整数,码(,Key):,唯一标识实体的属性集称为码。 如学号,3.1.1.2,关系(,Relationship,),1,:,1关系:如果一个实体集,A,中的实体,在另一个实体集,B,中至多有一个实体与之对应,反之,实体集,B,中的实体,在实体集,A,中也至多有一个实体与之对应,则称,A,和,B,具有,1,:,1,的关系。,1:n关系:如果一个实体集A中至少有一个实体,在另一个实体集B中有多于一个实体与之对应,反之,实体集B中实体在实体集A中至多有一个实体与之对应,则称A和B具有1:n的关系。,m,:,n,关系:如果一个实体集,A,中至少有一个实体,在另一个实体集,B,中有多于一个实体与之对应,同时,实体集,B,中也至少有一个实体在,A,中也有多于一个实体与之对应,则称,A,和,B,具有,m,:,n,的关系。,三类实体间关系的关系,我们给出的三种实体间关系的定义,互不包含和交叉,两个实体之间的关系属于也只能属于其中的一种类型,在对三类关系的计算机处理中,1:1关系可以看成是1:n关系得特例(n=1),1:n又可以看成是m:n关系的特例(m=1),3.1.2,实体关系图(,E-R,图),概念模型的核心概念的图形表示即,E-R,图,实体型、属性和关系是构成概念模型的核心概念。,实体型:用矩形表示,矩形框内写明实体名。,属性:用椭圆形表示,并用无向边将其与相应的实体连接起来,关系:用菱形表示,菱形框内写明关系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上关系的类型(1:1、1:,n,或,m:n)。,关系本身也是一种实体型,也可以有属性。如果一个关系具有属性,则这些属性也要用无向边与该关系连接起来,3.1.3,概念模型向关系模型转换的方法和规则,1,:,1,关系的转换:在任意一方实体对应的关系(表)中,加入另一方实体对应的关系(表)的码作为其属性(即外码)。,1,:,n,关系的转换:在一对多的两个实体中的“多”的一方实体对应的关系(表)中,加入另一方实体对应的关系(表)的码作为其属性(即外码),m,:,n,关系的转换:多对多的两个实体的关系,转换成关系模型后将通过一个独立的关系(表)予以反映,该关系的属性由这两个实体的码组成,并把两个实体的码合并作为该关系(表)的码,m,:,n,关系的转换方法也适用前两者关系的转换,3.1.4,确定实体属性的重要规则,在概念模型中,不要试图使用属性来反映两个实体的关系,这本身就包含了实现方法,而实现方法应该由物理模型完成。,辅导员不应该作为班级的属性,而应该通过班级和辅导员的关系来反映。,学号不应该作为校园卡的属性,而应该通过学生和校园卡的关系来反映校园卡和学号的对应关系。,课程和学生的关系,Association,即“选课”中不应该包括教师属性,而应该通过课程、学生和教师三者之间的,Association,来反映学生所选课和教师关系。,3.2PowerDesigner,概述,3.2.1,概念数据模型,CDM,概述,使用PowerDesigner根据需求建立概念数据模型,由概念数据模型生成关系数据模型,同时依据用户选择的具体数据库管理系统,产生数据定义语句(DDL)。,为关系型数据库建模的主要和关键的工作是建立正确有效的概念数据模型,设计数据库过程通常开始于概念级,在此级不需要考虑实际物理实现的细节。,一个概念数据模型CDM代表了一个数据库的整体逻辑结构,它独立于任何软件或数据存储结构。,3.2.2CDM分析设计的一般流程,一),E-R,图,学生,课程,班级,校园卡,学号,姓名,选课,持有,属于,编号,名称,学分,卡号,余额,班号,班名,m,n,1,1,n,1,成绩,班长,1,1,二)概念数据模型,CDM,使用,Powerdesigner,描述,E-R,图(,TeachingCDM):,三)生成的物理模型,根据,CDM,生成的物理模型,PDM,图(,TeachingPDM):,四)生成的,DDL,语句(部分),PDM,包含了选择的,DBMS,的,DDL,语句:,create table Students (,stdid char(6) not null,classid char(6) not null,name title null,constraint PK_STUDENTS primary key (stdid),),alter table Students,add constraint FK_STUDENTS_STDBELONG_CLASSES foreign key (classid) references classes (classid),3.2.3,建立,CDM,的一般操作,目标:使用,PowerDesigner,建立概念数据模型,新建:选菜单,New,,然后选,Conceptual Data Model(,概念模型),在,Browse,窗口的根,WorkSpace,下产生一个概念模型的结点,使用弹出菜单更名为“,TeachingCDM”。,图(,Diagram,):在该结点下已自动加入一个“图”,,以图形化的方式显示概念模型,一个概念模型下至少有一个“图”,,,自动显示概念模型下的实体等元素。右击工具栏,在弹出式菜单中打开,Palette,选项,在,Palette,窗口中包含了图形化方式显示的概念模型中的元素,可选中需要的元素加入“图”中。,也可右击概念模型,TeachingCDM,,选择,New/Entity,或其他菜单在概念数据模型中加入元素。,设置元素的特性:右击元素,选择菜单,Properties,将出现特性设置的对话框,不同类型的元素由不同的页框组成。,元素的,Name,用于图中显示,所以一般取中文,而,Code,用于生成物理模型的对象名(如表名、列名等),一般取英文字母。,概念数据模型对应文件的缺省名为该概念数据模型名,删除概念数据模型中对象的方法是选择要删除的对象,然后按,Del,键,在获得概念数据模型中的所有实体的属性信息后,必须分析整理出具有相同特性或必须保持一致特性的属性,把它们定义为“域(,Domain,)”或“数据项(,Data Item,)”,3.3实体 域、数据项和属性,3.3.1,域,域(,Domain,)由域名、数据类型、长度、缺省值、最大值和最小值等特性组成,所有实体属性的,Domain,可取已定义的域,其,Data type,将被该域取值类型和范围所取代,具有同一个“域(,Domain,)”的属性就具有和该域一样的数据类型和数据约束,域定义保证了具有相同取值类型和范围的属性域的一致性,一旦域需要修改,不必再逐个对实体属性进行修改,而只要对定义的域作一次修改,3.3.2,数据项(,Data Item,),数据项Data Item:在Entity中加入的所有属性将被自动加入在Data Items结点下作为数据项进行集中管理。也可以直接在Data Items下增加数据项,实体属性通过使用相同的Code引用该数据项定义。,属性和数据项关系:实体的属性可以看作是Data Items下数据项的组合;Data Items是所有实体属性的集合,引入数据项机制的意义:,相同的数据项只需要定义一次,节省了设置的工作量,最大限度保证了不同实体中相同性质的属性定义的一致性,保证了相同性质的列名的一致性,其中,第,1,,,2,条和“域(,Domain,)”的作用相似,,2,,,3,条在团队开发情况下非常有用,第,3,条是和“域(,Domain,)”作用的不同之处,选作实体主码的数据项的排它性:,若一个数据项作为一个实体的主码,就不能再作为其他实体的属性。基于的理由是Powerdesigner假设与某一实体主码同名的属性必是外码,而外码是在生成物理模型时根据实体间关系自动生成,在概念模型中无需设置 。,引出的,Code,的取名(即表列名)问题:,被选作主码属性的,code,不能被其他实体使用,所有实体主码属性的,Code,取值必须不同名。如实体一般均有编号,并且通常为主码,为此我们必须在编号前加上前缀,如,StdId。,任一实体主码属性的,Code,值不能再被其他实体的属性使用,Code,数据项定义,同时,Code,列名,所以生成的物理模型中相同的列名必须具有相同的定义。,在商场管理信息系统中,很多单据都有数量属性,若这些数量属性具有相同的长度和精度要求,则,Code,可相同,反之,则,Code,不能同名,如必须取名为,OrderQty、SaleQty,等。,突破限制的方法:,如在上述,Code,不能同名情况下,要求生成的物理模型列名一定要同名,可在生成的物理模型时打开选项:,Convert Names into Codes,,即把,Name,作为列名。但一般不建议这样做。,选择菜单,Tools/Model Options,,对,Model,设置中的,Data Item,中关闭,Unique Code,选项。(注意:进入,Model Options,对话框内容根据当前,Diagram,是概念模型还是物理模型而不同),3.3.3,实体(,Entity,),实体特性窗口中主要包含下列页框:,General:,设置实体(,Entity),的编码(,Code)、,名称(,Name),和发生的行数(,Number),Attributes(,属性):设置实体的属性,Identifiers:,设置实体的标识(对应物理模型中码和唯一性约束),Rules,(规则): 设置约束条件,3.3.3.1,实体属性,实体属性:在实体的特性窗口的,Attributes,页框中设置实体的属性,属性设置内容:包括,Code、Name、Comment、Data type、Length、Domain,和,Standard Checks(Maximum、Minimum,和,Default),等,属性的,Code,值:,缺省情况下为,Data Items,的唯一性标识,不同实体相同,Code,属性被认为对应的是一个数据项定义。,是以后生成建表,SQL,语句的列名。,属性的,M、P,和,D:,M=Mandatory(,强制):选中表示属性非空,当该属性为外码时表示强制的引用关系。,P=Primary Identifier:,选中为主标识。,D=Displayed:,选中在图中显示该属性,否则不显示。,Attribute Properties,列约束,设置:双击某一属性,进入属性特性设置框,其中,standard Checks,页框中包含了下列常用设置:最大、最小、缺省值、格式以及所有合法值,生成的物理模型中建表,SQL,语句示例:,age int null default 18,constraint CKC_AGE_ENTITY_1 check (age is null or (age between 16 and 20 and age in (17,18,19,20,16) ),3.3.3.2,规则(,Rule,),通过规则设置行约束:进货价格必须小于销售价格,在概念模型中新建一个,Business Rules,,在,Expresion/Server,中输入“进货价格=销售价格”(,Client,中只在文档中反应,而不会对物理模型产生影响),在实体的,Properties,中的,Rules,页框点击,Add Objects,,选择上面建立的,rule。,在生成的物理模型的建表的,SQL,语句中出现:,constraint CKT_ENTITY_1 check (agelength),3.3.3.3,实体标识(,Identifier),定义:实体的属性或属性组合,在非空情况下其值唯一地标识一个实体(可以为空),Primary Identifier:,一个实体可有多个,Identifier,,但只能指定一个为,Primary Identifier,,一定非空。,设置方法:在实体,Propertise,窗口的,Identifier,中设置,双击某个,Identifier,设置其对应属性。,生成物理模型:,Primary Identifier,对应属性即为主码,其他,Identifier,对应属性被定义为,Unique,约束。,Primary Identifier,设置 :,在实体的,Properties,窗口的,Attributes,中指定一个实体的某些属性为,Primary Identifier,后,该实体将自动产生一个,Identifier_1,,其对应属性即为所有指定为,Primary Identifier,的属性。,去除属性的,Primary Identifier,标志,并不会自动删除,Identifier_1,,但对应属性被自动删除;反之,删除,Identifier_1,或去除对应属性或去除,Primary Identifier,标志,则实体所有属性自动去除,Primary Identifier,标志。,3.,4,实体之间的关系,Powerdesigner,提供了两种方法建立实体之间关系。,Relationships:,为,ER,模型表示法,Associations:,为,Merise,表示法,,Merise,为信息系统设计和开发方法,类似,UML,。,在一个概念数据模型中,可以只使用,relationship,或只使用,Association,,也可以两者同时使用。,3.4.1关系(Relationship),建立实体之间的关系,在其,Properties,的,Detail,中设置关系的不同类型,内容包括(实体,A to,实体,B,):,基数(,Cardinality):n,m,表示一个实体,A,可对应,n-m,个实体,B,,可选0,1、1,1、0,n,和1,n,依赖关系(,Dependent):,含义:,A,的每个实例被,B,的一个实例所标识,对物理模型影响:,B,的主码将成为,A,的主码一部分同时为,B,的外码,强制关系,( Mandatary,):,含义:,A,的每个实例需要一个,B,的实例,对物理模型影响:,A,中的对,B,的外码非空,在生成物理模型(,Table),时,将根据两个实体的不同的关系,作不同处理,3.4.1.11-1,关系中的主导作用(,Mandatary,),主导作用(,Dominant role):,在,One to One,情况下可选:,None:,双方产生外码,实体,A to,实体,B:,仅在实体,B,产生外码,两个,1,:,1,关系的实体可合并成一个实体,但如果这两个实体分别处在两个相对独立的子系统中 ,采用,1,1,关系。,“学生”和“校园卡”之间的,1,:,1,关系中,“学生”为起主导作用的实体,总是先有学生,然后才会有对应的校园卡 。,3.4.1.2,依赖关系(,Dependent,),“,A to B”,的“依赖(,Dependent,)”关系表示要确定实体,A,的一个实例,必须首先确定实体,B,的一个实例,或者说,B,的标识是构成,A,的标识的一个部分。,“,A to B”,的依赖关系对生成的物理模型的作用是:实体,B,的主码属性被加入实体,A,对应的,A,表中,并和实体,A,的主码属性合起来作为,A,表的主码,同时实体,B,的主码属性作为,A,表的外码。,依赖关系实例:,学生和班级的多-1关系:,如整个学校学生的学号唯一,则学生对班级为非依赖关系。产生物理模型结果是班号作为学生的外码。,如学生的学号仅在班级中唯一,则学生对班级为依赖关系。产生物理模型结果是班号将作为学生主码一部分(和学号一起为主码)同时班号为学生的外码。,以上的概念数据模型中学生对班级的依赖关系,是以标识学生的学号仅仅为班级中的序号即学号本身不包含班级信息为前提的,如果学号本身包含了班号,则这种依赖关系就不再成立。(生成的物理数据模型将违背主码最小性原则),学号中包含班级信息在节中已说明这种设计不属于,1NF,,这是造成以上概念数据模型中概念混乱的根本原因,这从一个侧面再次证明了节中对,1NF,论述的有效性,如果一个实体存在与另一个实体的依赖关系,则该实体的主码属性只需要在其依赖的实体范围内唯一。,3.4.1.3,强制关系(,Mandatary,),A to B”,的强制(,Mandatary,)关系的含义是,A,的每个实例需要一个,B,的实例与之对应,在生成的物理模型中,,A,实体对应表中对,B,实体对应表的外码属性被定义为非空。,1-1例:学生,to,校园卡,假设学生可不办校园卡,则学生和校园卡非强制关系,否则为强制关系。,多-1例:学生,to,兴趣班,假设一个学生最多参加一个兴趣班,则为非强制关系;假设一个学生必须参加一个兴趣班,则为强制关系,3.4.1.4,基数(,Cardinality,)以及和其他特性的关系,“,A to B”,的基数(,Cardinality,)可选 “,0,,,1”,、“,1,,,1”,、“,0,,,n”,和“,1,,,n”,,其中“,m,,,n”,表示一个实体,A,可对应,m-n,个实体,B,。,基数(,Cardinality,)是对“,1-1,(,One-One,)”、“,1-,多(,One-Many,)”和“多,-,多(,Many-Many,)”关系类型的更细的划分,基数(,n,m),和依赖、强制关系存在下列约束关系:,1)0,1:,不强制、不依赖,2)0,n:,不强制、无依赖,3)1,1:,强制、依赖可选,4)1,n:,强制、无依赖,3.4.1.5,多对多关系,实体之间的“Many-Many”关系在生成物理模型时将生成一个独立的表,该表包含了两个实体的主码属性,并以此为生成表的主码和外码。,若关系本身包含了属性,可以把关系转换成实体,右击在概念数据模型的表示“多对多”关系的线段,执行“转换成实体/标准(Change to Entity/Stardard)”,3.4.2关联(Association)和关联连接(Association Link),作用:,Association,通过,Assocation Link,与多个实体连接,并可包括自己的属性。一般用于二个和二个以上实体的联系。,使用方法:可以直接用,Association Link,连接两个实体,将产生一个,Association,,两个,Assocation,和实体的连接,Association Link。,也可以先建立一个,Association,,然后用,Association Link,连接,Assocation,和某个实体。,生成物理模型:将同,Relationship,一样根据是1-1、1-多还是多-多关系生成外码或生成一个,Table,。,关系类型的表示:,“关联连接(,Associaton Link,)”特性主要内容为“基数(,Cardinality,)”和“标识(,Identifier,)”,选中了“标识(,Identifier,)”选项,其作用等同于在“关系(,Relationship,)”中设置了多对一关系为依赖关系,“1,1”和“1,,n”,表示实体在“关系”中出现的次数,下面是班级和学生的1多关系,其中的并非表示班级和学生的多1关系(事实是1多关系),而表示的是学生在学生和班级关系中发生11次,而班级在学生和班级的关系中将发生1,n,次,1多,Association,及生成的物理模型:,Relationship,和,Association,的使用建议:,对11、1多和不包含属性的多多关系,使用Relationship。,实体之间的多多关系且包含属性的使用Association比较简单。,要处理复杂的问题,如建立关系之间的关系或关系与实体之间的关系,必须使用Relationship。,3.,5,继承关系(,Inheritance):,继承关系的一端连接具有普遍性的,Entity,,称为,Parent Entity,,继承关系的另一端连接具有特殊性的一个或多个,Entity,称为,Child Entity。,例如,“学生”为“本科生”与“研究生”的,Parent,,后者为前者的,Child。,继承关系生成物理模型的控制,:,如关系属性中打开,Generate Children,选项,可选,Parent,的所有属性或仅主属性复制到,Children,对应表中。,如关闭,Generate Children,选项,则仅生成,Parent,表,该表将包含子实体所有属性并可设置,Specifying Attribute。,如生成父子表同时打开,父表主码将作为子表主码和外码。,Specifying Attribute:,设置属性,这些属性将出现在生成的父表中,通常用作区分是哪个,Children,。,互斥性继承(,Mutually Exclusive Children),:,同一事件(,occurrence),不能出現在同一,Parent,的两个,child,中,这种继承称为互斥性继承,,,反之,则称为非互斥性继承。,如父实体一个学生只能是本科生或研究生取其一,则本科生和研究生为学生的互斥性继承,否则,如一个学生可同时为本科生和研究生,则为非互斥性继承。,此设置只影响文档而不影响生成的,PDM。,继承的实践应用:,对若干实体的公共属性,可把这些公共属性抽取出来形成一个父实体,具有公共属性的实体可从该父实体继承这些公共属性。,如所有单据都有单据号,日期,制单人等,则这些属性可形成一个“单据公共属性”实体,所有单据实体继承该实体属性。,概念模型下,出现在主键(如单据号,),中的数据项不能重复使用,若在物理模型下,所有单据号要使用相同的列名,可以使用,Inheritance。,实用技巧:,实际继承的前提条件是,Child,具有较多的共同属性。使用继承可避免共同属性重复维护并保持其一致性。,仅生成,Child:,适用,Child,之间共同属性相对少而差异大的情况。在,Child,之间非互斥情况下,会有冗余。,仅生成,Parent:,适用,Child,之间差异小的情况,五斥情况下,某个,Child,的属性对其他,Child,一定为空。,生成,Parent,及部分,Child:,适用,Child,之间共性属性相对多而差异也大情况,此情形,Child,仅需要继承,Parent,的主属性。互斥和非互斥情况均适用,互斥情况下,Parent,与,Child,为1-1,在非互斥情况下为1对多。,3.,6,概念数据模型实例分析,例1:商品和单据实体的概念模型,错误的设计:单据实体的属性一部分和单据为1-1,另一部分为1-多,所以把它分成两个实体,分别为单据摘要和单据明细。,生成的物理数据模型:,必须在生成的物理数据模型中为单据明细设置主码:,正确的处理:,单据明细实际上反映的是单据实体和商品实体的多对多关系:,生成的物理数据模型:,生成的物理数据模型不必作任何修改,例2同一实体的多个外键引用的处理,单据主表中有制单人、申请人和验收人等,这些属性同是“员工表”的外键。产生问题是:在概念模型中, “员工” 实体和“单据”实体将有多个1-,M relationship,,生成物理模型后,“单据”表中将产生多个“员工号”外键,其列名由,PowerDesigner,根据概念模型对应属性的,code,自动合成,无法人工控制。,错误的处理:概念和物理数据模型,生成物理数据模型中单据的处理人的列名无法控制,只能作修改。实际上单据中处理人的列是重复的,不符合1,NF。,正确的处理:,增加单据责任实体。,生成的物理模型:,例3:,多供应商问题,问题:一个超市中某种商品的供应商一般一个时期固定为一个,所以供应商和商品的关系为1-多,但可能会有个别商品同时有多个供应商,即对个别商品供应商和商品的关系为多-多。,通常的解决方案:设计成多对多模型,包含3个关系:,商品(*商品编号,名称,单位,),供应商(*供应商编号,名称,地址,联系电话),商品和供应商对应表(*商品编号,*供应商编号),设计缺陷:因为极个别的商品,查询任何和商品及供应商相关的信息,都必须连接三个表。连接的表越多,查询效率自然越差。,改进方法:,设计成1-多模型,适用大多数商品:,商品(*商品编号,名称,单位,供应商编号),供应商(*供应商编号,名称,地址,联系电话),对个别商品,可能有多个供应商,其供应商编号可取一个特殊的编号表示它有多个供应商,而其对应的供应商使用下列关系来表示:,商品和供应商对应表(*商品编号,*供应商编号),优点:对大多数商品的商品信息和供应商信息查询,只需要连接两个表。,如何设计概念数据模型:,可在商品实体和供应商实体之间建立两个关系,一个为多对一,一个为多对多。,表示对多数商品实体和供应商实体为多对一,对个别商品商品实体和供应商实体为多对多。,3.,7 PowerDesigner,的物理数据模型,PDM(Physical Data Model),一)生成物理数据模型,打开生成对话框:使用菜单,Tools/Generate Physical Data Model,生成物理数据模型。出现对话框,PDM Generation Options,对生成进行控制。,第一次生成:选中“,Generate New Physical Data Model”,,并选择,DBMS(Microsoft SQL Server 2000),,按确认则生成,PDM。,重新生成:修改了,CDM,后,要重新生成,PDM,,选中“,Update Existing Physical Data Model”,,并关闭“,Preserve Modifications”,选项,按确认则重新生成,PDM,覆盖原,PDM。,二)修改物理数据模型:,问题:有时需要对生成的,PDM,进行修改,修改后若重新生成,PDM,,对,PDM,的修改将丢失。,解决方法:打开“,Update Existing Physical Data Model”,中,Preserve Modifications,选项,,PD,将根据,CDM,生成,PDM,,并与原来的(生成后可能修改过的),PDM,比较,由用户选择是那些内容要根据新的,PDM,进行更新、删除或增加。,建议:尽可能建立合理完整的,CDM,,避免或尽可能少地对生成的,PDM,作修改。,例:,由,CDM,生成,PDM,后对,CDM,和,PDM,做下列修改:1),PDM,的学生表中增加“出生日期”2)把,CDM,学生性别,Sex,由,BooleanChar(1),选择,Update Existing Physical Data Model,并打开,Preserve Modifications,,按确认后出现下列对话框,左边是新生成的,PDM,,右边是原生成并已增加“出生日期”的,PDM,,其中所有比较后的不一致项用户可打勾表示用新,PDM,更新,更新方式是:不一致项上的“-”表示删除,“+”表示增加,“=”表示更新,本例中,我们希望保留,PDM,的“出生日期”,而更新,Sex,的定义,所以仅在右边“性别”前打勾。,点,OK,,产生新,PDM,将保留“出生日期”,性别类型改为,Char(1)。,更新时原PDM和新PDM比较控制界面:,三)生成物理数据模型的其他控制,Detail,页框:,Check Mode:,在生成,PDM,前检查模型是否有错,有错则停止生成。,Save Generation Dependencies:,跟踪每一个生成对象的标识。在以更新方式生成,PDM,时,即使同时修改了对象,Name,和,Code,,在新老,PDM,的比较时,,PD,仍能识别是同一对象。,Convert Names to Codes:,在生成时把对象,Name,作为,Code,,即以,Name,作为,PDM,的对象名(如表名和列名),Seletion,页框:列出所有实体,选择是否生成。,3.,8,数据库的建立,方法一:逐个手工创建数据表,在,PDM,各,table,属性(,properties),中的,Preview,页中包含了系统生成的创建该表的,DDL,语句,在,SQL Server,的查询分析器中可选择性的执行这些,DDL,语句。,在生成的,SQL,语句中,包含了对需要创建的对象是否已经存在的判断以及存在情况下进行删除的操作,使创建工作可重复进行。,生成的,SQL,片段:,if exists (select 1 from sysobjects where id = object_id(Students),and type = U),drop table Students,go,create 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_2_STUDENTS unique (areano, Telephoneno),),go,方法二:,自动创建所有数据表,准备工作:,建立,ODBC,数据源:,PD,通过,ODBC,执行,SQL,命令,所以先要建立,ODBC,数据源(代表,SQL Server,中某个数据库),可以使用控制面板/管理工具/数据源(,ODBC),建立,也可在,Generate Database,过程中建立。,建立数据库:,PDM,生成的,SQL,语句并不包含建立数据库的语句,所以先要使用企业管理器或查询分析器建立数据库,也可以在,PD,中用菜单,Database/Execute SQL,执行建立数据库的命令。,自动创建所有数据表,选择菜单,Database/Change Current DBMS,,选择,Microsoft SQL Server 2000,选择菜单,Database/Generate Database,,在弹出的对话框中选择目录和文件名,所有建表的,SQL,语句将放入该文件中,并选中,ODBC Generation,以建立数据表,确认后将弹出,Connect to an ODBC Data Source,对话框,选择数据源。确认后将生成要执行的,SQL,语句,按,Execute,执行,SQL,语句,
展开阅读全文