这里以MS SQL Server2000中已有的一个Northwind库为例,我们命名新的数据库名为NorthwindRose;我们只挑其中的两个表Customers和Employees做示例,另外我们再新建一个Card表,来建立表间关系,其他依此类推;前提当然是你已经安装了Rose 2003和 SQL Server2000,OK,我们开始

注:对文章中提到的一些概念,如模式、表空间,请参考书《UML数据库设计应用》,人民邮电出版社出版

先看最终效果

图一、SQLServer2000中的关系图

图二、Rose2003中的关系图

第一步:在Rose2003中新建一个MDL文档,命名为Northwind.mdl

第二步:展开Componet View,New一个DataBase,命名为NorthwindRose,这就是会出现在SQLServer中的新库名,这里可以注意到,Rose自动在“Logical View”中新建了两个包“Global Data Types”以及“Schemas”

图三、新建DataBase

第三步:右键选中“NorthwindRose”,打开“Open Specification”,选择Target为“Micfosoft SQL Server2000.x”,如果要导入到别的类型的数据库,同样可以选择,目前我还没有试过,欢迎大家写其他各种版本的参考手册

图四、选择目标数据库类型

第四步:新建NorthwindRose的表空间,右键打开“NorthwindRose”-“Data Modeler”-“New”-“Tablespace”,一般情况下,请把表空间命名成“PRIMARY”,例子里我将表空间命名为NorthwindSpace,这里待会还要重点讲一下,因为导入SQLServer2000的时候可不是随便什么表空间名都可以的,必须与SQLServer中的“文件组”中的项目相对应。

图五、新建表空间

第五步:右键选中“Logical View”中的“Schemas”,新建一个Schema,我这里命名为Schema_Actor,大家可以随意命名,自己理解就行;

图六、建立一个模式

第六步:右键打开“Schema Actor”,新建一个Data Model Diagram,取名为Main,双击这个Main图标,我们可以看到工具栏的变化,如下图

图七、建立数据模型视图,并双击打开,出现新的Toolbar

第七步:右键打开"Schema_Actor"的“Open Specification”,将DataBase选择为"NorthwindRose",表明从属关系,同时新建一个Table

图八、在模式下新建表格

第八步:在模式“Schema_Actor”下新建三个表Card、Customers和Employees,这里我以建立Card表为例,介绍怎么在Rose2003中建立表格,以及如何设置主键、选择数据类型以及数据长度等

1、将工具栏的“Table”拖放入Main数据视图,出现T_5表格

2、双击T_5表格,设置表格参数将Name设置为Card,选择Tablespace为NotrhwindSpace

3、选择“Columns”,右键空白区域选择“Insert”插入新列

4、编辑新建的列属性,将Name设置为CardID,注释为卡的ID,主键

5、选择“Type”设置CardID的数据类型和长度,并设置成主键

6、同样建立一个名为CardType的列设置数据类型为nvarchar,长度为10

第九步:模仿第八步提到的方法,建立Customers表和Employees表,并使用Toolbar中的Identifying Relationship和Non-identifying Relationship两个工具建立三个表之间的关系,Identifying Relationship表示主外键关系,拖动方向应该是从父表指向子表,下图中的Card表为父表,Customers和Employees表为子表,CardID为其他两个表的主键和外键;Non-identifying Relationship则仅仅是建立外键关系

注意:先选中工具,然后选择Parent表,拖动连线指向子表即可

图十二:建好后的表关系图

建立好表关系之后,就可以导入数据库了,请按照以下步骤进行操作

第十步:打开SQLServer的“企业管理器”,新建一个名为“NorthwindRose”的数据库,与Rose中的DB同名,打开属性,在“文件组”一栏加上“NorthwindSpace”,这里就是对应Rose中的Tablespace

图十三、Tablespace和文件组的关系

第十一步:右键打开“NorthwindRose”,并选择“Forward Engineer”,点击“下一步”,选择想导入的部分,再“下一步”,选择“Execute”,填入SQLServer的登陆帐号密码,选择刚才建立的“NorthwindRose”数据库,选择下一步导入

图十四、导入过程

检查一下SQLServer2000,应该可以看到表都已经自动建立好了,如果导入不成功,基本上是以下几个原因:

1、 在建立表的时候,没有选择相应的Tablespace

2、 Rose中的Tablespace在SQLServer2000中的文件组中找不到对应项

图十五、导入后的表结构

到这里,貌似一切都很顺利应该成功了,我们试着在Card表里添加一条数据看看,会出现如下错误提示:

图十六、新建数据时候的错误

可以看出,我们自己命名的“NorthwindSpace”的表空间是有问题的,这时候我们还是把Rose2003的Tablespace改为“PRIMARY”;重新导入,再试试看。重新导入之前,要先把NorthwindRose库里的表先删除。最后可以看到一个可以使用的库了

用Rational Rose来建立数据库表的更多相关文章

  1. JPA中建立数据库表和实体间映射小结

    在JPA中,映射数据库表和实体的时候,需要注意一些细节如下, 实体类要用@Entity的注解: 要用 @Id 来注解一个主键: 如果跟数据库相关联,要用@Table注解相关数据库表: 实体类中字段需要 ...

  2. Lucene学习之一:使用lucene为数据库表创建索引,并按关键字查询

    最近项目中要用到模糊查询,开始研究lucene,期间走了好多弯路,总算实现了一个简单的demo. 使用的lucene jar包是3.6版本. 一:建立数据库表,并加上测试数据.数据库表:UserInf ...

  3. 为什么要用hibernate 与基于数据库表结构的项目开发

    最近开始学习hibernate,其实并不知道要学习什么,有什么用.后来问了一下同事,他就说快捷方便简单,很多事情不用自己做他会帮你做好,但是我觉得不应该是这样的,于是我就去搜了一下,就搜到了一篇帖子, ...

  4. Oracle数据库实验一建立数据库

    实验日期:   2019 年  09 月  24  日 实验报告日期:   2019  年  09 月  28 日 一.      实验目的 熟悉oracle环境: 熟练掌握和使用PL-SQL建立数据 ...

  5. 使用MySQL Workbench建立数据库,建立新的表,向表中添加数据

    使用MySQL Workbench建立数据库,建立新的表,向表中添加数据 初学数据库,记录一下所学的知识.我用的MySQL数据库,使用MySQL Workbench管理.下面简单介绍一下如何使用MyS ...

  6. SQL Server学习之路(一):建立数据库、建立表

    0.目录 1.前言 2.建立数据库 2.1 通过SSMS建立数据库 2.2 通过SQL语句建立数据库 3.建立表 3.1 通过SSMS建立表 3.2 通过SQL语句建立表 1.前言 配置是win10+ ...

  7. 第二篇-Django建立数据库各表之间的联系(中)

    上篇中已经建立了两个table,Book和Publish.这篇介绍如何用python增删改查数据库中的数据. 在views.py中创建一个index函数 from django.shortcuts i ...

  8. 第一篇-Django建立数据库各表之间的联系(上)

    多表操作(一对多) 遇到的问题: 执行python manage.py makemigrations后报如下错误 TypeError: __init__() missing 1 required po ...

  9. GG_Model 类库与数据库表对应建立实体类

    3.4.GG_Model 类库与数据库表对应建立实体类 我这里不教大家写代码,直接用TT模板自动生成,省去写代码的麻烦. A. 三个文件MysqlDbhelper.ttinclude .mysqlMa ...

随机推荐

  1. log4j安装与简介

    问题描述:     在应用程序中添加日志记录总的来说基于三个目的:    (1) 监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作:     (2) 跟踪代码运行时轨迹,作为日 ...

  2. 【HDOJ】【2089】不要62

    数位DP cxlove基础数位DP第一题 用容斥把所有的不吉利数字去掉就得到吉利数字的数量= =(满足区间减法) //HDOJ 2089 #include<cmath> #include& ...

  3. 【娱乐】高端小游戏Manufactoria

    Manufactoria 是一款游戏.游戏中,一家生产机器人的工厂内部出了一 些问题,生产出来的机器人有很多不合格的.一个机器人可以用一个含有红色和 蓝色的颜色串来描述,只有颜色串符合某种规律的机器人 ...

  4. Codeforces Round #362 (Div. 2)->A. Pineapple Incident

    A. Pineapple Incident time limit per test 1 second memory limit per test 256 megabytes input standar ...

  5. POJ 1258 Agri-Net(最小生成树,模板题)

    用的是prim算法. 我用vector数组,每次求最小的dis时,不需要遍历所有的点,只需要遍历之前加入到vector数组中的点(即dis[v]!=INF的点).但其实时间也差不多,和遍历所有的点的方 ...

  6. 暑假集训单切赛第一场 UVA 1737 Mnemonics and Palindromes 3

    题意:求由a,b,c三个字母组成的长度为n的字符串,其任意连续的至少长度大于等于2的子字符串都不是回文,问这个字符串有多少种?并字典序输出 如果所有种类的字符串总长度大于100000个字符,就输出TO ...

  7. 【hadoop2.6.0】倒排索引遇到问题了

    想实现书上倒排索引的例子,但是我不会java想用C++写,如果用hadoop streaming 那么输入必须是标准输入的形式, 那么我怎么获得每个文件的文件名呢? 查了一下,还有一种方法叫做hado ...

  8. JS 变量或参数是否有值的判断

    var node; …… 判断 node 是否有值,是否为 undefine,是否 null,直接使用两个!!,否定之否定: if (!!node){ .... }else{ .... } 这个条件判 ...

  9. 创建和编辑 crontab 文件

    http://docs.oracle.com/cd/E24847_01/html/819-6951/sysrescron-24589.html 创建和编辑 crontab 文件 创建 crontab  ...

  10. POJ2418Hardwood Species

    题意 : 输入若干个树木品种,里边有的是重复的,让你统计每个品种占输入的总数量的百分比,最后按字典序输出 思路 : 本题数量很大,所以采用直接统计的方式会超时,而采用的方法可以用二叉搜索树,或者用ma ...