PowerDesigner创建Physical Data Model
版本:PowerDesigner11
一、创建表Table
1、创建主键PK
主键是由一列或多列组合组成的唯一标识符,主键的值在行中数据的生存期内不发生更改。因为唯一性对良好的数据库设计至关重要,所以在定义表时最好指定主键。
2、NOT NULL
注意:在表实体模型上显示NOT NULL值,需要设置:Tools->Display Preferences->Object View->Table->NULL。
3、创建列唯一值AK
可以通过单一列或组合列两个方式设定。
二、创建域Domain
域是内置数据类型的别名,包括适用的精度值和小数位数值,还可以包括 DEFAULT 值和 CHECK 条件。域(也被称为用户定义的数据类型)允许整个数据库中的列都被自动定义成相同的数据类型,有相同的 NULL 或 NOT NULL 条件、相同的 DEFAULT 设置和相同的 CHECK 条件。域有利于整个数据库的一致性,并且可以消除一些错误类型。
如类型列表:
DOM_NUMBER9->NUMERIC(9)
DOM_VCHAR32->VARCHAR(32)
注意:
1、在编辑表列时,列的域属性有时不显示,需用Ctrl+U显示过滤器进行设置。
2、域定义类型和列定义类型冲突时,可以用Tools->Model Options->Column&Domain设置。
三、定义外键(Foreign Key)
您使用主键和外键描述不同表中各信息间的关系。主键唯一标识表中每一行,外键定义不同表中各行间的关系。通过主键和外键,您可以以高效(无冗余)的方式使用关系数据库保存信息。
1、创建外键时,需要注意表与表之间的关系。如1:1,1:N。灵活运用主键设定和NOT NULL设定。
2、注意外键关系。如更新约束及删除约束。
操作技巧:
1、多选实体对象,使用组合方式和保护方式~保持对像的整体结构不被打乱。
2、外键线条的调整,水平Ctrl+H,垂直Ctrl+L。
3、对于多外键实体对象,可以采用创建实体快捷方式的办法,理清表间关系。
四、定义索引(Index)
索引可以大大地提高索引列上的搜索性能。但是,索引会占用数据库中的空间并降低插入、更新和删除操作的速度。
1、索引分为单一索引和联合索引方式~并应该索引的排序方式。如:升序或降序。
五、创建视图(View)
视图是计算出的表。可以使用视图以一种可以控制的格式向数据库用户显示所要提供的信息。
可以用Tools->Create View来创建一个视图。
六、主键自增
七、业务规则(Business Rule)
使用 CHECK 条件可以确保一列中的值满足某个明确的条件或规则。
1、创建规则:Model->Business Rule
2、在列上使用业务规则:列属性->Rule选取相应规则。
如:
A、可以实施特定的格式要求。例如,如果表中有一列用于存储电话号码,您可能希望确保用户以相同的格式输入电话号码。对于北美洲电话号码,可以使用类似以下约束:
ALTER TABLE customer
MODIFY phone
CHECK ( phone LIKE '(___) ___-____' )
B、可以确保输入的值与一组有限数量的值中的一个相匹配。例如,要确保 city 列只包含几个允许城市(例如,公司设有办事处的那些城市)中的一个,可以使用类似以下的约束:
ALTER TABLE office
MODIFY city
CHECK ( city IN ( 'city_1', 'city_2', 'city_3' ) )
缺省情况下,比较字符串时不区分大小写,除非创建数据库时显式指定需要区分大小写。
八、PDM模型检查(Check)
在Tools->Check Model运行模型检查,然后根据检查结果纠正模型。
九、生成数据库(Generate Database)
在Database->Generate DataBase运行生成窗口,根据工作情况设置相关参数。
对于使用PowerBuilder开发的用户,还可以通过Tools->PowerBuilder->Generate PowerBuilder生成相关PowerBuilder扩展的属性。
注意:扩展属性的相关参数的设置,可以在Model->Extended Model Definitions中修改。
十、生成测试数据
可以定制测试数据类型。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效