数据库逻辑结构设计阶段
本节将介绍如何将 E-R图转化为关系模型和数据库模型图,下一节我们介绍如何判断数据表结构设计是否规范。
关系数据库模式用二维表的形式表示实体与实体间关系的数据模型称为关系模型。关系数据库模式是对关系数据库结构的描述,或者说是对关系数据库框架的描述。一个关系通常对应一张表。
一般情况下,我们把关系模式表示为 R(U) 或 R(A,B)。其中,R 表示关系名,U 表示属性集合,A、B 代表 U 中的属性。
将 E-R 图转换为关系模式的步骤如下。
1)把每个实体都转化为关系模式 R(A,B) 形式以酒店管理系统为例,实体 客人 和 客房 分别可以使用关系模式表示如下。
2)建立实体间关系的转换
实体间的关系分成一对一、一对多、多对多三种,当两个实体各自转化为关系模式后,实体间关系的转换如下。
多对多的转换:把两个实体中的主键和关系的属性放到另一个关系模式中,会多生成一个关系模式。
酒店管理系统中客房与客人的关系为一对多关系,转换后的结果如下。
数据库模型图
数据库模型图主要用来说明数据库有哪些表,表中有哪些属性以及表与表之间的关联关系。
将 E-R 图转化为数据库模型图主要执行以下 4 步:
为了数据编码的兼容性,建议使用英文字段。为了直观可见,我们在英文括号内注明了对应的中文含义。下面将 E-R 图中的 客房 和 客人 两个实体转换为数据库模型图,如下图所示。
![数据库逻辑结构设计阶段](http://ytso-blog-oss-img.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2021/07/20/20210720_60f643d7a12c9.png)
图中的 PK 表示表的主键列,FK 表示外键列。需要注意的是,表中的 ID 编号列只能用作主键或外键,否则该列没有实际含义。如客人表中的 GuestID 列,客房表中添加的 RoomID 列。
在数据库模型图中也可以很好的体现实体之间的映射关系。比如,客房和客人之间是一对多关系,对于一对多关系的两个实体,一般会各自转换为一张表,并且后者对应的表引用前者对应的表,即客人(GuestRecord)表中的客房号来自客房(Room)表中的客房号,它们之间应建立主键、外键关系,如上图所示。
一般来说,一对多关系是一个表中的主键对应另一个表中可重复字段,主键的值是不能重复的,而关联的字段是可以重复的,这样就会存在一个值对应一个值或者一个值对应多个值。在一对一关系中,一般是一个主键对应一个不可重复的字段,显然只能一个值对应一个值。
多对多映射关系也是比较常见的。要表示多对多关系,除了将多对多关系中的两个实体各自转换为表外,一般还会创建第三个表,称为连接表。它将多对多关系划分为两个一对多关系,并且将这两个表的主键都插入到第三个表中。
例如,订单表和产品表有多对多关系,这种关系通常通过与 订单明细 表建立两个一对多关系来定义。一个订单可以有多个产品,每个产品可以出现在多个订单中。关于这一点可以在以后的数据库设计实例中慢慢理解。
24057.html
html相关文章
- 系统数据库的概念结构,逻辑结构,物理结构设计方法_数据库的物理独立性是指
- SQLServer 错误 605 尝试在数据库 %d 中提取逻辑页 %S_PGID 失败。 该逻辑页属于分配单元 %I64d,而非 %I64d。 故障 处理 修复 支持远程
- SecureCRT中文显示乱码详解数据库
- 库 MySQL:构建逻辑型数据库的智慧之选(mysql逻辑型数据)
- MySQL操作:快捷操作数据库语句(mysql操作数据库语句)
- MySQL 查看数据库端口的简单方法(mysql查看数据库端口)
- 使用Oracle触发器实现复杂数据库逻辑(oracle触发器类型)
- 深入剖析Oracle数据库的逻辑结构,帮你掌握核心技术!(oracle逻辑结构)
- Oracle异步I/O:提升数据库性能的最佳实践(oracle异步io)
- Oracle数据库管理中日志模式的使用(oracle日志模式)
- 连接Oracle数据库:速度更慢!(连接oracle数据库慢)
- 优化Oracle数据库连接性能(opt连接oracle)
- Oracle数据库元组条件优化技术研究(oracle元组条件优化)
- 如何使用CMD命令行打开MySQL数据库(cmd怎样打开mysql)
- 在Oracle数据库中进行逻辑性筛选(oracle中逻辑筛选)
- Oracle数据库中的逻辑读取技术(oracle中的逻辑读)
- Mysql数据库不可见,怎么办(mysql不能显示数据库)
- oracle数据库中的条件判断语句简介(oracle 中写判断)
- 方式实现数据库访问Oracle数据库访问的常用实现方式(oracle 一般用哪种)
- 数据库Oracle 11g实现了革命性的逻辑型数据库应用(oracle11g逻辑型)