数据库设计教程——物理模型和表创建

2014-09-27 20:16:03

请关注唯心的个人微信公众号:craft6-cn(中划线,也可以搜索:领域驱动业务建模)

一、定义和说明

    定义:以常用的DBMS理论为基础,将概念模型中所建立的现实世界模型生成相应的SQL语言脚本。

利用SQL脚本在数据库中产生现实世界信息的存储结构(表、视图、约束等),并保证数据在数据库中

的完整性和一致性。


    笔者习惯使用数据库设计工具 PowerDesigner 来设计物理模型,但其实用一些数据库客户端程序

(如对MySQL使用SQL Manager)同样可以完成物理模型的设计。但使用PowerDesigner更利于从整体把握

数据表之间的联系,在设计数据表时,也有更多可以重用的功能。用客户端程序则容易每张表割裂开来,

甚至出现相同业务意义的字段在不同的表中数据结构不同的情况。    


    在本文中,笔者将采用PowerDesigner进行说明。

   关于PowerDesigner的基本使用,则不做冗述,读者可以参看网上教程,如:

       PowerDesigner教程(完整)


二、创建物理模型之前

   创建物理模型之前需要做好准备工作,主要是设计E-R图和撰写数据字典文档。


   笔者并没有设计概念模型(CDM),而是直接进行物理模型的设计。因为笔者认为设计概念模型会加长数据库设计

的周期,但其对项目价值却并不大,绕过此环节,并不会对数据库物理模型的设计造成影响。

数据库设计教程——物理模型和表创建

三、使用PowerDesigner创建模型

  1. 创建物理模型项目

    打开PowerDesigner,点击菜单 File --> New Model --> Physical Data

    (选择项目需要的DBMS,笔者选择的是MYSQL5.0)

  2. 改名

    修改项目名称为 Craft6.cn

    默认的物理模型名称为:all

  3. 创建若干域 Domain

    右键点击项目,New --> Domain

    可以按数据类型、业务类型等进行创建,方便重用,如


    • ID:varchar(64) 或 long  (笔者习惯采用前者,方便扩展)

    • Name(名称) 多种

    • 内容 多种

    • 整数 多种

    • 浮点 多种

    • 时间 长 | 短

    • 类型或状态

       或者根据业务需要,创建注入orderNo,flowNo,address之类的域。

       笔者习惯使用的Domain如下图:

       domain.jpg

  4. 创建包

    根据项目情况创建,如产品、订单、系统、用户等。

    右键点击项目,New --> Package

    创建的包下默认有一个物理模型,根据情况修改Name和Code。

  5. 将包拖到 all 物理模型中

    打开all 物理模型,鼠标左键按住左侧菜单的各个包,拖到该模型中,如:

    all_pacakges.jpg

  6. 打开要设计的包下面的物理模型,准备设计表


四、设计数据表

    点击工作区的工具条的Table图标,拖到工作区域。打开表编辑窗体:

    table_1.jpg

  1. 输入Name 和 Code

    Name是展示用的,建议 表名 + 说明的方式,方便在工作区查看。

    Code是编码,生成SQL时使用,建议采用下划线的方式,全部大写有利于切换为其它类型的数据库减少工作量。

    Comment是备注,生成SQL时会用到,建议填写,以后生成基础代码时可以用到。

    其它的不必填写。

  2. 创建Columns

    table_2.jpg

    Name:名称。仅用于在PDM中显示使用。

    Code:编码。建议全大写,以下划线作为后缀,这样的好处是可以规避数据库的关键字、保留字,可以使用单个单词命名字段。

    Comment:备注。生成SQL时用到,一般包含Name,但是多了对本字段的业务描述。

    Domain:域。默认是不打开的,点击图中箭头所示,在弹出的列表中选择Domain

    DataType:数据类型。因为用了Domain,所以在创建字段时是不需要处理本列的,在选择了Domain后会自动填充。建议所有字段均
              使用Domain来确定数据类型。

    Length:长度。也是通过Domain确定的。

    Precision:精度。也是通过Domain确定的。

    Primary:是否主键。主键则勾选。

    Foreign Key:外键。通过外键关联确定,不需要手工勾选。

    Mandatory:是否必填(即Not Null)

  3. 维护Index
    数据库对于主键是自动生成唯一索引,所以Index默认是空的。

    一般在设计阶段不需要考虑其它的索引设计,可以在优化阶段在处理。




  4. Triggers 和 Procedures

    触发器 和 处理过程
    对于设计阶段不需要考虑。


  5. Physical Options 

    对于MySQL可以选择主键是否自增,存储引擎类型,如果对进行定制后,还可以增加建表时默认的字符集。

    可参考:http://blog.csdn.net/mpu/article/details/4703722

    对于Oracle则可以设计表空间和索引空间。

    可参考:http://spiritfrog.iteye.com/blog/204731


  6. MySQL

    可以设置当前的表是临时表。在建表时,增加temporary关键字。关于临时表,可以参考:

    http://database.51cto.com/art/201005/200377.htm


  7. Notes

    一些项目说明,和SQL无关。


  8. Rules


  9. 业务规则。如果你创建了Business Rule,则可以在这里选择。


  10. 业务规则是对字段的业务逻辑进行限定(比如有效值范围,如房产管理系统的楼层)


  11. 业务规则一般在Domain中使用,然后通过Domain作用到具体的字段上。



  12. Preview

    生成建表SQL预览。


可通过扫描左侧二维码阅读本文。本站文章均为颜超敏原创,欢迎转载,请注明出处即可,转载可通过下面的社会化工具快速完成。

分享到:


为您推荐这些文章,如果感兴趣,请继续阅读吧:

数据库设计教程——物理模型和表创建

数据库设计,数据库物理模型,数据表,物理表

    定义:以常用的DBMS理论为基础,将概念模型中所建立的现实世界模型生成相应的SQL语言脚本。 

    利用SQL脚本在数据库中产生现实世界信息的存储结构(表、视图、约束等),并保证数据在

数据库中 的完整性和一致性。    

    笔者习惯使用数据库设计工具 PowerDesigner 来设计物理模型,但其实用一些数据库客户端程序

(如对MySQL使用SQL Manager)同样可以完成物理模型的设计。但使用PowerDesigner更利于从整体把握

数据表之间的联系,在设计数据表时,也有更多可以重用的功能。用客户端程序则容易每张表割裂开来,

甚至出现相同业务意义的字段在不同的表中数据结构不同的情况。

颜超敏,唯心六艺,Craft6.cn,电子商务博客,电子商务研发,电商研发,电子商务研究,电商研究,电子商务专家,电商专家,电子商务知识,电商知识,电子商务教程,电商教程,电子商务模式,电子商务平台,电子商务商业模式,电子商务数据库设计,电商数据库设计,电子商务系统分析,Java架构设计,Java软件架构,B2C,O2O,o2o模式,o2o电子商务,o2o电子商务平台,中国电子商务,电子商务平台建设方案
粤ICP备14060523号 Copyright @2014 -唯心六艺软件