学习目的
- 了解数据库设计工具-PowerDesigner的安装
- 了解如何使用PowerDesigner进行数据库表的设计
- 掌握 结合三范式来使用PowerDesigner设计数据库表
一、PowerDesigner安装
-
找到PowerDesigner.exe安装应用程序,双击打开(该应用程序有点大,需要等待)
-
双击后自动加载安装程序 --> 点击next
开始选择安装的配置 --> 直接选择Trial --> 点击next
- Trial:十五天试用版;
- Local License:本地许可证(需要注册码);
- Standlone Seat- Served:独立版;
-
Floating Seat- Served:浮动版;
-
选择地区 --> 选择香港"HongKong" --> 勾选协议"I agree" --> 点击next
-
选择安装目录(默认C盘,不建议修改)
-
选择需要安装特征 --> (直接跳过)点击next
-
选择允许安装的用户文件 --> (直接跳过)点击next
-
给即将安装的程序文件夹命名 --> (直接跳过)点击next
-
显示安装的信息 --> (直接跳过)点击next
-
开始安装 --> 点击next --> 等待安装 --> 点击Finish完成
安装完成后,不需要注册,使用pj
-
将pdflm16.dll应用程序 --> 复制 --> 到刚刚的安装目录中(默认C盘Program Files (x86) --Sybase目录-- PowerDesigner目录下) --> 粘贴 --> 替换pdflm16.dll应用程序
二、PowerDesigner的使用
-
打开PowerDesigner(在应用程序中打开,可创建快捷方式)
PowerDesigner使用配置 --> 选择创建新模块"Create Module"
- Create Module:创建新模块 / 新模型;
- Create Project:创建新工程 / 新项目;
- Open Module or Project:打开一个已存在的模块或工程;
- Example:
-
选择具体的模块类型 --> 选择Module Type --> 选择物理建模Physical Data Module -->
-
给模块命名(Module name,一般为开发的项目名)--> 选择对应的数据库管理系统(DBMS)--> 点击Ok --> 完成物理模型的创建
-
完成数据库物理建模 --> 正式开始设计 --> 按住ctrl+鼠标滚动键 --> 放大、缩小 主面板表格
-
主面板的表格设计 --> 点击右侧"Physical Diagram"下第二个"表格"图表 --> 将图标拖到任意一个 主面板表格
设计物理表格 --> 按住ctrl+鼠标滚动键 --> 放大 主面板表格 --> 双击 拖进来的"表格"图标 --> 填写好表格基础信息 --> 点击apply应用(注意查看表格的变化)-->
-
设计表的基础属性:包括表名(物理模型表名 和 真实数据库表名)
- 设计表的字段 --> 点击Columns(设置字段列) --> 填写字段信息 --> 点击Apply应用(注意查看表格变化)--> 点击OK(完成表的基础设计)
-
设置表的字段列:包括列的名称(物理模型列名Name,真实数据表列名Code)、字段数据类型、字段值长度、主键(P)、外键(F)
后续:设计表的索引 --> 点击Indexes,设计表的主键和外键 --> 点击Keys
-
查看物理模型设计表 对应的sql语句 --> 双击建模好的表格 --> 点击preview
-
面板主页查看物理模型表的结构 --> 左侧栏
将设计的表格导出
-
以文件形式导出(.pdm文件),设计完直接按ctrl+s保存
-
以sql脚本形式导出:双击建好的表格 --> 点击preview --> 点击保存
-
退出后软件("否"不保存工作区)
-
--> 打开外部的物理模型文件(.pdm文件)--> 双击保存到外部的.pdm文件 --> 打开后点击workspace --> 点击Tables --> 点击表名右键 --> Find in Diagram(完成打开)
三、数据库设计三范式
3.1 第一范式
- 关键点
- 必须有主键:每一个数据库在设计时都必须要有主键字段;
- 字段原子性不可再分:每一个字段的设计不能概念化、笼统化,需要具体的实现,且不可拆分(如联系方式包括了电话和邮箱,不能将电话和邮箱设计在同一个字段中,而是拆分成 '电话' 和 '邮箱' 两个字段)
3.2 第二范式(多对多)
- 关键点
- 第一范式:第二范式的设计在第一范式的基础之上,必须满足第一范式的要求才能使用第二范式
- 完全依赖:非主键字段 必须完全依赖 主键字段,主要适用于复合主键(一个主键由多个字段联合主键),每一个非主键字段必须完全依赖复合主键,不能只依赖 组成复合主键中的其中一个字段。
(如表table有复合主键<A,B,C>三个字段共同构成的一个主键,非主键字段F不能 只依赖A 或 只依赖B 或 只依赖C,而是必须要完全依赖<A,B,C>整个复合主键)
- 设计本质
解决事物的多对多关系模式,一个实体A可以被多个B关联,一个实体B也可以被多个A关联。
(如学生-老师关系:一个学生-多个老师教学,一个老师-教学多个学生) - 设计技巧
多对多,三张表,关系表,两外键。将每一个实体单独抽取出来作为一张表,设计一张关系表存储实体的关系,且每一个实体作为关系表的外键。
3.3 第三范式(一对多)
- 关键点
- 第一范式:第三范式的设计前提必须满足第一范式;
- 第二范式:第三范式的设计前提同时也必须满足第二范式;
- 不能传递依赖:同一张表内,非主键字段必须直接依赖主键字段,而不能通过"中介"来产生间接依赖主键。
(如表table拥有主键A,非主键字段B依赖A,而又有另一个非主键字段C依赖B,从而产生了非主键字段C 传递性/间接 依赖主键字段A)
设计本解决事物的一对多关系模式,一个实体A可以对应多个实体B的主体--主键,多个实体B共同对应一个主体A。
(如班级-学生表:一个班级-多个学生,一个学号-一个学生-班级是外键)设计技巧
一对多,两张表,添外键。将主键的"中介"传递者和非直接依赖独立出来到一张表中,主键作为一张主体表,而中介实体表中拥有主体表的主键字段作为外键字段。
(班级表作为主键主体表,学生表的学生依赖学号<班级作为外键>
由班级-学号-学生,转变成班级-学号,学号-学生-<外键:班级>)