PowerDesigner (12.5) 数据库建模遇到的问题和解决办法
1. 自增类型
在Conceptual Data Model,由于是概念模型,所以字段不能为自增类型。这是因为不同RDBMS,有不同的具体实现的模式(如SQL Server 的identity,和oracle 的sequence)。因此不能在概念模型中建立自增类型,SQL Server方法:选中某个字段à属性,选中identity即可.Oracle方法:选中某个字段à属性,新建sequence,选择你想用的sequence即可.注意,Sybase的系列数据库,有的也建立不了,如Sybase AS Anywhere X等
2. 关于索引
聚合索引:物理索引,可以创建一个唯一的组合(非组合)聚合索引
非聚合索引:可以创建多个非聚合索引
主键索引:为Unique的索引
Unique说明索引时,表示某个索引所在的列,值必须唯一
索引一般用于数据字段被频繁查询或设计到排序时经常要使用到,也用于字段值的唯一约束。这样可以大大提高查询的速度和控制数据的输入,但与此同时,也给DBMS带来管理上的更多负担,比如索引的管理和存储等.
参考: http://helpdesk.idcsea.com/article/support_article_552.html
3. 数据库设计的命名规则
一般不同的企业都有自己的关于数据库方面的命名规则,说说自己经常用的规则和方法:
表名: tb+实体内容的概述 如用户表: tbUserInfo,也有人命名为tb_User_Info,总之都借用了匈牙利命名法.
视图: vi+实体内容的概述
列名:类型简写 + 属性内容描述,如用户名称列:CUserName,C表示char,或varchar.如用户ID,是int类型,则是IUserID
存储过程:sp+存储过程解释,如spUpdateUserInfo,更新tbUserInfo内容的存储过程
触发器:tr+触发器说明 如 trInsertUserInfo,插入tbUserInfo之后触发
4. 范式的遵循
一般设计用到3NF,由于范式更多的事考虑数据冗余的问题,应用的范式越高级,那么检索时用的表连接等,都会影响到查询的效果.所以,取折中,用到3NF即可.对1NF,2NF,3NF做一个个人的理解性的解释和说明
1NF:粒度最小.就是每个列(属性),都要不能再细分
2NF:完全依赖主键.也就是说,不能出现其中有些字段不依赖于其中的主键
3NF:不依赖属性.即字段之间不存在依赖.
参考:http://hibernater.javaeye.com/blog/222791