物理模型(PhysicalDataModel)表示将如何在数据库中构建模型。物理数据库模型显示所有表结构,包括列名称,列数据类型,列约束,主键,外键以及表之间的关系。物理数据模型的功能包括:
- 规范所有表和列。
- 外键用于标识表之间的关系。
- 非规范化可能基于用户需求而发生。
- 物理上的考虑可能会导致物理数据模型与逻辑数据模型有很大不同。
- 对于不同的RDBMS,物理数据模型会有所不同。例如,MySQL和SQL Server之间的列的数据类型可能不同。
物理数据模型设计的步骤如下:
- 将实体转换成表格。
- 将关系转换为外键。
- 将属性转换为列。
- 根据物理约束/要求修改物理数据模型。
下面我们创建一个物理模型:
步骤:首先打开powerdesigner--File--NewModel--ModelTypes--Physical Data Model--Physical Diagram
下面介绍一个表常用的操作如图所示:
一般来说新建表的时候一般都是列、数据类型、主键,其他功能为了表的完整性,所以呢先不要着急。下面我们来看看生成的代码是否符合我们的要求:
if exists (select 1
from sysobjects
where id = object_id('"Table"')
and type = 'U')
drop table "Table"
go
/*==============================================================*/
/* Table: "Table" */
/*==============================================================*/
create table "Table" (
ID nvarchar(50) not null,
Sum decimal(18,2) null,
constraint PK_TABLE primary key (ID)
)
go
接下来看看图展示:
物理图我们分为两部分:上面是表面;下面是列的信息(列名、数据类型、主外键标志)
好了,基本操作和图的展示已经结束了,下面我们通过一个简单的例子分析关系型数据库的三种关系
student(学生表)、stuinfo(学生信息详情表)、performance(科目绩效表)、class(班级表)、stucalss(学生班级表)
student(学生表)<1==1>stuinfo(学生信息详情表):一对一关系,外键设在附属表表stuinfo里面
student(学生表)<1==n>performance(科目绩效表):一对多关系,外键设在多的一方performance里面
student(学生表)<n==m>class(班级表):多对多关系,衍生第三张表stuclass表保存两表的主键
最后通过sql代码生成,这样省了不少事,既有表关联设计图,又生成了表,一举两得