数据库设计规范
数据库设计规范

数据库设计规范数据库设计是软件开发过程中至关重要的一步。
一个良好设计的数据库可以提高系统性能,降低错误发生的概率,并提高数据的可靠性和一致性。
以下是一些数据库设计的规范和最佳实践,以帮助您开发出高效可靠的数据库系统。
引言数据库是组织、存储和管理数据的关键工具。
在设计数据库时,开发人员需要考虑到多个方面,以确保数据库能够满足用户需求,并且能够有效地存储和检索数据。
数据库设计规范涉及到数据模型选择、表结构设计、关联关系定义、索引创建等方面。
数据模型选择选择合适的数据模型是数据库设计的基础。
数据模型用于描述数据之间的关系,常见的数据模型有层次模型、网状模型和关系模型。
在大多数情况下,关系模型是最常用的,因为它简单、易于理解和管理。
关系模型使用表来表示实体和关系,具有良好的结构化特性,适用于大多数应用场景。
表结构设计在数据库设计中,表是最基本的数据存储单元。
良好的表结构设计可以提高数据的存储效率和查询性能。
以下是一些表结构设计的最佳实践:1. 表名和字段名的命名规范表名和字段名应该具有可读性和描述性,能够准确地反映其所代表的含义。
避免使用过于简单或含糊不清的名称,使用下划线或驼峰命名法来提高可读性。
2. 合理定义字段类型和长度根据数据的实际需求,合理选择字段的数据类型和长度。
避免过度分配存储空间,以节省存储空间并提高查询性能。
3. 主键和唯一约束每个表应该有一个主键,用于唯一标识每一条记录。
主键应该是一个稳定的、不易变的字段。
另外,对于需要保证唯一性的字段,应该添加唯一约束,以避免重复数据的出现。
4. 外键关联在建立表之间的关联关系时,应该使用外键来确保数据的完整性和一致性。
外键关联可以用于建立表之间的一对一、一对多或多对多关系。
数据库范式数据库范式是一个指导原则集合,用于确保数据库的数据一致性和可靠性。
范式的级别从第一范式到第五范式,每个级别都有其特定的规范和要求。
第一范式(1NF)第一范式要求数据库中的每个字段都是原子的,不能再细分为更小的单位。
数据库设计规范

数据库设计规范
数据库设计是一项重要的任务,一个好的数据库设计可以提高系统的性能、可靠性和可维护性。
以下是一些数据库设计规范的要点:
1. 数据库命名规范:使用有意义的、可读性强的名称,避免使用缩写和无意义的短名称,使用下划线或驼峰命名法。
2. 数据表命名规范:使用单数形式的名词,避免使用复数形式,使用名词描述表的内容,不要使用数字和特殊字符。
3. 列命名规范:使用有意义的、可读性强的名称,避免使用缩写和无意义的短名称,使用名词或形容词描述列的内容。
4. 主键规范:每个表都应该有一个主键,并确保主键的唯一性和稳定性,通常使用自增长整数或全局唯一标识符(GUID)
作为主键。
5. 外键规范:在需要关联的表中添加外键,确保外键的一致性和正确性。
6. 索引规范:根据查询的需求和性能需求创建适当的索引,避免创建过多的索引,否则会降低数据的插入和更新性能。
7. 数据类型规范:选择适当的数据类型来存储数据,避免浪费存储空间和降低性能。
8. 一致性规范:确保数据表的结构一致性和命名一致性,可以使用数据库设计工具来辅助设计和维护。
9. 安全性规范:对敏感数据进行保护,设置合适的访问权限和加密措施,确保数据的安全。
10. 性能规范:优化查询性能,合理设计数据库的关系和索引,避免数据冗余和数据不一致等问题。
总之,数据库设计规范的目标是保证数据库的结构合理、性能高效、数据安全,同时提高开发和维护的效率。
数据库设计原则与规范

数据库设计原则与规范数据库是现代信息系统的核心组成部分,用于存储和管理大量结构化数据,以支持组织内部各种业务和决策需求。
数据库设计的质量直接关系到系统的性能、可靠性和可扩展性。
为了确保数据库的高效运行,我们需要遵循一些设计原则和规范。
下面将介绍数据库设计的基本原则和规范。
一、规范化数据库设计原则规范化是数据库设计过程中的关键步骤,它通过将数据分解为逻辑上的表来减少数据冗余、提高数据一致性和完整性。
以下是常用的规范化原则:1. 第一范式(1NF):每个表中的每个字段都是原子的,不可再分。
不能将多个值存储在一个字段中,例如在电话号码字段中存储多个电话号码。
2. 第二范式(2NF):每个非主键字段完全依赖于主键字段。
如果一个表中有多个候选键,必须将其分解为多个表,确保每个非主键字段只与一个主键相关。
3. 第三范式(3NF):消除了非主键字段之间的传递依赖关系。
即非主键字段之间不可存在依赖关系,数据更新时不会导致数据不一致。
4. 次范式(BCNF):基于第三范式,进一步消除了主键字段之间的传递依赖关系。
它要求每个非主键字段只依赖于候选键。
二、数据模型设计原则数据模型是数据库设计的核心,它定义了数据库中的实体、属性和关系。
下面是数据模型设计的原则:1. 选择合适的数据模型:常用的数据模型包括层次模型、网状模型和关系模型。
关系模型是当前最流行和应用最广泛的数据模型,它以关系表的形式存储数据。
2. 确定实体和属性:实体是现实世界中的对象,属性是实体的特征。
在定义实体和属性时,需考虑实体的属性是否唯一标识该实体。
3. 定义关系:关系是实体之间的联系,通过表之间的键值关联实现。
在定义关系时,需考虑关系的类型(一对一、一对多、多对多)以及参照完整性约束。
三、命名规范与标准良好的命名规范和标准是数据库设计的基础,它有助于提高代码的可读性和可维护性,并减少开发人员之间的沟通成本。
以下是常用的命名规范与标准:1. 表和字段命名:使用具有描述性的名称,避免使用缩写、重复和模糊的词汇。
数据库建设规范

数据库建设规范数据库作为存储、管理和处理数据的重要工具,在现代信息化建设中起着至关重要的作用。
为了提高数据库的质量和效率,确保数据的安全性和准确性,需要制定一套数据库建设规范。
本文将从数据库设计、数据规范、性能优化和安全保障四个方面详细介绍数据库建设规范。
一、数据库设计在数据库建设的初期阶段,良好的数据库设计能够为后期的开发和维护工作奠定基础。
数据库设计应遵循以下几点规范:1. 数据库表命名规范表名应具有具体的描述性,能够准确表达其所存储的数据内容,并采用小写字母与下划线组合的方式命名,例如"order_info"。
2. 字段命名规范字段名应有明确的含义,避免使用缩写和数字等模糊的命名方式。
同时,字段名也应采用小写字母与下划线组合的方式命名,例如"create_time"。
3. 主键和外键规范每个表应有主键,并使用自增长或唯一性约束来保证主键的唯一性。
同时,在设计关联表时,外键应与关联的主键类型一致。
4. 索引规范为常用作查询条件的字段创建索引,以提高查询效率。
在创建索引时,需要根据实际情况进行选择,避免过多的索引对性能造成负面影响。
二、数据规范数据库中的数据质量对于后续的数据分析和决策产生重要影响。
为了保证数据的一致性和准确性,需要制定以下数据规范:1. 数据类型规范在对字段进行设计时,需要选择合适的数据类型,以节省存储空间,并确保数据的正确性。
例如,对于存储日期时间的字段,应选择合适的日期时间类型。
2. 数据录入规范为了避免数据录入错误,需要制定数据录入规范。
规定数据录入格式、校验规则和必填字段,同时提供数据录入的帮助文档和提示信息,以减少错误的发生。
3. 数据清洗规范对于已有的大规模数据,需要进行数据清洗,剔除重复、错误、缺失和异常数据,以保证数据库中的数据质量。
三、性能优化数据库的性能直接关系到系统的响应速度和用户体验。
为了提高数据库的性能,需要进行以下优化措施:1. 查询优化使用合适的查询方式、优化复杂查询语句、减少不必要的连接和子查询,以提高查询效率。
数据库设计规范

数据库设计规范数据库设计是软件开发过程中至关重要的一步,它的质量和规范性直接关系到系统的稳定性、性能和数据的安全性。
本文将介绍一些常见的数据库设计规范,以帮助开发者在设计数据库时遵循最佳实践,确保数据库的高质量和可维护性。
一、命名规范在数据库设计中,良好的命名规范是必不可少的。
以下是一些常用的命名规范:1. 表名和字段名要具有描述性,能够直观地反映其所代表的含义。
2. 避免使用数据库关键字作为表名或字段名。
3. 使用一致的命名风格,比如驼峰式命名法或下划线命名法。
二、表设计规范良好的表设计是保证数据库性能和数据完整性的基础。
以下是一些表设计的规范建议:1. 表结构要符合第三范式。
避免重复数据和数据冗余,提高数据的一致性和更新效率。
2. 选择合适的数据类型和字段长度,根据数据的实际需求选择适当的数据类型,避免过度使用字符型字段。
3. 为表添加主键和外键约束,确保数据的完整性和一致性。
4. 避免使用过多的索引,只为常用的查询字段添加索引,以提高查询效率。
三、字段设计规范字段是数据库中最基本的组成单元,良好的字段设计是保证数据准确性和查询性能的重要因素。
以下是一些字段设计的规范建议:1. 选择合适的数据类型,根据字段存储的数据类型和范围选择适当的数据类型,避免浪费存储空间和降低性能。
2. 为字段添加注释,注释能够提供字段的含义和用途,方便其他开发者理解和维护。
3. 避免使用空值,对于允许为空的字段,要慎重考虑是否真正需要允许为空,避免数据一致性问题。
4. 使用约束限制字段取值范围,根据业务需求添加合适的约束,比如唯一约束、非空约束等。
四、索引设计规范索引是提高查询效率的重要手段,但不恰当的索引使用会降低数据库的性能。
以下是一些索引设计的规范建议:1. 选择适当的索引字段,对于经常用于查询和连接的字段添加索引,避免过多的索引占用存储空间和降低写操作的性能。
2. 避免在大数据量表上创建过多的索引,慎重考虑索引的创建,对于大数据量表,需要权衡查询效率和写性能之间的平衡。
数据库设计规范手册

数据库设计规范手册1. 简介数据库设计规范手册是为了统一数据库设计标准和提高数据库设计质量而编写的指南。
本手册将详细介绍数据库设计的基本原则、规范要求以及最佳实践,旨在帮助数据库设计人员更好地完成其工作。
2. 数据库设计原则在进行数据库设计时,应遵循以下原则:2.1 数据库规范化•利用规范化减少重复数据。
•使用主键、外键来确保数据完整性。
2.2 完整性约束•定义适当的唯一约束、非空约束等。
•使用触发器确保业务逻辑的执行。
2.3 性能优化•避免大量冗余字段,减少存储空间占用。
•根据查询需求创建必要的索引。
•注意合理使用分区技术来优化查询效率。
2.4 安全性考虑•对敏感数据进行加密存储。
•设置合适的权限和访问控制策略。
3. 数据库对象命名规范为了方便管理和沟通,应遵循一致的命名规范。
以下是常见对象的命名要求:3.1 表名•使用小写字母。
•使用下划线作为单词分隔符。
•采用名词复数形式。
3.2 列名•使用小写字母。
•使用下划线作为单词分隔符。
•避免使用保留关键字。
3.3 约束名•使用大写字母和下划线组合。
4. 数据库设计规范要求在进行数据库设计时,应满足以下要求:4.1 表设计•设计符合业务需求的表结构,避免冗余字段。
•定义适当的主键、外键关系。
•注意选择正确的数据类型和长度。
4.2 索引设计•基于查询需求创建索引,提高查询性能。
•注意索引不宜过多,避免对写操作产生过多影响。
4.3 视图和存储过程设计•合理使用视图简化复杂查询。
•利用存储过程实现业务逻辑的封装和复用。
5. 最佳实践5.1 数据库备份与恢复策略定期备份数据库,并确保可靠的恢复策略以应对突发情况。
5.2 日志管理与审计追踪监控数据库日志,及时发现和解决潜在问题,并实施安全审计追踪。
5.3 定期维护与性能优化定期进行数据库维护工作,包括索引重建、数据清理等,并优化数据库性能以满足业务需求。
结论数据库设计规范手册对于确保数据库设计的一致性和高质量至关重要。
数据库设计规范

数据库设计规范数据库设计规范是指在进行数据库设计时需要遵循的一系列规则和准则,以确保数据库的结构和功能能够满足用户需求,并且能够高效地进行数据管理和存储。
本文将介绍一些常见的数据库设计规范,包括命名规范、数据类型选择、索引设计、表关系设计等。
1. 命名规范在数据库设计中,良好的命名规范能够使数据库对象更易于理解和维护。
以下是一些建议:1.1 表名、列名和约束名应使用清晰明了的描述性词汇,避免使用含糊不清或缩写的名称。
1.2 使用统一的命名风格,如下划线命名法(例如:user_name)或者驼峰命名法(例如:userName)。
1.3 避免使用数据库关键字作为对象的名称,以免引起冲突。
2. 数据类型选择选择合适的数据类型对数据库的性能和空间利用是至关重要的。
以下是一些常见的数据类型选择规范:2.1 尽量使用较小的数据类型,以减少存储空间和提高查询性能。
2.2 对于整数类型,根据实际需求选择合适的精度(如TINYINT、SMALLINT、INT等)。
2.3 对于字符串类型,根据实际需求选择合适的长度(如VARCHAR、CHAR等)。
2.4 避免使用文本型字段存储大量的文本数据,可以考虑使用CLOB或BLOB类型。
3. 索引设计合理的索引设计可以加速查询操作,但是过多或不恰当的索引会增加维护成本和写操作的开销。
以下是一些常见的索引设计规范:3.1 为频繁使用作为查询条件的字段添加索引,以提高查询性能。
3.2 避免在较小的表或者稀疏的字段上创建索引,因为这可能导致索引失效并降低性能。
3.3 当需要根据多个字段进行查询时,考虑创建复合索引,以提高查询效率。
4. 表关系设计在数据库设计中,表与表之间的关系是非常重要的。
以下是一些常见的表关系设计规范:4.1 使用主键(Primary Key)和外键(Foreign Key)来建立表与表之间的关联,以确保数据的完整性和一致性。
4.2 避免使用过多的嵌套层次关系,以减少查询的复杂性。
数据库设计规范_编码规范

数据库设计规范_编码规范数据库设计规范包括数据库表结构的设计原则和数据库编码规范。
数据库表结构的设计原则包括表的命名规范、字段的命名规范、主键和外键的设计、索引的使用、约束的定义等。
数据库编码规范包括SQL语句的书写规范、存储过程和函数的命名规范、变量和参数的命名规范、注释的使用等。
1.表的命名规范-表名使用有意义的英文单词或短语,避免使用拼音或缩写。
- 使用下划线(_)作为单词之间的分隔符,如:user_info。
- 表名使用单数形式,如:user、order。
2.字段的命名规范-字段名使用有意义的英文单词或短语,避免使用拼音或缩写。
- 字段名使用小写字母,使用下划线(_)作为单词之间的分隔符,如:user_name。
- 字段名要具有描述性,可以清楚地表示其含义,如:user_name、user_age。
3.主键和外键的设计-每张表应该有一个主键,用于唯一标识表中的记录。
- 主键字段的命名为表名加上“_id”,如:user_id。
- 外键字段的命名为关联的表名加上“_id”,如:user_info_id,指向user_info表的主键。
4.索引的使用-对于经常用于查询条件或连接条件的字段,可以创建索引,提高查询性能。
-索引的选择要权衡查询性能和写入性能之间的平衡。
-不宜为每个字段都创建索引,避免索引过多导致性能下降。
5.约束的定义-定义必要的约束,保证数据的完整性和一致性。
-主键约束用于保证唯一性和数据完整性。
-外键约束用于保证数据的一致性和关联完整性。
6.SQL语句的书写规范-SQL关键字使用大写字母,表名和字段名使用小写字母。
-SQL语句按照功能和逻辑进行分行和缩进,提高可读性。
-使用注释清晰地描述SQL语句的功能和用途。
7.存储过程和函数的命名规范-存储过程和函数的命名要具有描述性,可以清楚地表示其功能和用途。
-使用有意义的英文单词或短语,避免使用拼音或缩写。
- 使用下划线(_)作为单词之间的分隔符,如:get_user_info。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1概述1.1目的软件研发数据库设计规范作为数据库设计的操作规范,详细描述了数据库设计过程及结果,用于指导系统设计人员正确理解和开展数据库设计。
1.2适用范围1.3术语定义DBMS:数据库管理系统,常用的商业DBMS有Oracle, SQL Server, DB2等。
数据库设计:数据库设计是在给定的应用场景下,构造适用的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。
概念数据模型:概念数据模型以实体-关系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。
它从用户的观点出发对信息进行建模,主要用于数据库概念级别的设计,独立于机器和各DBMS产品。
可以用Sybase PowerDesigner工具来建立概念数据模型(CDM)。
逻辑数据模型:将概念数据模型转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式。
可以用Sybase PowerDesigner工具直接建立逻辑数据模型(LDM),或者通过CDM转换得到。
物理数据模型:在逻辑数据模型基础上,根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式。
可以用Sybase PowerDesigner工具直接建立物理数据模型(PDM),或者通过CDM / LDM转换得到。
2数据库设计原则按阶段实施并形成该阶段的成果物一般符合3NF范式要求;兼顾规范与效率使用公司规定的数据库设计软件工具命名符合公司标准和项目标准3数据库设计目标规范性:一般符合3NF范式要求,减少冗余数据。
高效率:兼顾规范与效率,适当进行反范式化,满足应用系统的性能要求。
紧凑性:例如能用char(10)的就不要用char(20),提高存储的利用率和系统性能,但同时也要兼顾扩展性和可移植性。
易用性:数据库设计清晰易用,用户和开发人员均能容易地理解。
4设计过程规范数据库设计过程包括如下阶段:数据分析、概念设计、逻辑设计、物理设计、实施与运行维护。
如下图:4.1数据分析阶段在数据分析阶段(一般在项目的需求分析或者系统设计阶段进行),应注意搜集和分析数据相关的内容,并形成相关成果物,包括数据流图和数据字典等,以此作为数据库设计的基础和依据。
数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。
数据字典则对数据流图中的各种成分进行详细说明,作为数据流图的细节补充。
数据字典一般应包括对数据项,数据结构、数据存储和数据处理的说明。
数据流图示例:数据字典示例:1. 数据项条目数据项编号:D01-0014.2概念设计阶段4.2.1目的在数据分析的基础上,使用E-R模型技术,将现实世界中的客观对象抽象为实体和关系,形成概念数据模型(CDM)。
CDM可以从更高层次地理解系统、以及技术人员可用于和用户交流,和用户达成共识,所以必须完成这一阶段的工作。
CDM示例:4.2.2方法和过程使用Sybase PowerDesigner来编写CDM文档。
1、小型系统的设计可采取集中式模式设计法。
根据需求由一个统一机构或人员设计一个综合的全局模式,形成模型的单一视图。
它强调统一与一致,因此适合于小型或并不复杂的系统。
2、大型系统的设计可采取视图集成法(局部-集成方法)。
将一个单位分解成若干个局部应用,先对每个局部作局部模式设计,建立各个部分的视图即分E-R图,然后以各视图为基础进行集成。
集成过程需对视图作修正,然后合并成全局概念模式,这种方法能较好地反映需求,适用于大型系统的设计。
4.3逻辑设计阶段4.3.1目的将E-R模型转换DBMS支持的数据模型,包括关系模型、网状模型、层次模型、对象模型等等。
常用的DBMS是关系数据库,因此要转换为关系模型。
4.3.2方法和过程可以用Sybase PowerDesigner直接将CDM转换为LDM。
从理论上来说,转换过程一般有7个步骤:转换强实体转换弱实体转换1:1关系转换1:N关系转换M:N关系转换多值属性(Multi-Valued Attribute)转换n元关系(n-ary Relation)E-R模型和关系模型的映射如下:E-R模型关系模型实体类型关系1:1或1:N关系类型外键M:N关系类型两个外键n元关系类型n个外键简单属性属性复合属性简单属性的集合多值属性关系和外键关键属性主键/唯一键4.4物理设计阶段4.4.1目的基于给定的DBMS建立面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS 有关,而且还与操作系统和硬件有关。
4.4.2方法和过程可以用Sybase PowerDesigner直接将CDM/LDM转换为PDM。
对于关系模型来说,进行物理数据库设计主要包括:使用逻辑模型建立一系列的表(如果在CDM和LDM中使用中文,应在转换后使用英文);使用索引以提升性能;实施约束和安全限制;对数据进行分区和分布式处理等。
5概念数据模型规范5.1设计原则5.1.1易于理解1、实体、属性的命名要求中文名简明清晰,英文代码统一用大写,中间用下划线分隔。
2、对于同含义的实体或属性名,英文缩写要求一致。
3、命名应遵循公司标准或项目最佳实践,以增强人们对系统间信息交换和共享的理解。
4、需要在实体名中明确提示的信息可以在中文名后用括号标出。
5、各个实体类属性的排列顺序尽量遵循统一的规则,比如最前面是标识号,最后面是人员或日期等。
6、对于属性值在业务需求中有明确规定范围、列举值的,要通过约束予以反映。
7、实体间关系的命名也要遵循实体命名规则,因为这些关系可能在后续的设计中转化为一个实体。
8、对于具有强制校验的关系,要在设计工具中明确标出,复杂关系应配以文字叙述说明。
9、在多个表中冗余的字段应保持命名的一致性。
不同名称之间应有较明显的区别,避免混淆和误操作。
10、对于实体自身存在相互依赖的属性,需要建立递归联系。
11、适当使用扩展依赖来补充说明实体间的联系。
5.1.2完整性概念数据模型应包含实体、属性、关系三部分内容。
概念模型阶段的完整性原则主要是对这三要素的充分识别:实体:包括能够被清楚辨识的事物,如保险合同,被保人,操作员等;或者需要固化的流程类信息,如任务流(需要记录一次任务完成的时点和出入口);或者等待人工或系统处理的操作类信息,如保全申请、理赔申请等;或者计算类信息,例如针对一个理赔责任(实体1)的每个费用明细(实体2)的一次计算,此时计算结果需要作为一个实体保存下来。
关系:是实体之间的关联。
有一对一,一对多,多对一,多对多这几种。
对于需求中明确需要固化的联系多个实体的复杂关系,或者具有一定属性数据的关系,可以作为一个实体来处理,例如映射表和路由表。
当然,这种设计也可以放到物理数据模型设计环节来做。
属性:实体具有的属性。
一个实体可以由若干个属性描述。
例如投保人实体有一个客户号、客户姓名、出生日期等特性。
5.2CASE工具使用要求1、应使用Sybase PowerDesigner工具进行概念数据模型设计(CDM模型)。
常用的几种关联如下图所示:2、由于PowerDesigner自身的限制(如命名字段长度限制),不要求能够从CDM直接导出PDM,但应尽量细化填写工具中提供的输入域,以利于后续设计时对概念模型的理解。
3、层次布局清楚,线条间隔明显,尽量使用上下分层模式,避免网状图。
4、没有关系相联结的实体集尽量分到不同设计页面或项目,对于复杂的设计图,可以将其中相对集中的一部分抽离到单独页面(CDM),原页面中用椭圆形图示代表。
例如下图,其中自动、人工核保有相对集中的一组实体和关系,可以单独抽离出来。
6物理数据模型规范本章实际上包含逻辑数据模型和物理数据模型设计的两部分内容。
逻辑模型设计主要是将概念模型向关系型数据库转换并对其进行优化。
数据库的物理模型的设计主要指确定数据存放位置和存储结构,包括确定字段(数据类型、长度、精度)、关系、索引、日志、备份等数据的存储分配合存储结构,确定系统配置等工作。
6.1设计原则论述从逻辑模型和物理模型设计时需要遵循的规则。
6.1.1范式化在针对CDM图进行细化和模式分解时,一般需符合遵循3NF,消除数据冗余、更新异常、插入异常和删除异常。
但为了满足部分查询效率,通常可以将常用字段属性在部分表中作冗余,例如销售员工号和姓名通常需要在保单信息查询中同时显示到前台,那么姓名这个字段就可以在保单表中做冗余,但应用层应在更新这些信息的实体表的同时,也将含有这些信息的关联表对应字段同时更新,以保证这些冗余信息的准确性。
另外,数据库结构特性是静态的,应留有扩充余地,使系统容易改变。
6.1.2数据驱动这个原则通常与系统应用层设计结合考虑。
采用数据驱动而非硬编码的方式,许多策略变更和维护都会方便得多,大大增强系统的灵活性和扩展性。
这在保险系统中通常表现为各种参数表。
例如业务系统与外部系统的对账逻辑要访问外部数据源(文件、XML 文档、其他数据库等),不妨把相应的连接和路径信息存储在参数配置表里。
如果用户界面执行工作流之类的任务(发送通知书、打印发票、修改记录状态等),那么产生工作流的数据也可以存放在数据库里。
角色权限管理也可以通过数据驱动来完成。
事实上,如果过程是数据驱动的,将非常方便流程类需求变更的修改和实现。
6.1.3完整性1.使用主键实现实体的完整性。
主键尽量不要使用用户录入的值,而是系统生成的值,因为一旦录错,既影响新值进入数据库,也不方便修改旧值,通常只能删除整条记录,影响了用户响应效率和增加数据库维护负担。
2.使用外键实现参照完整性。
对于固有规则,从数据库层面来保证数据的完整性更加严谨,但要注意对于违背外键约束而不能进入数据库的数据要在系统实现时考虑如何返回详细的错误信息。
另外,需给必要的常用的外键建立索引。
3.使用约束和触发器实现用户定义完整性。
如非空、限定范围或者机构号等数据集检索。
4.使用查找控制数据完整性控制数据完整性的最佳方式就是限制用户的选择。
只要有可能都应该提供给用户一个清晰的键值列表供其选择。
这样将减少键入代码的错误和误解同时提供数据的一致性。
某些公共数据特别适合查找:国家代码、状态代码等。
6.1.4灵活性和效率1.适当建立视图,视图名称应以“v_”开头。
2.如果两个实体之间存在多对一关系,而且还有可能转化为多对多关系,那么最好一开始就设置成多对多关系。
否则从现有的多对一关系转变为多对多关系相对复杂。
3.对地址和电话考虑采用多个字段。
4.选择数字类型和文本类型的字段长度应尽量充足。
5.物理模型考虑对于大数据量的表,增加机构、日期等字段方便后续做数据分片或集群。
6.如果业务数据采用分库存储,不同库中的表名尽量不要重复,以便需要时建立跨库数据连接,方便访问SQL编写和移植。