06.物理数据模型

Posted oldmao_2000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了06.物理数据模型相关的知识,希望对你有一定的参考价值。

文章目录

简介

·物理数据模型是以常用的DBMS(数据库管理系统)理论为基础,将CDM、LDM中所建立的现实世界模型生成相应的DBMS的SQL语言脚本。利用该SQL脚本在数据库中产生现实世界信息的存储结构(表、约束等),并保证数据在数据库中的完整性和一致性。

表(Table)是数据库中用来保存信息的一种数据结构。在PDM中建立表的过程,就是产生建表的SQL语句的过程。PDM中的表可以由CDM中的实体转换生成。

列(Column)是组成表的基本单元,一个表由多个列组成,每个列都有一个数据类型。CDM中的实体属性通过模型内部生成可以转换成PDM中表的列。

主键

主键(PrimaryKey)是用来唯一标识表中一条记录的一个或多个列的集合,它是由CDM中的主标识符转换产生的,也是CREATETABLE语句的重要组成部分。

候选键

候选键(Alternate Key)也是用来唯一标识表中一条记录的一个或多个列的集合,它与主键具有同样的作用。例如学生表中学号做为主键,身份证号则可作为候选键。

外键

外键(Foreign Key)是与其他表连接的公共列,这个列通常是其他表的主键。

视图

视图(View)是从一个或多个基木表或其他视图中导出的表。在数据库中通过它可以看到自己感兴趣的内容。但是视图和基本表不同,它是一个虚表,即其对应的数据并不独立地存放在数据库中,数据库中存储的只是视图的定义。(Oracle中有实体视图)

索引

数据列和数据类型定义了包括在表中的数据类型,索引则描述了数据在表中是如何组织的。可以创建一个或多个索引来加快数据库的查询速度(不是越多越好,越多插入或更新就会越慢)。索引对用户是透明的,数据库自动确定何时使用表的索引。常见索引有:
组合索引:这类索引牵涉到多个数据列。
唯一索引:这类索引不允许在索引列上有重复值。
聚簇索引和非聚簇索引:聚簇索引要求数据库服务器按索引列对数据进行排序,使得数据行的物理顺序和其逻辑顺序一致,因此,每个表上只允许一个聚簇索引;非聚簇索引不要求逻辑顺序和物理顺序一致,每一非聚簇索引可以为用户提供不同的数据访问顺序。
Oracle中还有位图索引、函数索引等。

存储过程

存储过程(Stored Procedure)是由SQL语句和控制流语句构成的集合。存储过程的建立大大提高了SQL的效率和灵活性
存储过程与原始SQL语句的最大区别在于它是预编译好的。
此外在客户/服务器环境下,存储过程经过编译和优化后存储在服务器端而不是客户端,这样在网络上传输的只是一个远程调用和最终的执行结集。
存储过程简化了安全机制,它可以简化对某些操作的授权。
PD中的存储过程没有语法校验功能,一般是在数据库中创建成功后再把代码写回模型。

触发器

触发器(Trigger)是一种特殊的存储过程,它在某特定表的数据被添加、删除或更改时发挥作用。触发器通过维护不同表中逻辑上相关数据的一致性来维护数据的完整性,包括参照完整性。触发器的一个主要优点在于条件满足时它会自动地触发调用。
PD的触发器在表对象中创建。

约束

唯一性和主键(Unique和Primary Key)约束。该约束要求同一表中的任意两行在某或某几个指定列上不能具有相同的值,另外,主键约束还要求在指定的列上不允许空值。
参照完整性(Reference)约束。该约束要求插入某个或某些指定列的数据必须已存在于被指定表的列中。
检查约束(Check)。该约束限制了能够插入列中的数值。(通常用于自定义约束)在PD中列属性中的【Standard Checks】进行修改。

生成数据库

在PDM的菜单上选择【Database】

这里可以切换当前的数据库,并生成数据库(建议生成脚本)
创建数据库对象顺序为:
创建表
创建列
创建创建域
创建主键
创建候选键
创建外键
创建完整性检查约束
创建视图
创建索引
创建存储过程
创建触发器
创建数据库之前需要做合法性检查。

表检查

表名和代码必须唯一
表名和代码不能超过DBMS规定的长度。
约束名与索引名不能冲突。约束和索引不能使用同一个名称。一个表中应该存在列、引用列、键和索引。
一个表中自增列的数量不能超过1。

列检查

列名和代码必须唯一。(不同表应该可以不同)
列代码不能超过DBMS规定的长度。
键列或唯一性索引列必须是强制的。
默认值与列表值必须在最大值与最小值之间。
数字型数据类型的总长度必须大于小数位长度
应该为列定义数据类型。
外键列与连接的主键列成候选键列必须有一致的数据类型。
约束名必须唯一。
序列的列必须是键列。
自增的列必须是数字型数类型。
计算列必须有表达式。

索引检查

索引名与代码必须唯一。
索引代码长度不能超过DBMS规定的长度。
一个索引应该至少包含一个列。
不能出现索引嵌套,一个索引不能包含另一个索引。(组合索引)

测试数据

·使用PowerDesigner能够为数据库的表中生成测试用数据。
·要在数据库中生成测试数据,必须在PDM中设定测试数据的描述文件(Data Profile)。描述文件定义了生成测试的数据类型和生成方式。描述文件可以选择Numbe rCharacter和Data&Time三种数据类型。
选择Model-> Test Data Profiles命令,打开List of Test Data Profiles窗口,创建描述文件

在Table Properties(表属性)窗口,选中要定义填充参数的列,在列属性窗口中定义列填充参数。
选择Database->Generate Test Data命令打开Test Data Generation(测试数据生成)窗口,生成测试数据。
数字的自动生成设置:

文本的自动生成设置:

日期的自动生成设置:

当然还可以指定按照列表、数据库查询、文件的方式进行设置。

逆向工程

PDM中的逆向工程是指从现有DBMS的关系数据库或现有数据库SQL脚本中生成PDM的过程,即实现由现有数据库的物理结构导出其物理设计的过程。
选择菜单File->ReverseEngineer-> DataBase命令

实例

某公司希望对目在建项目开发过程进行统一的系统管理。主要包括客户管理、部门管理、员工管理、开发团队管理、项目管理、项目任务管理等核心模块。
部门表、团队表、员工表、客户表、项目表、项目活动表、子任务表、员工参与任务表

以上是关于06.物理数据模型的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MVC 模型中表示一个月的复选框

如果我在 ERD 中表示 JSON 模型是不是有效?

列族

mysql中表的数据类型

物理中 如果要保留小数 保留到几位?

数据结构与算法2016-06-01