当前位置:文档之家› powerdesigner中生成外键fk技巧

powerdesigner中生成外键fk技巧

powerdesigner中生成外键fk技巧

基于Powerdesigner 的数据库设计流程

软件环境:

Powerdesigner Version 15.1.0.2850,sqlserver 2005

研究意义:

在软件设计过程中需要对数据库建模,需要用概念模型与用户交流探讨数据库的字段;数据库的建设还要尽量避免重复的劳动,这就要用到建模工具。问题出现了,powerdesigner 中的CDM生成PDM会有很多bug。

例如:关系的外键设置有bug。

生成外键时名称只取前三个字母。

powerdesigner中建立视图的时候必须手动写sql,远没有在sqlserver 2005中点选复选框来的方便。

powerdesigner中LDM(逻辑模型)的转换经常出问题。

表少的时候感觉没什么,但如果表很多,修改转换时修改出现的bug将是一个庞大的工作量,并且在某些项目中数据库字段还要修改,这更是给开发人员带来了极大的不便。

设计流程:

1、在powerdesigner中建立CDM,只建立不含外键的实体,不建立外键和关系。

2、在powerdesigner中建立PDM,导入建立的CDM,并建立外键。详见《 PowerDesigner 中生成外键FK技巧》

3、生成数据库,在数据库中建立视图,存储过程等。(便于测试)

注意:

1、外键的长度不能太长,powerdesigner中外键的最大长度要大于sqlserver2005中的外键最大长度,很容易产生外键同名的现象,建议手动修改外键名称。步骤:双击reference线——Integrity选项卡——修改constraint name。

2、建表时不建立外键,建立好关系(reference)后再建立外键,因为关系建立时外键可能会自动生成。

第 1 页共1 页

powerdesigner使用心得

PowerDesigner使用心得 PowerDesigner想必没人不知道吧?著名的CASE工具,目前最新版本为15.2,用于软件建模,可以从需求直到物理模型,支持UML2.0语法,可用于UML图绘制。最大特色是能够使设计到实现无缝衔接,如:概念模型->逻辑模型->物理模型,概念模型->OOM,而且能够生成多种DBMS的脚本或代码脚本。 1 name/code默认总是一起修改,很烦躁,在tool ->general options,取消即可。 2 概念模型->物理模型转换,会为“1对1”关系自动生成两条引用,每次都要手工删除,很麻烦。在概念模型中为关系指定dominant role即可。

3 设定计算列,在物理模型中选择某个列,勾选computed,然后在detail中设置计算表达式即可 修改表达式,可引用表中的其他列。

4 设定列中数据为自增量类型,勾选列属性中的identity。 5 修改某个列的数据类型后,使用它做外键的表中相应数据类型并不会变化,如果被引用的地方多,那修改起来可是一个大工程,而且容易出错,此时可在check model设置为自动修正。

6 PD无法直接生成GUID类型的测试数据,GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。例如: 6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。默认DBMS配置文件有问题,需要修改数据类型为VA36(= varchar(36) )、长度为36位( 32位16进制数字 + 4个“-”)。Database->edit current DBMS,修改PhysDataType中uniqueidentifier的内容为VA36.也可下载补丁: https://www.doczj.com/doc/6210993390.html,/source/2284780

数据库主键和外键的作用

数据库主键和外键的作用 首先介绍一下什么是主键、什么是外键。 1 什么是主键外键 学生表(学号,姓名,性别,班级) ? 学号是一个主键 课程表(课程号,课程名,学分) 课程号是一个主键 成绩表(学号,课程号,成绩) 学号和课程号的属性组构成一个主键 成绩表中的学号不是成绩表的主键,不过是学生表的主键,成绩表的外键,同理课程号也是成绩表的外键 定义:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键 以一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表 2 外键的作用 外键用于保持数据一致性,完整性 主要目的是控制存储在外键表中的数据 3 主键的设计原则 1)主键应当是对用户没有意义的 2)主键应该是单列的,以提高连接和筛选操作的效率 复合键的使用通常出于两点考虑: a)主键应当具有意义-----这为认为的破坏数据库提供了方便 b)在描述多对多关系的连接表中可以使用两个外部键作为主键------该表可能成为其他从表的主表,并成为从表的主键的一部分,使得之后的从表包含更多的列 3)永远不要更新主键 4)主键不应该包含动态变化的数据(时间戳等) 5)主键应当由计算机自动生成 4 数据库主键选取策略 建立数据库的时候,需要为每张表指定一个主键(一个表只能有一个主键,但是可以有多个候选索引) 常见的主键选取方式有: 1)自动增长型字段 自动增长型主键会省略很多繁琐的工作,但在数据缓冲模式下,不能预先填写主键与外键的值 Order(OrderID,OrderDate)? //主键OrderID是自动增长型字段 OrderDetail(OrderID,LineNum,ProductID,Price)

PowerDesigner15.1使用手册

一、PowerDesigner简介 1.1常用模型文件 公司主要使用PowerDesigner的以下两类模型文件: 逻辑模型(CDM):描述了与任何软件和数据存储系统无关的数据库整体逻辑结构,通常包含了与物理数据库无关的数据对象,提供了一种描述企业运行或业务行为的 形象化的表达方式。 物理模型(PDM):叙述数据库的物理实现。主要目的是把CDM中建立的现实世界模型生成特定的DBMS脚本,产生数据库中保存信息的储存结构,保证数据在 数据库中的完整性和一致性。

1.2PowerDesigner使用环境 树形模型管理器:以树形方式展示模型所包含的内容以及内容之间的层次关系 图表窗口:组织模型中的图表,以图形方式展示模型中各对象之间的关系 输出窗口:显示操作结果 常用工具面板:用于在图表窗口插入对象的常用工具,主要有以下一些:

二、创建和管理CDM 1.1 新建CDM 1.选择菜单栏File->New,打开New窗口

2.在左边模型类型(Model type)列表中,选中Conceptual Data Model,单击“确认” 按钮即新建了一个默认名为ConceptualDataModel_1的CDM工程

3.在树形模型管理器中,右键单击新建的CDM工程名,从出现的菜单中选中Rename, 即可将新建CDM工程名修改为自己想要的,如:NG-CRM5.5逻辑模型 4.在树形模型管理器中,右键单击新建的CDM工程名,从出现的菜单中选择 New->Package即可新建一个包(Package)。Package用于对一个CDM工程的图表按照业务等规则分类存放,如NG-CRM5.5数据模型分为客户域、用户域、帐户域等多个域

数据库中主键与外键的理解

数据库中主键与外键的理解 在关系型数据库中,数据结构有逻辑结构和物理结构。物理结构指存储在物理介质上的数据文件的结构。逻辑结构即关系,也就是一张张的二维表。表中的一列即为一个字段(属性),代表的是实体的一个属性。表中的一行即为一条记录。如:学生表中(学号,姓名,年龄,性别),在该表中有4个字段,代表学生实体的4个属性。表中的一行数据(001,张三,男,20),即一条记录,表示的是张三这个学生的信息。 在表中,用来唯一标识一条记录的字段集,叫做主关键字或者主关键码,简称主键(主码),而主键包含的属性(字段)叫做主属性,其他的则为非主属性。 在这里说明一下,既然是“字段集”,那么主键就可能是一个字段或者多个字段。例如上面的学生表,用下划线表示的学号,就是能唯一标识一个学生的字段,学号字段就是该表的主键。由于学生的姓名重名是不可避免的,所以一般不用姓名来作为唯一标识一个学生的主键。再举个例子说明一下多个字段作为主键。例如学生选课表(学号,课程号,成绩),在学生选课表中,主关键字是(学号,课程号)。原因显而易见,一个学生可以选择多门课程,一个课程可以被多个学生选择。如果单单是用学号或者课程号,都不足以唯一标识一条记录。对于外键的理解,在这里我也举个例子。假设有两个表,学生表(学号,姓名,年龄,性别,专业编号),专业信息表(专业编号,专业名称,专业备注信息)。学生表中主键是学号,专业信息表中主键是专业编号。学生表中的非主属性专业编号恰好是专业信息表中的主键。我们就称这个专业编号是学生表的外键。像这样,一个表的非主属性是另一个表的主属性,该非主属性就是外键。 数据库的约束有三种,实体完整性约束、参照完整性约束和用户自定义约束。 1.实体完整性约束指的是主键不能为空,如果主键为空了还怎么唯一标识一条记录。

主键和外键

主键与外键 一、什么是主键、外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键 成绩表(学号,课程号,成绩) 成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以学号和课程号的属性组是一个主键 成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键 同理成绩表中的课程号是课程表的外键 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。 外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。二、主键、外键和索引的区别收藏 主键、外键和索引的区别? 聚集索引和非聚集索引的区别? 聚集索引一定是唯一索引。但唯一索引不一定是聚集索引。 聚集索引,在索引页里直接存放数据,而非聚集索引在索引页里存放的是索引,这些索引指向专门的数据页的数据。

三、数据库中主键和外键的设计原则 主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。 必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这个设计过程的症结所在。一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。 主键: 关系数据库依赖于主键---它是数据库物理模式的基石。主键在物理层面上只有两个用途: 1. 惟一地标识一行。 2. 作为一个可以被外键有效引用的对象。 基于以上这两个用途,下面给出了我在设计物理层面的主键时所遵循的一些原则: 1. 主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。 2. 主键应该是单列的,以便提高连接和筛选操作的效率。 注:使用复合键的人通常有两个理由为自己开脱,而这两个理由都是错误的。其一是主键应当具有实际意义,然而,让主键具有意义只不过是给人为地破坏数据库提供了方便。其二是利用这种方法可以在描述多对多关系的连接表中使用两个外部键来作为主键,我也反对这种做法,理由是:复合主键常常导致不良的外键,即当连接表成为另一个从表的主表,而依据上面的第二种方法成为这个表主键的一部分,然,这个表又有可能再成为其它从表的主表,其主键又有可能成了其它从表主键的一部分,如此传递下去,越靠后的从表,其主键将会包含越多的列了。 3. 永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。 注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。 4. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。 5. 主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。 四、数据库主键选取策略 我们在建立数据库的时候,需要为每张表指定一个主键,所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。当然,其它字段可以辅助我们在执行这些操作时消除共享冲突,不过就不在这里讨论了。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。所以数据库在设计时,主键起到了很重要的作用。 常见的数据库主键选取方式有:

经典SQL语句大全_主外键_约束

一、基础(建表、建约束、关系) 约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整性的介绍请参见第9 章)。在SQL Server 中有5 种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constraint)、检查约束(Check Constraint)和缺省约束(Default Constraint)。 (最后几页介绍SQL基础约束) 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) --建表、建约束、关系 create table tableok ( col1 int, col2_notnull int not null, col3_default nchar(1) not null default('男'), --默认男 col4_default datetime not null default(getdate()), --默认得到系统时间 col5_check int not null check(col5_check>=18 and col5_check<= 55),--添加约束,数据值在18到55之间 col6_check nchar(9) not null check(col6_check like 'msd0902[0-9][^ 6-9]'), --添加约束,数据值前7位必须是‘msd0902’,倒数第两位可以是0-9中任意一个数字,最后一位不是6-9之间的数字。 cola_primary nchar(5) not null primary key, --建立主键 colb_unique int unique, --唯一约束 col7_Identity int not null identity(100,1), --自增长,从100开始,每列值增加1个

PowerDesigner使用技巧

PowerDesigner使用技巧 版本 <1.0>修订历史记录

目录 1.PDM生成PB中DW的列标题3 1.1对PD的版本要求3 1.2PD10的使用方法3 1.2.1PDM设置3 1.2.2ExtendAttribute设置3 1.2.3生成3 1.2.4Oracle设置3 2.PDM生成表3 2.1生成Oracle表3 2.1.1解决生成的SQL字段名上加双引号的问题3 2.1.2避免生成comment 4 3.其它4

PowerDesigner使用技巧 1.PDM生成PB中DW的列标题 1.1对PD的版本要求 PD8不支持,PD低版本反而可以。 1.2PD10的使用方法 1.2.1PDM设置 1.菜单modle/extended Model Definitions,import选择PowerBuilder。 2.表的OWNER,注意要大写。如果没有设置,生成的属性中pbc_ownc='system',需要修 改 1.2.2ExtendAttribute设置 1.让数据窗口自动为宋体9号:修改Table 的字体。或者执行下面的SQL: //connect system ; UPDATE pbcattbl SET pbd_fhgt=-9,pbd_fwgt=400,pbd_fitl='N',pbd_funl='N',pbd_fchr=0, pbd_fptc=34,pbd_ffce='宋体',pbh_fhgt=-9,pbh_fwgt=400,pbh_fitl='N', pbh_funl='N',pbh_fchr=0,pbh_fptc=34,pbh_ffce='宋体',pbl_fhgt=-9, pbl_fwgt=400,pbl_fitl='N',pbl_funl='N',pbl_fchr=0,pbl_fptc=34, pbl_ffce='宋体'; commit; 2.不生成comment:清空Table、Column的comment。有些时候comment会导致不能成功 生成,具体原因没有深究。 1.2.3生成 菜单Tools/PowerBuilder/Generate Extended Attribute,选择表即可。 1.2.4Oracle设置 1.生成的数据只有是System下,才有效。PD默认也是生成在它之下。可以在Extended Attribute中修改,但不要修改 2.内容必须是大写PB才能识别,运行下面的SQL //connect system ; //delete pbcatcol where pbc_tnam= upper('');// 如果是重新生成 //delete pbcattbl where pbt_tnam=upper(''); // 如果是重新生成 update pbcatcol set pbc_tnam=upper(pbc_tnam),pbc_cnam=upper(pbc_cnam),pbc_ownr=upper(pbc_ownr) ; update pbcattbl SET pbt_tnam=upper(pbt_tnam),pbt_ownr=upper(pbt_ownr); commit ; 2.PDM生成表 2.1生成Oracle表 2.1.1解决生成的SQL字段名上加双引号的问题 Database/Edit Current DBMS/Script/Sql/Format/CaseSensitivityUsingQuote/No Tools/Resource/DBMS可以改所有的DBMS

语句注主键与外键的定义子句)(精)

一、建表(create table 语句。注:主键与外键的定义子句) create table student ( student_id char(6) not null primary key, student_name varchar(20) not null, class varchar(16) , sex tinyint , birthday datetime , credit tinyint , notes varchar(50) ) create table course ( course_id char(3) primary key, course_name varchar(16) , term tinyint , course_time tinyint , credit tinyint ) create table result ( student_id char(6) , course_id char(3) , grade tinyint , credit tinyint , constraint pk_result primary key (student_id,course_id), Constraint fk_result foreign key (course_id) references course (course_id) ) 二、修改表结构(alter table, drop table语句) 1.在表XS中增加1个新列——奖学金等级 ALTER TABLE XS ADD 奖学金等级tinyint NULL 2.在表XS中删除名为奖学金等级的列 ALTER TABLE XS DROP COLUMN 奖学金等级 3.修改表XS中已有列的属性 ALTER TABLE XS ALTER COLUMN 姓名char(10) 4.删除表XS DROP TABLE XS 三、修改表数据(insert,delete,update语句)

PowerDesigner 使用手册

PowerDesigner使用手册 1 PowerDesigner整体框架介绍 1.1 PowerDesigner 介绍 PowerDesigner是Sybase公司的CASE工具集,是图形化、易于使用的企业建模环境。使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设计模型进行控制。它可与许多流行的数据库设计软件,例如:PowerBuilder、Delphi、VB等相配合使用来缩短开发时间和使系统设计更优化 PowerDesigner 主要包括以下功能: 集成多种建模能力,能建立的模型包括: 数据模型(E/R, Merise) 业务模型(BPMN, BPEL, ebXML) 应用模型(UML)

1.2 PowerDesigner环境介绍 1.2.1对象浏览器介绍 工作空间(Workspace) 它是浏览器中树的根,是组织及管理所有设计元素的虚拟环境。你可以通过保存工作空间保存自己的设计空间信息以便再次打开时可以还原到保存前的状 态。 项目(Project) 作为容纳你所有开发出的制品的容器,项目中的所有对象可以作为一个单元存到PowerDesigner库中。每个项目自动维护一张图用以显示模型以及文档之间的依赖。 文件夹(folder) 工作空间可以包含用户自定义的文件夹用以组织模型和文件。例如,你有两个独立的项目,希望在一个工作空间中处理,此时可以使用文件夹。 模型(Model) 模型是PowerDesigner中的基本设计单元。每个模型中有一个或多个图以及若干模型对象。 包(Package) 当模型较大时,可能需要把模型拆分成多个“子模型”以便于操作,这些子模型就叫做包,今后可以把不同的包分配给不同的开发组。 图(Diagram) 展现模型对象之间的交互。可以在模型或包中创建多个图。

SQL的主键和外键的作用

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值。 (1)插入非空值时,如果主键表中没有这个值,则不能插入。 (2)更新时,不能改为主键表中没有的值。 (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。 (4)更新主键记录时,同样有级联更新和拒绝执行的选择。 简而言之,SQL的主键和外键就是起约束作用。 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识 一条记录,该属性组就可以成为一个主键。 比如: 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键; 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键; 成绩表(学号,课程号,成绩) 成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以,学号和课程号的属性组是一个主键。 成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学 生表的主键,则称成绩表中的学号是学生表的外键;同理,成绩表中的课程号是课程表的外键。 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证 号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。 外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如, A表中的一个字段,是B表的主键,那他就可以是A表的外键。 二、主键、外键和索引的区别 定义: 主键--唯一标识一条记录,不能有重复的,不允许为空 外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引--该字段没有重复值,但可以有一个空值 作用:

PowerDesigner教程(完整)

前言 在CSDN上转悠经常看到有网友寻求PowerDesigner相关资料的帖子,Baidu,Google上找找还真很少;同时也有不少网友发来Email询问相关PowerDesigner问题或索要相关资料的,故下定决心制作本文档。折腾二十多天,终于输出了现在的文档,其中绝大部分内容都是依照PowerDesigner自带的帮助文档翻译过来,乐意啃英文的朋友最好还是看其”原汁”教程,同时本文档仅用于帮助分析设计人员更快熟悉掌握PowerDesigner的使用方法,不包含分析设计方面的理论,所以要作好系统的分析设计工作还是需要用户深厚的项目实践功底。 起初想尽量按照PowerDesigner自带帮助文档完整地进行,尝试了一上午的工作之后这种方案马上就被我否决,原因有二:1.内容太多,工作量太多。2.原帮助文档特别周全,个人觉得可以在内容上作很大程度的压缩。姑决定按原帮助文档写,同时加入自己目前正在做的技术论坛分析设计过程以便于理解。 对本文档内容的几点说明: 1.本文档只包括PowerDesigner部分内容(RQM,Report,CDM,PDM),内容不够全面。 2.内容尽量简略,一些相同或类似操作过程尽量不再重复。 3.部分术语参考了飞思科技产品研发中心监制电子工业出版社的《PowerDesigner数据库系统分析设计与应用》。 4.暂时没有包含OOM,XML,BPM,ILM等模型内容,我将会在后期陆续更新。 版本说明:我使用的是PowerDesigner Trial 11英文版,因此文档中一些菜单,按钮名称也用英文写出(因当心自己译出的名称和中文版上的名称不一致而造成理解不便),若是给使用中文版的朋友带来不便,我在这说声”抱歉”了!同时由于各版本不同部分操作可能会有所区别。 这里要感谢在我进行翻译工作期间给我发送Email关注的网友,感谢一直支持我的朋友们!由于第一次做翻译工作,限于水平有限,文档中肯定存在很多不足和错误之处,衷心欢迎各位网友指点迷津,期望得到您的指导! Email:dingchungao@https://www.doczj.com/doc/6210993390.html, dingchungao@https://www.doczj.com/doc/6210993390.html, QQ:330982401 Blog:http:\\https://www.doczj.com/doc/6210993390.html, Slash 2006.8.31 需求模型 PowerDesigner11.0.0.1363评估版 为了更好的将原文含义再现,不加入我个人语言习惯,我尽量按照原文档内容翻译。 环境简介

数据库作业第三章

第三章关系数据库系统RDBS作业 一. 简答题 1.对于表中几个特殊的列,如主键、候选键和外键,分别用什么限制来保证它们的完整性?对 表中其它一般性的列,用什么限制来保证它们的完整性? 主键约束:主要是针对主键,以保证主键值的完整性。要求主键值必须满足值唯一、不能为空值。 唯一约束:主要是针对候选键,以保证主键值的完整性。要求候选键必须满足值唯一、可有一个且仅有一个空值。 外键约束:是维护表与表之间外键所对应属性(组)数据的一致性。主表到从表,表示主表中的主键值在修改和删除时,从表中与该主键值相同的外键值可级联(CASCADE)修改和删除,或改为空值(SET NULL)或默认值(SET DEFAULT),或禁止(NO ACTION)主表主键值的修改和删除;从表到主表,表示从表中的外键值在插入和修改时,其值应参照(REFERENCE)主表中的主键值。 对于其他一般性的列,还有检查约束和断言。 2.SQL SERVER中规则的目的? RULE主要是针对表中的某一列,指明该列的取值范围。 3.SQL SERVER中在定义某些限制时,分列级与表级,其分类的原则是什么? 列级检查约束针对表中一列,表级检查约束则针对同一表中多列。 4.外键限制定义的条件? 在含外键的表上定义; 定义外键限制的列必须是另一个表中的主键。 5.请说明在维护表间数据完整时外键限制与触发器的异同。 1.错误信息的管理上:约束与触发器在遇到问题时都可以返回给用户一定的错误信息。但是,触发器可以返回数据库管理员自定义的错误信息,而且还可以实现较为复杂的逻辑控制,而约束只能够通过标准化的系统错误信息来传递错误消息; 2.性能上的差异分析:从性能上来说,约束的执行性能都要高一点。虽然约束的执行性能比较高,但是其向用户提供的错误信息确实非常有限的。 3.管理维护的工作量:由于约束基本上都是数据库现成的解决方案。无论是索引约束还是外键约束,又或者是check约束。往往在数据库系统中已经有了现成的解决方案。数据库管理员通过直接引用这些解决方案即可以实现特定的功能,而不用再费力的编写触发器来实现。而触发器中系统没有现成的可以引用,而都需要数据库管理员通过实际清理来进行编写。 6.关系代数的基本操作符?笛卡尔乘积最大的作用是什么? 关系代数的基本操作符:SELECTION(选择)、PROJECTION(投影)、UNION(并或称联合)、INTERSECTION(交)、DIFFERENCE(差)、CROSS-PRODUCT(积)。 笛卡尔操作的最大作用是把任意两个不相关的表联接起来。 7.为什么说在实际查询中自然连接是用得比较多的? 自然连接可以从两个关系实例的笛卡尔乘积中选出同时满足一个或多个条件等式的行,每个条件等式中的列名相同。同时,在结果模式中重复的字段只有一个。 8.关系代数中对结果有重复元组时,如何处理? 对关系代数中对结果有重复元组时,将去掉重复元组。 9.连接的分类?

PowerDesigner15使用时的十五个问题

简介 PowerDesigner的主要作用一般还是数据库建模,并生成对应的数据库设计文档,可以与数据库保持同步。 一般常用的有CDM,PDM,UML建模,CDM可以转为PDM。 支持正向[生成数据库]和逆向工程[从数据库中生成],并直接关联到到数据库中,PDM可以直接和数据库进行关联,并将数据库,表,视图,触发器等数据库对象生成到数据库中,也可将这些对象更新到PDM中。 PowerDesigner的几个主要常用菜单是MODEL、DATEBASE、Tool,这三个菜单下命令使用比较多,要熟悉。PD 还可以用来画用例图,序列图,类图等UML图。 也可以画企业架构图,软件应用架构图等等图形 15个问题列表: No.1:是不是一定要从CDM开始设计,然后在进行PDM的设计? NO.2:工具栏palette不见了,如何把它找出来? NO.3: 如何建立与数据库的关联? NO.4: 域和数据项有何作用? No.5: 如何生成主键的自定义增长列,SQL Server和Oracle数据分别是如何操作的? No.6: NAME和CODE联动,如何取消? NO.7. 如何实现字段的NAME和Comment属性互换? NO.8: 如何修改某个对象的命名规则,比如外键,比如主键,比如触发器等? No.9: 如何用PD生成测试数据,以便测试? No.10 如何把CODE的NAME中文也生成在脚本中,也就是列名后就是NAME的说明文字? NO.11 如何将数据库结构,表名,表的字段导出到Word中,或者生成HTML文件以便查看? No.12 如何去除生成SQL时的双引号问题,双引号在Oracle中可以保证大小写,却异常麻烦? NO.13 如何修改PD的显示样式? No.14 如何去除表名,字段的长度限制? No.15 如何进行数据库的逆向工程? 说明:本文提到的PD基于PD15.英文版。 No1:是不是一定要从CDM开始设计,然后在进行PDM的设计? 本人觉得没有必要,项目的大小、熟悉程度、起步和个人习惯不一样,熟练业务的,项目小的直接用PDM设计未尝不可。 NO2:工具栏palette不见了,如何把它找出来? 这个问题我找了所有的菜单才找到,在【Tools】-【Customize Toolbars】点击打开,列表项里的【palette】选中即可,此外,这个窗口中还可以设计对齐的方式等等。

SQL Server外键设置笔记

SQL的主键和外键约束 SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值。 (1)插入非空值时,如果主键表中没有这个值,则不能插入。 (2)更新时,不能改为主键表中没有的值。 (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。 (4)更新主键记录时,同样有级联更新和拒绝执行的选择。 简而言之,SQL的主键和外键就是起约束作用。 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。 比如: 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键; 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键; 成绩表(学号,课程号,成绩) 成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以,学号和课程号的属性组是一个主键。 成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键;同理,成绩表中的课程号是课程表的外键。 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。 外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。 二、主键、外键和索引的区别 定义: 主键--唯一标识一条记录,不能有重复的,不允许为空 外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引--该字段没有重复值,但可以有一个空值 作用: 主键--用来保证数据完整性 外键--用来和其他表建立联系用的 索引--是提高查询排序的速度 个数: 主键--主键只能有一个 外键--一个表可以有多个外键 索引--一个表可以有多个唯一索引 创建SQL的主键和外键约束的方法: create table Student --建表格式:create table 自定义的表名 ( --字段名一般为有一定意义的英文 StudentName nvarchar(15), -- 格式:字段名类型()括号里面的是允许输入的长度StudentAge int, --int型的后面不需要接长度

使用PowerDesigner功能简介

对于很多使用过PowerDesigner的人来讲,他们使用PowerDesigner就是使用它来进行数据库物理建模,创建数据库表对象、建立表与表之间的关联关系、创建索引,最后,使用PowerDesigner的Generate DataBase功能生成数据库的DDL语句,最后,将这些DDL语句使用数据库工具进行导入。使用再高级一点的话,我们还可以创建数据源,并在PowerDesigner建立与数据源的连接后,最后,直接通过Generate DataBase的ODBC Generation功能直接在数据库当中建表、建外键、建约束、建索引等数据库对象。 PowerDesigner对很多很多应用服务器,外部工具,开源框架有着很好的支持,这个是PowerDesigner 的最大优势。默认情况下,这些扩展模块都没有启用,我们可以使用Extended Model来启用相应的模块支持,比如Hibernate。这篇文章将使用Object-Oriented Model结合Physical Data Model,并启用Hibernate Extended Model来进行建模,并最终生成相应的Java代码、Hiberante配置文件和映射文件、DataBase DDL语句等。 首先:我们先创建新的Object-Oritented Model,将Object Language选项当中Java,First diagram选择为Class Diagram,如下图所示: 配置完后,点击Extended Model Definitions面板,在扩展的模型当中选择Hiberante,最后点击确定按钮,如下图所示:

修改主键和外键

SQL中,一般要修改或者删除主键,只需要一个简单的命令即可:alter table 表名drop primary key. 下面我举例说明 先建一个表:table_project Create table table_project(‘id’ varchar(10),’name’ varchar(10),rmimary(‘name’)) Engine=myisam default charest=gb2312; 这时表已经建好,然后继续录入几个数据,等数据录入完成,此表格已经生成,如果这时你发现主键错了,想再改变主键就没那么简单了,因为你只是表格的结构错了,数据并没有错误,如果这时再删除表格重新建,无疑是在自寻苦恼。这时,其他只要两个命令就能完成。 1.先删除主键 Alter table table_project drop primary key 2.增加主键 Alter table table_project add primary key(id) 这就是如何不改变表内数据,修改主键的方法! 语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名); 例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id) //FK_ID是外键的名称 /* CREATE TABLE `tb_active` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `user_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `user_id` (`user_id`), KEY `user_id_2` (`user_id`), CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 */ 删除外键 语法: ALTER TABLE table-name DROP FOREIGN KEY key-id; 例: ALTER TABLE `tb_active` DROP FOREIGN KEY `FK_ID`

PowerDesigner_11_使用方法简介

PowerDesigner 使用方法简介 一、从网上下载软件。路径为:计算机系\软件工程与项目管理(CMM)\工具 二、安装软件 三、软件使用过程 根据下述过程建立如图所示的E-R图。 1、点击PowerDesigner图标启动软件。进入到初始页面,如图2所示

2、点击菜单中的文件项,选择新建,出现要求选择建立何种模型的模型类型对话框。 其中Conceptual Data Model CDM,为概念(数据)模型,它建立的就是E-R图Business Process Model BPM,业务处理模型 Object-Oriented Model OOM,面向对象模型 Physical Data Model PDM,物理(数据)模型,它建立的就是数据库表 选择CDM并单击确认按钮。 3、进入PowerDesigner的CDM操作窗口 4、 界面上出现一个小工具条palette,里面包括常用的数据库建模工具。 用鼠标单击工具条中的工具后,到界面中央单击或拖动即可。 为了能够完成前述图1的内容,选中图标,在界面中间单击五次,形成如图所示画面。 此时,每一个实体都是空的。需要逐个进行定义和描述。

5、定义实体 双击其中的一个实体,弹出实体属性定义对话框。 对“General”选项卡上的内容进行定义。 Name :定义实体的显示名称(图书) Code :定义实体的代码中表示名称(book),必须是英文。 Number :实体中实例(记录)的最大个数(100000000,它表示图书馆的最大藏书量可达一亿册)。 这个数字的作用是便于估计数据库服务器的磁盘容量。 6、定义属性、属性的约束和算法 “Attribute”选项卡上定义属性,如图所示

powerDesigner使用

PDM文件路径D:\Program Files (x86)\Sybase\PowerDesigner 16 oracle 11g 用户名及口令都是yudexiao oracle_home D:\orcl\asus1\product\11.2.0\dbhome_1 tns_admin F:\orclClient\instantclient_11_2_x64 client F:\orclClient\instantclient_11_2_x64 F:\orclClient\instantclient_11_2_x32 TNSNAMES.ORA------- GTGISMANAGER = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.200)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) jdk C:\ProjectOne\Java\jdk1.7.0_51 问题一:Could not initialize JavaVM 在网上查了许多资料, 有的地方说jdk安装在program Files文件里面, 可能因为这个空格的原因造成的, 我先把jdk装在了C:\java目录下面 还是不行, 我使用的jdk是64位的又重新安装了一个windows x86版本的jdk, 改了一下JAVA_HOME 其他设置如下,我使用的15.3版本的powerdesigner: 1.系统变量-classpath:加入mysql jar包的地址(例如C:\mysql-connector-java-3.1.13-bin.jar)

在sql server2008数据库中创建主外键

设置主、外键的方法 1、主键的设置 (1)设置gl22class表的主键 如图1所示。在gl22class表名上单击右键,选择设计命令,如A 处所示。打开右边的窗口,用鼠标单击要设置的关键字class_id的最左边箭头,如B处所示。最后单击主键,如C处所示。 A 图1 如果设置成功,如图2中A处所示。最后单击保存按钮。如B处所示。

图2 (2)设置gl22course 表的主键 和(1)设置class 表的主键的方法是一样的。Course 表的关键字是course_id 。最后单击保存按钮。 (3)设置gl22department 表的主键 和(1)设置class 表的主键的方法是一样的。department 表的关键字是dept_id 。最后单击保存按钮。 (4)设置gl22student 表的主键 和(1)设置class 表的主键的方法是一样的。student 表的关键字是student_id 。最后单击保存按钮。 (5)设置gl22grade 表的主键 和(1)设置class 表的主键的方法是一样的。grade 表的关键字是student_id 和course_id 。这两个属性要同时设置,设置方法是:按下shift 键,用鼠标单击A 处和B 处。同时选中后,单击C 处。最后 单

击保存按钮。 图3 2、外键的设置 (1)gl22class表和gl22department表设置外键 如图4所示。在gl22class表上单击右键选择设计命令。打开右边 A处所示。打开如图5所示的窗口。

图4 在图5中单击添加按钮,用鼠标单击表和列规范,出现A处的按钮,单击A处按钮,打开如图6所示的窗口。 图5

相关主题
文本预览
相关文档 最新文档