likes
comments
collection
share

如何将逻辑数据库设计转换为物理数据库?

作者站长头像
站长
· 阅读数 17

​数据库设计的最终目标是将逻辑数据模型转化为实际的物理数据库。在设计物理数据库之前,必须先有一个完整的逻辑数据模型。假设逻辑数据模型已经完成,那么要实现物理数据库需要做些什么呢?

第一步是根据将要使用的数据库管理系统(DBMS)的特性,将逻辑数据模型转化为物理实现,创建一个初始的物理数据模型。要成功创建物理数据库,您必须对DBMS支持的数据库对象、支持这些对象所需的物理结构和文件有充分的了解,包括:

  • 对DBMS支持的数据库对象、支持这些对象所需的物理结构和文件有深入的了解。
  • 了解DBMS如何支持索引、参照完整性、约束、数据类型和其他增强数据库对象功能的特性。
  • 对将要使用的DBMS的具体版本或发布版本的新功能和已废弃功能有详细了解。
  • 了解已经配置的DBMS配置参数,以及是否需要调整某些参数以支持新的数据库。
  • 具备数据定义语言(DDL)的技能,将物理设计转化为实际的数据库对象。

掌握了正确的信息,您就可以从逻辑数据模型创建一个高效和有效的数据库。将逻辑数据模型转化为物理模型的第一步是进行简单的转换,从逻辑术语转化为物理对象。

当然,这个简单的转换并不会得到一个完整和正确的物理数据库设计,它只是第一步。转换包括以下内容:

  • 将实体转换为表
  • 将属性转换为列
  • 将域转换为数据类型和约束

为了支持将属性映射到表列,您需要将属性的每个逻辑域映射到一个物理数据类型,可能还需要添加其他约束。在物理数据库中,每个列必须分配一个数据类型。某些数据类型需要指定最大长度。例如,字符数据类型可以指定为CHAR(25),表示该列可以存储最多25个字符。您可能还需要为其他数据类型应用长度,如图形、浮点和十进制(需要长度和精度)类型。

请注意,没有商业的DBMS支持关系域。因此,在逻辑数据模型中分配的域必须映射到DBMS支持的数据类型。您可能需要根据使用的DBMS调整数据类型。例如,如果没有内置的货币数据类型,要使用什么数据类型和长度来表示货币值?许多主要的DBMS产品支持用户定义的数据类型,因此,如果没有可接受的内置数据类型,您可能希望考虑创建一个数据类型来支持逻辑域。

除了数据类型和长度外,您还可能需要对列应用约束。考虑一个整数域,取值范围为1到10(包括1和10)。仅仅将物理列分配给整数数据类型是不足以匹配该域的。必须添加约束以限制可以存储在该列中的值在指定范围内,即1到10。如果没有约束,负数、零和大于十的值都可以存储。使用检查约束,您可以对可以存储在列或一组列中的数据值进行限制。

主键的指定是实体和属性的物理设计的重要部分。 在逻辑数据模型中,应为每个实体分配一个主键。您应该尽量使用在逻辑数据模型中选择的主键。然而,在数据建模过程中通常会发现多个候选键。您可以决定选择与逻辑设计中选择的不同的主键,可以是候选键之一或另一个用于物理实现的代理键。即使DBMS不要求每个表都有一个主键,为您创建的每个物理表标识一个主键也是一个好习惯。不这样做将使处理该表中的数据更加困难。

当然,在从逻辑到物理的转换过程中还有许多其他决策需要做出。例如,必须解决以下每个问题:

  • 每个表中每个列的可为空性 
  • 对于字符列,应该使用固定长度还是可变长度? 
  • 对于许多列,您可能需要在多个相似的数据类型之间进行选择(例如,SMALLINT、INTEGER和BIGINT)。数据模型是否提供足够的细节以正确选择? 
  • 是否应该使用DBMS为序列或标识列分配值? 
  • 通过分配引用约束来实现逻辑关系。 
  • 在列上建立索引以提高查询性能。 
  • 选择要创建的索引类型(如果您有多种类型可供选择):b-tree、位图、逆序键、哈希、分区等。 
  • 决定数据的聚簇顺序。 
  • 其他物理方面,如列排序、缓冲池规范、数据文件、反规范化等。 

而且我们甚至还没有开始考虑诸如为了进行充分备份而制定恢复时间对象、重新组织的安排等方面。

总结 

逻辑数据模型应作为设计和创建物理数据库的蓝图。但是,简单的逻辑到物理映射无法正确创建物理数据库。在实施物理数据库结构之前,DBA需要做出许多物理设计决策。这可能需要偏离逻辑数据模型。但是,这种偏离应该只基于对DBMS和数据库所处的物理环境的深入了解。当然,每个偏离应该适当地记录下来以备将来参考。


作者: Craig S. Mullins

更多技术干货请关注公号“云原生数据库

squids.cn,目前可体验全网zui低价RDS,免费的迁移工具、SQL开发工具