1、设计数据库最好从概念模型开始,概念模型中以实体为单位,可以比较清晰的反映实体间关系。
需要特别注意的一点,在创建好一个新的概念模型后,最好在model options中,将数据项的唯一代码和允许重用两个选项去掉。否则不同实体中的同名属性会被认为是同一个数据对象,改一个另外的也会跟着改。大多数情况下都不需要这种特性,相反它会带来麻烦。 但是,如果允许不同的表有相同的字段名,在创建视图的时候,需要为重复的字段名指定别名。 有利有弊啊。
做好这个设置后,开始下面的步骤:
1)把创建上实体,最初只需要命名中文名称。当然,之前需要进行系统的需求调研与分析。
2)分析实体间关系,画上关系,准确的确实出是一对一还是一对多,对于多对多关系,最好创建关联实体。
3)创建实体的属性,先不要管英文名称和数据类型,只命名中文名称。添加属性的过程中,尽量更细致的修改实体及其关系。并指定各实体的主键。 不要让实体没有主键,这不是个好习惯。
4)对形成的模型进行讨论、修正。
5)创建domain。 domain是什么东西呢,应该翻译成“域”吧, 但实际是一种自定义类型。把常用到的数据类型定义成domain,所有的属性指定其domain,而不直接指定数据类型,会给以后的工作带来很大的方便。一个域定义使你能适用于多个数据项目的标准数据结构。当你修正一个域时,你将更新全部与域关联的数据项目。当你作任何变化的时候,这导致数据一致化特性比较容易。
6)为各属性命名英文名称。这基本就是将来生成的数据库里的字段名称了。
7)为各属性指定domain
至此,概念模型创建完成。 默认的图形中的字符很小,可以通过右键弹出菜单里的显示配置项,设计实体名称及属性的字体。 也可以设置不显示关系的名称,并修改关系连线的样式,以获得好的显示效果。
也可以设置不同性质的实体为不同的底色,以获得更明确的效果。但是不建议将实体分在不同的包中,那样实体关系不太直观,也会有一些其它麻烦。如果是超大型的系统,实体特别多,合理的划分包是一个重要的工作。
在对概念模型反复的修正后,便可以生成物理模型了。在工具菜单里便有这项功能。
2、生成物理模型时,是需要选择数据库系统的。就是说物理模型是数据库相关的。当然需要选择正确的数据库系统。
1)注意检查生成的表间关系是否有问题。这时候概念模型里的实体就转化为物理模型里的表了。一些概念模型里的关系和约束,生成到物理模型里可能会出现问题,需要手动修正一下。虽然这种情况不多见。
2)生成的很多外键会重名,可以用check model检查一下,把重名的外键名修改一下。
3)将所有字段设置不允许null值。就是勾上表的属性窗口中,每个字段的M列的选择框,其实就是字段的Mandatory属性。也可以在概念模型中做这一工作。 这样做的好处是,在代码中一般不会碰到从数据库中取到的值为null的情况,可以简化很多工作。这里多做的工作绝对是值得的。当然这种情况下,对于很多字段,我们最好提供默认值,以避免一些情况下对插入数据时有过高的要求。 我们不必每个字段去指定默认值,因为我们应用了domain,前面提到过的一种自定义数据类型。下面我们继续说明如何给domain添加默认值。
4)添加默认值对象。也许有些人不清楚,默认值是一些数据库里的一种对象,就象表、字段、触发器一样,默认值在Sql Server中就是一种对象。在物理模型里,可以创建它。一般我们可能只需要三个默认值对象:数字型的默认值、字符串型的默认值以及日期型的默认值。 在物理模型中定义上这三个默认值对象。
5)为每个domain指定默认值对象。这样,每个被指定为这个domain类型的不允许null的字段,就会继承domain的默认值。注意,这是数据库的特性,不是PD的特性。不管怎么说,我们很容易的做了指定默认值的工作。好的数据库设计可能会考虑的更细致,比如有些数字型的字段,应该默认为1,而不是0。 这时候你只需要重新指定一下字段的默认值,他就不会再从domain中继承默认值了。
6)对物理模型检查修正后,便可以生成数据库了。 生成数据库时有很多选项,比如是否生成一些对象的drop脚本等,都可以控制的。
注意,在修改好物理模型后,不要再重新生成物理模型,否则很多在物理模型中定义的东西会丢失。如果需要做改动,以物理模型为准,概念模型可以反向生成,或者手动保持同步。
有些概念可能会乱,在这里把这些名词整理一下。
概念模型 --- 物理模型 --- 数据库 ---- 解释
1)、 实体 --- 表(table)-- 表 --- 实体和表对应,但并不完全是一回事了。
2)、 属性 --- 字段 -- 字段 --- 不解释了
3)、 Domain --- Domain ------自字义类型 --- 其实就是自字义数据类型。
4)、 默认值对象 -- 默认值对象 ---默认值对象 ---含有默认值,但不是默认值。不太常见,但很有用。SQL Server文档里说未来的版本可能会取消默认值对象相关的一些东西,谁知道呢。
概念模型、物理模型、数据库三者是可以相互转化的,相互的正向或逆向工程。
[img]http://dl.iteye.com/upload/attachment/0077/1149/51aeaef6-e599-33c9-9c9f-dbe5c14926a8.jpeg[/img]
需要特别注意的一点,在创建好一个新的概念模型后,最好在model options中,将数据项的唯一代码和允许重用两个选项去掉。否则不同实体中的同名属性会被认为是同一个数据对象,改一个另外的也会跟着改。大多数情况下都不需要这种特性,相反它会带来麻烦。 但是,如果允许不同的表有相同的字段名,在创建视图的时候,需要为重复的字段名指定别名。 有利有弊啊。
做好这个设置后,开始下面的步骤:
1)把创建上实体,最初只需要命名中文名称。当然,之前需要进行系统的需求调研与分析。
2)分析实体间关系,画上关系,准确的确实出是一对一还是一对多,对于多对多关系,最好创建关联实体。
3)创建实体的属性,先不要管英文名称和数据类型,只命名中文名称。添加属性的过程中,尽量更细致的修改实体及其关系。并指定各实体的主键。 不要让实体没有主键,这不是个好习惯。
4)对形成的模型进行讨论、修正。
5)创建domain。 domain是什么东西呢,应该翻译成“域”吧, 但实际是一种自定义类型。把常用到的数据类型定义成domain,所有的属性指定其domain,而不直接指定数据类型,会给以后的工作带来很大的方便。一个域定义使你能适用于多个数据项目的标准数据结构。当你修正一个域时,你将更新全部与域关联的数据项目。当你作任何变化的时候,这导致数据一致化特性比较容易。
6)为各属性命名英文名称。这基本就是将来生成的数据库里的字段名称了。
7)为各属性指定domain
至此,概念模型创建完成。 默认的图形中的字符很小,可以通过右键弹出菜单里的显示配置项,设计实体名称及属性的字体。 也可以设置不显示关系的名称,并修改关系连线的样式,以获得好的显示效果。
也可以设置不同性质的实体为不同的底色,以获得更明确的效果。但是不建议将实体分在不同的包中,那样实体关系不太直观,也会有一些其它麻烦。如果是超大型的系统,实体特别多,合理的划分包是一个重要的工作。
在对概念模型反复的修正后,便可以生成物理模型了。在工具菜单里便有这项功能。
2、生成物理模型时,是需要选择数据库系统的。就是说物理模型是数据库相关的。当然需要选择正确的数据库系统。
1)注意检查生成的表间关系是否有问题。这时候概念模型里的实体就转化为物理模型里的表了。一些概念模型里的关系和约束,生成到物理模型里可能会出现问题,需要手动修正一下。虽然这种情况不多见。
2)生成的很多外键会重名,可以用check model检查一下,把重名的外键名修改一下。
3)将所有字段设置不允许null值。就是勾上表的属性窗口中,每个字段的M列的选择框,其实就是字段的Mandatory属性。也可以在概念模型中做这一工作。 这样做的好处是,在代码中一般不会碰到从数据库中取到的值为null的情况,可以简化很多工作。这里多做的工作绝对是值得的。当然这种情况下,对于很多字段,我们最好提供默认值,以避免一些情况下对插入数据时有过高的要求。 我们不必每个字段去指定默认值,因为我们应用了domain,前面提到过的一种自定义数据类型。下面我们继续说明如何给domain添加默认值。
4)添加默认值对象。也许有些人不清楚,默认值是一些数据库里的一种对象,就象表、字段、触发器一样,默认值在Sql Server中就是一种对象。在物理模型里,可以创建它。一般我们可能只需要三个默认值对象:数字型的默认值、字符串型的默认值以及日期型的默认值。 在物理模型中定义上这三个默认值对象。
5)为每个domain指定默认值对象。这样,每个被指定为这个domain类型的不允许null的字段,就会继承domain的默认值。注意,这是数据库的特性,不是PD的特性。不管怎么说,我们很容易的做了指定默认值的工作。好的数据库设计可能会考虑的更细致,比如有些数字型的字段,应该默认为1,而不是0。 这时候你只需要重新指定一下字段的默认值,他就不会再从domain中继承默认值了。
6)对物理模型检查修正后,便可以生成数据库了。 生成数据库时有很多选项,比如是否生成一些对象的drop脚本等,都可以控制的。
注意,在修改好物理模型后,不要再重新生成物理模型,否则很多在物理模型中定义的东西会丢失。如果需要做改动,以物理模型为准,概念模型可以反向生成,或者手动保持同步。
有些概念可能会乱,在这里把这些名词整理一下。
概念模型 --- 物理模型 --- 数据库 ---- 解释
1)、 实体 --- 表(table)-- 表 --- 实体和表对应,但并不完全是一回事了。
2)、 属性 --- 字段 -- 字段 --- 不解释了
3)、 Domain --- Domain ------自字义类型 --- 其实就是自字义数据类型。
4)、 默认值对象 -- 默认值对象 ---默认值对象 ---含有默认值,但不是默认值。不太常见,但很有用。SQL Server文档里说未来的版本可能会取消默认值对象相关的一些东西,谁知道呢。
概念模型、物理模型、数据库三者是可以相互转化的,相互的正向或逆向工程。
[img]http://dl.iteye.com/upload/attachment/0077/1149/51aeaef6-e599-33c9-9c9f-dbe5c14926a8.jpeg[/img]