怎样设计一个优秀的数据库
数据库设计的步骤和方法

数据库设计的步骤和方法数据库设计是建立和组织数据库结构的过程,它对于一个有效的、高性能的数据库系统至关重要。
好的数据库设计可以提高数据的灵活性、完整性和安全性,同时也能够提高系统的性能和可维护性。
本文将介绍数据库设计的主要步骤和方法。
第一步:需求分析在进行数据库设计之前,我们首先需要明确需求。
需求分析是一个非常重要的步骤,它涉及到与业务所有者和用户的沟通,以了解他们的需求和期望。
需要明确的事项包括数据的种类、数据的关系、业务流程以及系统的功能需求等。
通过全面而系统地分析需求,可以为后续的数据库设计提供明确的目标和方向。
第二步:概念设计概念设计是数据库设计的关键步骤之一。
在这一步骤中,我们将通过建立一个概念模型来描述系统中的实体、属性和它们之间的关系。
常用的概念建模工具有实体关系图(ER图)和统一建模语言(UML)。
通过使用这些工具,我们可以清晰地表示出数据之间的关系,并确保关键实体和属性能够被准确地捕捉和表示。
第三步:逻辑设计逻辑设计是将概念设计翻译为数据库管理系统(DBMS)可以理解的形式。
在这个阶段,我们需要确定如何将概念模型转化为关系数据库模型。
关系数据库模型使用关系表来组织和存储数据,表之间的关系通过主键和外键来实现。
在逻辑设计中,我们需要确定实体、属性和关系如何被映射到关系表、如何定义主键和外键,以及如何规范化数据以消除冗余和数据不一致性。
第四步:物理设计物理设计是将逻辑设计转化为实际数据库的过程。
在这一步骤中,我们需要选择合适的硬件和软件平台来支持数据库的实施。
同时,我们还需要确定数据库的存储结构、索引设计、安全性措施以及性能优化策略等。
物理设计的目标是确保数据库系统在实际运行中具有高性能、高可用性和高可靠性。
第五步:数据实施数据实施是将物理设计应用于实际数据库系统的过程。
在这一步骤中,我们需要创建数据库表、定义索引、设定存储过程、创建触发器以及设置数据备份和恢复机制。
此外,我们还需要进行数据迁移和数据清洗,确保源数据被正确地导入到数据库中,并保持数据的一致性和完整性。
数据库设计的技术和方法

数据库设计的技术和方法数据库设计是一项非常重要的任务,它涉及到了数据架构的规划、设计和实现等多个方面。
数据库设计技术和方法是一项需要深入研究和实践的工作,本文将介绍数据库设计的技术和方法,以及在实际应用中如何优化数据库设计。
一、数据库设计的主要原则在进行数据库设计之前,需要明确数据库设计的主要原则,以确保设计的完整性、准确性和可维护性。
1、数据规范化数据规范化是数据库设计的核心原则,它可以将数据分为多个表,减少数据冗余性和增强数据的完整性。
一般来说,进行规范化的方法包括将数据分解成多个粒度更小的表,消除冗余数据,并确保每个表都有一个清晰的主键。
2、数据完整性在数据库设计中确保数据的完整性是至关重要的,这意味着所有的数据都应该进行验证,以确保它们是准确的、合法的和一致的。
数据完整性的保证可以通过设计各种规则、约束和触发器来实现。
3、系统的可扩展性数据库应当具有可扩展性属性,这意味着应该在设计中预留可扩展和可变更性。
遵循这一原则可以使数据库在未来的升级与维护中更加方便。
二、数据库设计的技术1、概念结构设计概念结构设计是对数据的规划和定义,包括整个业务的对象、数据流和数据定义等。
其目的是理清业务流程,确定模型及其关系,为后续的物理设计提供思路。
2、逻辑结构设计逻辑结构设计是建立在概念结构设计之上,表现了业务的实现方式,包括数据库结构、实体、关系、数据表和数据类型等。
逻辑设计是基本结构设计宏观描述的过程。
3、物理结构设计物理结构设计是在逻辑结构设计基础上,将数据存储到物理设备上的过程。
包括如何存储数据、哪些数据用哪种数据存储方式,以及如何为在数据访问时提供最高的性能。
三、数据库设计的优化技巧1、优化表结构在数据库设计中,必须仔细分析建立的各个表之间的关系。
这可以通过优化表结构来实现。
可以从减小纵向关系数量、增加横向关联表的数量等方面入手,以减轻表的负载。
2、优化查询语句查询语句是在数据库中查找记录的主要方法。
数据库设计的六个步骤详解

数据库设计的六个步骤详解数据库设计是构建一个有效和高效的数据库系统的关键步骤。
它涉及到对数据的组织、存储和管理,以满足用户需求和系统要求。
在数据库设计过程中,有六个关键步骤需要仔细考虑和实施。
本文将详细解析这六个步骤,并分享对数据库设计的观点和理解。
一、需求分析需求分析是数据库设计的第一步,它的目的是明确用户的需求和系统的要求。
在这个阶段,与用户和系统利益相关者的沟通至关重要。
通过访谈、调研和文档分析等方法,收集和整理用户的需求。
这些需求将成为数据库设计的基础,并对数据库的结构、数据类型和功能等方面进行决策。
对于需求分析阶段,我认为重要的是确保理解用户的真实需求。
有时用户不能准确表达他们的需求,或者需求可能不一致,这就需要我们作为数据库设计师进行深入挖掘和澄清。
需求分析也要考虑系统的性能和扩展性等因素,以确保数据库设计能够满足未来的需求。
二、概念设计概念设计是数据库设计的第二步,它涉及到对数据的逻辑组织和高层次抽象。
在这个阶段,我们可以使用实体-关系模型(ERM)或其他概念模型来表示和描述数据的关系。
通过这样的建模方法,我们可以定义实体(entity)、属性(attribute)、关系(relationship)和约束(constraint)等概念,形成数据库的初始设计。
概念设计的重要性在于建立模型以实现对数据的有效管理和操作。
它还为后续的物理设计提供了依据。
我认为在概念设计阶段,关键是要抽象和简化数据模型,使其能够准确地反映问题域,并易于理解和维护。
三、逻辑设计逻辑设计是数据库设计的第三步,它将概念设计转化为数据库管理系统(DBMS)可以实现的逻辑模式。
在这个阶段,我们需要选择适当的数据模型和标准,如层次模型、网络模型或关系模型。
我们将概念设计的模型转化为选定模型的逻辑表示。
在逻辑设计中,我们需要定义实体、属性、关系和约束等元素,以及适当的存储结构和查询方式。
这涉及到对数据的规范化、索引设计和查询优化等方面的决策。
数据库设计的关键要素

数据库设计的关键要素数据库设计是指根据特定的需求和目标,规划和设计数据库模式的过程。
一个优秀的数据库设计能够实现高效的数据存储和管理,同时满足对数据的准确性、一致性和安全性的要求。
在进行数据库设计时,有几个关键要素需要考虑。
一、需求分析在进行数据库设计之前,首先需要进行需求分析,明确系统的功能和业务需求。
通过与用户的沟通和了解,收集并理解用户的需求,从而确定数据库设计的目标和约束条件。
需求分析阶段的准确性和完整性直接影响数据库设计的质量。
二、数据模型选择数据模型是数据库设计的基础,不同的数据模型适用于不同的应用场景。
常见的数据模型有层次模型、网状模型和关系模型等。
在选择数据模型时,需要考虑数据库的结构特点、查询需求和操作复杂度等因素。
目前,关系模型是最常用的数据模型,基于关系模型的数据库设计具有可扩展性和灵活性。
三、实体关系建模在数据库设计中,实体关系建模是一项重要的任务。
通过对实体和实体之间的关系进行建模,可以将现实世界中的概念转化为数据库模型中的表和关系。
在实体关系建模中,需要确定实体的属性和关系的类型,为数据库设计提供清晰的结构。
四、范式设计范式设计是数据库设计的一个重要环节。
通过将数据组织到确定的范式中,可以确保数据库中的数据存储合理、有序且无冗余。
常见的范式有第一范式、第二范式和第三范式等。
范式设计需要细致地分解数据,并消除冗余的部分,以提高数据库的性能和可靠性。
五、索引设计索引在数据库设计中起着重要的作用,可以提高数据检索的效率。
合理的索引设计能够加快查询速度,但过多或不合理的索引设计反而会导致性能下降。
索引设计需要根据查询需求和数据量大小来考虑,选择合适的字段作为索引,以提高数据库的查询效率。
六、安全性设计数据库中存储着重要的数据,因此安全性设计是数据库设计中的重要一环。
安全性设计包括对数据的访问权限控制、用户身份验证和数据加密等方面。
合理的安全性设计可以保护数据库免受非法访问、数据泄露或损坏的影响。
数据库设计思路

数据库设计思路数据库设计是构建一个有效和可靠的数据库系统的关键步骤。
它涉及到定义数据模型、确定实体和属性、建立关系和约束等过程。
在数据库设计中,我们需要考虑数据的完整性、一致性和性能等因素。
下面将介绍一些数据库设计的思路和方法。
1. 需求分析:在进行数据库设计之前,首先需要进行需求分析,明确系统的功能和需求。
通过与用户沟通和了解,确定数据的类型、关系和业务规则等。
这有助于确保数据库模型与实际需求相匹配。
2. 数据模型选择:根据需求分析的结果,选择适合的数据模型。
常用的数据模型包括层次模型、网络模型、关系模型和面向对象模型等。
其中,关系模型是最常用和广泛应用的数据模型,具有简单、灵活和易于理解的特点。
3. 实体和属性定义:在数据库设计中,实体是指现实世界中具有独立和唯一标识的事物。
属性是实体的特征和描述。
在定义实体和属性时,需要考虑实体之间的关系和属性的类型、长度、约束等。
4. 关系建立:关系是不同实体之间的联系和依赖。
在数据库设计中,通过主键和外键来建立实体之间的关系。
主键是唯一标识实体的属性,而外键是关联其他实体的属性。
通过定义主键和外键,可以实现数据的一致性和完整性。
5. 索引和优化:索引是提高数据库查询性能的重要手段。
在数据库设计中,可以根据查询的需求和频率来选择合适的索引策略。
同时,还可以通过优化数据库的物理结构和查询语句,提高数据库的性能和效率。
6. 安全性和权限控制:在数据库设计中,安全性是一个重要的考虑因素。
通过合理的权限控制和安全策略,可以保护数据的机密性和完整性。
同时,还可以通过备份和恢复策略,保证数据的可靠性和可恢复性。
7. 数据迁移和扩展:在数据库设计中,需要考虑数据的迁移和扩展问题。
当系统需要升级或迁移时,需要确保数据的平滑迁移和无损失。
同时,还需要考虑系统的扩展性和容量规划,以应对未来的增长需求。
数据库设计是一个复杂和关键的过程,需要综合考虑多个因素。
通过合理的需求分析、数据模型选择、实体和属性定义、关系建立、索引和优化、安全性和权限控制、数据迁移和扩展等步骤,可以构建一个高效和可靠的数据库系统。
数据库的设计方法

数据库的设计方法数据库的设计方法是指在设计和构建数据库系统时所采用的一系列策略和步骤。
数据库的设计是数据库系统开发的关键环节,合理的设计可以提高数据库系统的性能、可靠性和可维护性。
下面将详细介绍数据库的设计方法。
1.需求分析:在数据库设计之前,首先需要进行需求分析。
需求分析是通过与用户沟通、收集和分析用户需求,确定数据库系统的功能、性能、安全性等方面的需求。
需求分析的目的是为了明确数据库系统的要求,为后续的数据库设计提供依据。
2.概念设计:概念设计是数据库设计的第一阶段,其主要任务是通过对现实世界的概念进行建模,将现实世界中的实体和实体之间的关系转化为数据库中的表和表之间的关系。
概念设计的产物是一个概念模型,一般使用实体关系图(ER图)表示。
ER图由实体、属性、关系和联系等元素组成,通过对现实世界的事物进行抽象和建模,形成一个清晰的、可理解的概念模型。
3.逻辑设计:逻辑设计是在概念设计的基础上,对数据库进行进一步的规范化和优化。
逻辑设计的目的是将概念模型转化为数据库管理系统所支持的数据模型,如关系模型、层次模型、网状模型等。
在逻辑设计过程中,需要对实体、属性、关系和联系进行详细的定义和规范,确定表的结构、属性和关系等。
逻辑设计一般使用ER模型或关系模型。
4.物理设计:物理设计是将逻辑设计转化为实际的数据库系统的设计。
物理设计包括存储结构设计、索引设计、安全性设计等。
存储结构设计是决定如何将数据存储在磁盘上,如选择何种存储结构、字段的存储方式等。
索引设计是为了提高查询的性能,通过选择适当的索引策略和建立正确的索引来加速查询操作。
安全性设计是为了保护数据库中的数据,通过设置用户权限、加密等方式来保障数据的安全。
5.实施与测试:数据库设计完成后,需要进行实施和测试。
实施是将设计好的数据库系统部署到实际的服务器中,包括数据库的创建、表的定义、索引的建立等。
测试是为了验证数据库系统是否满足设计和需求的要求,包括功能测试、性能测试、安全性测试等。
如何进行数据库设计

如何进行数据库设计数据库是各类信息系统的核心,是企业信息化建设的重要组成部分。
而数据库设计是决定数据存储方式和使用方式的关键步骤。
它直接影响着应用系统的运行性能、安全性、易用性等多方面因素。
因此,开展好数据库的设计工作,对保障应用的高效、稳定运行,提高信息系统的管理水平和效率,具有重要的现实意义。
一、需求分析在进行数据库设计之前,需要分析业务场景和实现目标,明确数据库的主要功能和数据业务流程。
通过调查了解业务需求,分析各类数据资源的来源、输入、输出、变化、注销等特征,进一步明确数据存储、管理、分析和使用的需求。
在需求分析的基础上,可以确定数据库的逻辑结构和物理结构。
二、逻辑设计在需求分析和规划的基础上,对创建的数据实体、关系和性质进行建模,形成一个概念视图。
这个过程也被称为逻辑设计,在逻辑设计中需要考虑以下几个方面:1. 数据实体的定义和属性。
在概念设计过程中,要明确数据库中的各种实体,例如客户、订单、产品等。
每个实体需要定义属性,例如客户实体可以包含ID、姓名、性别、生日、联系方式等属性。
2. 实体间关系的定义。
在数据库中,各种实体之间的关系,例如一对多、多对一、多对多等关系需要定义。
例如,订单和客户是一对多的关系,一个客户可以拥有多个订单。
3. 数据库规则和完整性规则的定义。
例如,数据值不能重复、数据必须在某个范围内、数据不能为空等。
4. 数据存储格式的定义。
例如,字段大小、数据类型、数据精度、日期格式、货币格式等。
三、物理设计逻辑设计定义了数据库的概念结构,物理设计则定义了数据库的储存结构。
在物理设计中需要考虑以下几个方面:1. 数据库存储结构的选择。
可以选择关系型数据库来实现,也可以选择面向对象数据库、文件系统等。
如果选择关系型数据库,还需要选择具体的类型,包括MySQL、Oracle、SQL Server等。
2. 数据存储的分配。
需要考虑数据的分配方式、存储时的物理布局和所需存储空间。
数据库设计的六个步骤

数据库设计的六个步骤概述数据库设计是构建一个可靠、高效、可扩展的数据库系统的基础工作。
它是根据业务需求,将数据按照特定规则组织和存储的过程。
本文将介绍数据库设计的六个步骤,帮助读者全面理解数据库设计的过程。
步骤一:需求分析在数据库设计的第一步骤中,我们需要明确业务需求,了解用户的具体需求和预期功能。
这一步骤的关键是与用户和利益相关者进行充分的沟通,确保对需求有全面的了解。
需求收集•与用户和利益相关者进行会议、访谈等形式的沟通,详细了解他们的需求和期望。
•收集用户提供的文档、报告和现有系统的信息,以便更好地理解业务流程和数据要求。
•利用问卷调查等方式,获取用户的反馈和建议。
需求分析•对收集到的需求进行分析,理解用户的主要关注点和业务流程。
•确定系统的功能需求,包括数据的输入、处理和输出等方面。
•确定系统的性能需求,如并发用户数、数据处理速度等。
需求文档•撰写需求文档,详细描述用户需求和系统功能。
•使用图表、流程图等工具,清晰地展示业务流程和数据要求。
步骤二:概念设计在数据库设计的第二步骤中,我们需要进行概念设计,即将需求转化为数据库模型。
这一步骤的关键是确定实体、属性和关系,建立起系统的基本框架。
实体-属性-关系模型•根据需求文档,识别出系统中的实体,如用户、产品、订单等。
•为每个实体确定属性,如用户的姓名、年龄、性别等。
•确定实体之间的关系,如一对多、多对多等。
实体关系图•使用实体关系图(E-R图)来可视化数据库模型。
•在E-R图中,用矩形表示实体,用菱形表示关系,用椭圆形表示属性。
数据字典•撰写数据字典,详细描述每个实体和属性的含义和约束条件。
•数据字典可以作为开发人员的参考,确保开发过程中的一致性和准确性。
步骤三:逻辑设计在数据库设计的第三步骤中,我们需要进行逻辑设计,即将概念模型转化为数据库表结构。
这一步骤的关键是确定表的结构和约束条件,确保数据的完整性和一致性。
数据库范式•使用数据库范式来规范表的设计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
怎样设计一个优秀的数据库一个成功的管理系统,是由:[50% 的业务+ 50% 的软件] 所组成,而50% 的成功软件又有[25% 的数据库+ 25% 的程序] 所组成,数据库设计的好坏是一个关键。
如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。
有关数据库设计的材料汗牛充栋,大学学位课程里也有专门的讲述。
不过,就如我们反复强调的那样,再好的老师也比不过经验的教诲。
所以我归纳历年来所走的弯路及体会,并在网上找了些对数据库设计颇有造诣的专业人士给大家传授一些设计数据库的技巧和经验。
精选了其中的60 个最佳技巧,并把这些技巧编写成了本文,为了方便索引其内容划分为 5 个部分:∙第 1 部分- 设计数据库之前:这一部分罗列了12 个基本技巧,包括命名规范和明确业务需求等。
∙第 2 部分- 设计数据库表:总共24 个指南性技巧,涵盖表内字段设计以及应该避免的常见问题等。
∙第 3 部分- 选择键:怎么选择键呢?这里有10 个技巧专门涉及系统生成的主键的正确用法,还有何时以及如何索引字段以获得最佳性能等。
∙第 4 部分- 保证数据完整性:讨论如何保持数据库的清晰和健壮,如何把有害数据降低到最小程度。
∙第 5 部分- 各种小技巧:不包括在以上 4 个部分中的其他技巧,五花八门,有了它们希望你的数据库开发工作会更轻松一些。
第 1 部分- 设计数据库之前考察现有环境在设计一个新数据库时,你不但应该仔细研究业务需求而且还要考察现有的系统。
大多数数据库项目都不是从头开始建立的;通常,机构内总会存在用来满足特定需求的现有系统(可能没有实现自动计算)。
显然,现有系统并不完美,否则你就不必再建立新系统了。
但是对旧系统的研究可以让你发现一些可能会忽略的细微问题。
一般来说,考察现有系统对你绝对有好处。
定义标准的对象命名规范一定要定义数据库对象的命名规范。
对数据库表来说,从项目一开始就要确定表名是采用复数还是单数形式。
此外还要给表的别名定义简单规则(比方说,如果表名是一个单词,别名就取单词的前 4 个字母;如果表名是两个单词,就各取两个单词的前两个字母组成 4 个字母长的别名;如果表的名字由 3 个单词组成,你不妨从头两个单词中各取一个然后从最后一个单词中再取出两个字母,结果还是组成 4 字母长的别名,其余依次类推)对工作用表来说,表名可以加上前缀WORK_ 后面附上采用该表的应用程序的名字。
表内的列[字段]要针对键采用一整套设计规则。
比如,如果键是数字类型,你可以用_N 作为后缀;如果是字符类型则可以采用_C 后缀。
对列[字段]名应该采用标准的前缀和后缀。
再如,假如你的表里有好多"money"字段,你不妨给每个列[字段]增加一个_M 后缀。
还有,日期列[字段]最好以D_ 作为名字打头。
检查表名、报表名和查询名之间的命名规范。
你可能会很快就被这些不同的数据库要素的名称搞糊涂了。
假如你坚持统一地命名这些数据库的不同组成部分,至少你应该在这些对象名字的开头用Table、Query 或者Report 等前缀加以区别。
如果采用了Microsoft Access,你可以用qry、rpt、tbl 和mod 等符号来标识对象(比如tbl_Employees)。
我在和SQL Server 打交道的时候还用过tbl 来索引表,但我用sp_company (现在用sp_feft_)标识存储过程,因为在有的时候如果我发现了更好的处理办法往往会保存好几个拷贝。
我在实现SQL Server 2000 时用udf_ (或者类似的标记)标识我编写的函数。
工欲善其事,必先利其器采用理想的数据库设计工具,比如:SyBase 公司的PowerDesign,她支持PB、VB、Delphe 等语言,通过ODBC 可以连接市面上流行的30 多个数据库,包括dBase、FoxPro、VFP、SQL Server 等,今后有机会我将着重介绍PowerDesign 的使用。
获取数据模式资源手册正在寻求示例模式的人可以阅读《数据模式资源手册》一书,该书由Len Silverston、W. H. Inmon 和Kent Graziano 编写,是一本值得拥有的最佳数据建模图书。
该书包括的章节涵盖多种数据领域,比如人员、机构和工作效能等。
其他的你还可以参考:萨师煊王珊著数据库系统概论畅想未来,但不可忘了过去的教训我发现询问用户如何看待未来需求变化非常有用。
这样做可以达到两个目的:首先,你可以清楚地了解应用设计在哪个地方应该更具灵活性以及如何避免性能瓶颈;其次,你知道发生事先没有确定的需求变更时用户将和你一样感到吃惊。
一定要记住过去的经验教训!我们开发人员还应该通过分享自己的体会和经验互相帮助。
即使用户认为他们再也不需要什么支持了,我们也应该对他们进行这方面的教育,我们都曾经面临过这样的时刻"当初要是这么做了该多好.."。
在物理实践之前进行逻辑设计在深入物理设计之前要先进行逻辑设计。
随着大量的CASE 工具不断涌现出来,你的设计也可以达到相当高的逻辑水准,你通常可以从整体上更好地了解数据库设计所需要的方方面面。
了解你的业务在你百分百地确定系统从客户角度满足其需求之前不要在你的ER(实体关系)模式中加入哪怕一个数据表(怎么,你还没有模式?那请你参看技巧9)。
了解你的企业业务可以在以后的开发阶段节约大量的时间。
一旦你明确了业务需求,你就可以自己做出许多决策了。
一旦你认为你已经明确了业务内容,你最好同客户进行一次系统的交流。
采用客户的术语并且向他们解释你所想到的和你所听到的。
同时还应该用可能、将会和必须等词汇表达出系统的关系基数。
这样你就可以让你的客户纠正你自己的理解然后做好下一步的ER 设计。
创建数据字典和ER 图表一定要花点时间创建ER 图表和数据字典。
其中至少应该包含每个字段的数据类型和在每个表内的主外键。
创建ER 图表和数据字典确实有点费时但对其他开发人员要了解整个设计却是完全必要的。
越早创建越能有助于避免今后面临的可能混乱,从而可以让任何了解数据库的人都明确如何从数据库中获得数据。
有一份诸如ER 图表等最新文档其重要性如何强调都不过分,这对表明表之间关系很有用,而数据字典则说明了每个字段的用途以及任何可能存在的别名。
对SQL 表达式的文档化来说这是完全必要的。
创建模式一张图表胜过千言万语:开发人员不仅要阅读和实现它,而且还要用它来帮助自己和用户对话。
模式有助于提高协作效能,这样在先期的数据库设计中几乎不可能出现大的问题。
模式不必弄的很复杂;甚至可以简单到手写在一张纸上就可以了。
只是要保证其上的逻辑关系今后能产生效益。
从输入输出下手在定义数据库表和字段需求(输入)时,首先应检查现有的或者已经设计出的报表、查询和视图(输出)以决定为了支持这些输出哪些是必要的表和字段。
举个简单的例子:假如客户需要一个报表按照邮政编码排序、分段和求和,你要保证其中包括了单独的邮政编码字段而不要把邮政编码糅进地址字段里。
报表技巧要了解用户通常是如何报告数据的:批处理还是在线提交报表?时间间隔是每天、每周、每月、每个季度还是每年?如果需要的话还可以考虑创建总结表。
系统生成的主键在报表中很难管理。
用户在具有系统生成主键的表内用副键进行检索往往会返回许多重复数据。
这样的检索性能比较低而且容易引起混乱。
理解客户需求看起来这应该是显而易见的事,但需求就是来自客户(这里要从内部和外部客户的角度考虑)。
不要依赖用户写下来的需求,真正的需求在客户的脑袋里。
你要让客户解释其需求,而且随着开发的继续,还要经常询问客户保证其需求仍然在开发的目的之中。
一个不变的真理是:"只有我看见了我才知道我想要的是什么"必然会导致大量的返工,因为数据库没有达到客户从来没有写下来的需求标准。
而更糟的是你对他们需求的解释只属于你自己,而且可能是完全错误的。
第 2 部分- 设计表和字段检查各种变化我在设计数据库的时候会考虑到哪些数据字段将来可能会发生变更。
比方说,姓氏就是如此(注意是西方人的姓氏,比如女性结婚后从夫姓等)。
所以,在建立系统存储客户信息时,我倾向于在单独的一个数据表里存储姓氏字段,而且还附加起始日和终止日等字段,这样就可以跟踪这一数据条目的变化。
采用有意义的字段名有一回我参加开发过一个项目,其中有从其他程序员那里继承的程序,那个程序员喜欢用屏幕上显示数据指示用语命名字段,这也不赖,但不幸的是,她还喜欢用一些奇怪的命名法,其命名采用了匈牙利命名和控制序号的组合形式,比如cbo1、txt2、txt2_b 等等。
除非你在使用只面向你的缩写字段名的系统,否则请尽可能地把字段描述的清楚些。
当然,也别做过头了,比如Customer_Shipping_Address_Street_Line_1,虽然很富有说明性,但没人愿意键入这么长的名字,具体尺度就在你的把握中。
采用前缀命名如果多个表里有好多同一类型的字段(比如FirstName),你不妨用特定表的前缀(比如CusLastName)来帮助你标识字段。
时效性数据应包括"最近更新日期/时间"字段。
时间标记对查找数据问题的原因、按日期重新处理/重载数据和清除旧数据特别有用。
标准化和数据驱动数据的标准化不仅方便了自己而且也方便了其他人。
比方说,假如你的用户界面要访问外部数据源(文件、XML 文档、其他数据库等),你不妨把相应的连接和路径信息存储在用户界面支持表里。
还有,如果用户界面执行工作流之类的任务(发送邮件、打印信笺、修改记录状态等),那么产生工作流的数据也可以存放在数据库里。
预先安排总需要付出努力,但如果这些过程采用数据驱动而非硬编码的方式,那么策略变更和维护都会方便得多。
事实上,如果过程是数据驱动的,你就可以把相当大的责任推给用户,由用户来维护自己的工作流过程。
标准化不能过头对那些不熟悉标准化一词(normalization)的人而言,标准化可以保证表内的字段都是最基础的要素,而这一措施有助于消除数据库中的数据冗余。
标准化有好几种形式,但Third Normal Form(3NF)通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。
简单来说,3NF 规定:∙表内的每一个值都只能被表达一次。
∙表内的每一行都应该被唯一的标识(有唯一键)。
∙表内不应该存储依赖于其他键的非键信息。
遵守3NF 标准的数据库具有以下特点:有一组表专门存放通过键连接起来的关联数据。
比方说,某个存放客户及其有关定单的3NF 数据库就可能有两个表:Customer 和Order。
Order 表不包含定单关联客户的任何信息,但表内会存放一个键值,该键指向Customer 表里包含该客户信息的那一行。