选择合适的数据库论文写作有哪些作用?

数据库设计方法、规范和技巧

一、数据库设计流程

数据库技术是信息资源管理最有效的手段。数据库设计是指构建一个最优的数据库模式,为给定的应用环境建立一个数据库及其应用系统,有效地存储数据,满足用户的信息和处理要求。

在数据库设计阶段,集成用户的应用需求(现实世界需求),在概念设计阶段,形成独立于机器特性和DBMS产品的概念模型(信息世界模型),用E-R图描述。在逻辑设计阶段,将E-R图转化为特定数据库产品支持的数据模型,如关系模型,形成数据库逻辑模型。然后根据用户的处理需求和安全考虑,在基本表的基础上建立必要的视图,形成数据的外部模式。在物理设计阶段,根据DBMS的特点和处理的需要,安排物理存储,设计索引,形成数据库中的模式。

1.需求分析阶段

需求收集和分析产生由数据字典描述的数据需求(以及由数据流图描述的处理需求)。

需求分析的重点是调查、收集和分析用户在数据管理中的信息需求、处理需求、安全性和完整性需求。

需求分析的方法:调查组织,调查各部门的业务活动,协助用户明确对新系统的需求,确定新系统的边界。

常用的调查方法有:做作业、召开调查会、请人介绍、提问、设计问卷让用户填写、查阅记录。

分析和表达用户需求的方法主要有自顶向下和自底向上两种。自顶向下结构化方法(SA)方法从顶层系统组织入手,通过逐层分解来分析系统,并用数据流图和数据字典来描述每一层。

数据流图表达了数据和处理之间的关系。系统中的数据通过数据字典(DD)来描述。

数据字典是各种数据描述的集合,是关于数据库中数据的描述,也就是元数据,而不是数据本身。一个数据字典通常包括数据项、数据结构、数据流、数据存储和处理五个部分(至少应该包括每个字段的数据类型和每个表中的主键和外键)。

数据项描述= {数据项名称,数据项含义描述,别名,数据类型,长度,

取值范围、取值意义以及与其他数据项的逻辑关系}

数据结构描述= {数据结构名称,含义描述,组成:{数据项或数据结构}}

数据流描述= {数据流名称,描述,数据流来源,数据流目的地,

构成:{数据结构},平均流量,峰值流量}

数据存储描述= {数据存储名称,描述,编号,流入数据流,流出数据流,

组成:{数据结构},数据量,访问方法}

流程描述= {流程名称,描述,输入:{数据流},输出:{数据流},

处理:{简要描述}}

2.概念结构设计阶段

通过对用户需求的综合、归纳和抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。

概念模型用于对信息世界进行建模。概念模型不依赖于DBMS支持的数据模型。概念模型可以转换成计算机上的DBMS支持的特定数据模型。

概念模型的特征:

(1)具有很强的语义表达能力,可以方便、直接地表达应用中的各种语义知识。

(2)应该简单明了,便于用户理解,是用户与数据库设计者交流的语言。

概念模型设计的一种常用方法是IDEF1X方法,这是一种将实体-关系方法应用于语义数据模型建立系统信息模型的语义建模技术。

使用IDEF1X方法创建E-R模型的步骤如下:

2.1步零初始化项目

这一阶段的任务是确定建模目标,制定建模计划,组织建模团队,收集源材料,从目的和范围的描述中制定约束和规范。收集素材是这个阶段的重点。通过调查观察结果、业务流程、原系统的输入输出、各种报表,收集原始数据,形成基础数据表。

2.2步骤1-定义实体

实体集的所有成员都有一组彼此相同的特征和属性,大多数实体都可以从收集的源材料-基础数据表中直接或间接识别出来。根据源物料名称列表中表示对象的术语和以“代码”结尾的术语,如客户代码、代理商代码、产品代码等,识别其名词所代表的实体,初步找出潜在的实体,形成初步的实体列表。

2.3第二步-定义连接

IDEF1X模型中只允许二进制连接,n进制连接必须定义为n个二进制连接。根据实际业务需求和规则,利用实体联系矩阵识别实体间的二元关系,然后根据实际情况确定连接关系的势、关系名称和描述,确定关系类型,是已识别关系、未标记关系(强制或可选)还是不确定关系、已分类关系。如果子实体的每个实例都需要通过与父实体的关系来标识,则为标识关系,否则为非标识关系。在非标识关系中,如果子实体的每个实例只与一个父实体相关联,则它是强制的,否则它不是强制的。如果父实体和子实体表示相同的真实对象,那么它们被分类。

2.4步骤3-定义代码

通过引入交叉实体去除前一阶段产生的不确定关系,然后从非交叉实体和独立实体中识别候选代码的属性,唯一标识每个实体的实例,再从候选代码中确定主代码。为了确定主体代码和关系的有效性,通过非空规则和非多值规则来保证,即实体实例的一个属性不能为空,也不能同时有多个值。找出误识别的确定关系,进一步分解实体,最终构建IDEF1X模型的关键基础视图(KB图)。

2.5步骤4-定义属性

从源数据表中提取描述性名词,开发属性表,确定属性的所有者。定义非主键属性,并检查属性的非空和非多值规则。此外,还需要检查完全依赖函数和非传递依赖的规则,以确保一个非主代码属性必须依赖于主代码、整个主代码且仅依赖于主代码。这样就得到改进的IDEF1X模型的全属性视图,它至少符合关系理论的第三范式。

2.6步骤5-定义其他对象和规则

定义数据类型、长度、精度、非空值、默认值、约束规则等。属性的。定义对象信息,如触发器、存储过程、视图、角色、同义词和序列。

3.逻辑结构设计阶段

将概念结构转换成DBMS支持的数据模型(如关系模型),并对其进行优化。在设计逻辑结构时,要选择最适合描述和表达相应概念结构的数据模型,进而选择最适合的DBMS。

将E-R图转换为关系模型实际上是将实体、实体的属性以及实体之间的关系转换为关系模型。这种转换通常遵循以下原则:

1)实体类型转换成关系模型。实体的属性就是关系的属性。实体的代码就是关系的代码。

2)一个m:n连接被转换成一个关系模式。与连接相关的实体的代码和连接本身的属性被转换成关系的属性。关系代码是实体代码的组合。

3)1:n连接可以转化为独立的关系模式,也可以在n端与对应的关系模式合并。如果转换为独立的关系模式,则关系所连接的实体的代码和关系本身的属性转换为关系的属性,关系的代码为N端实体的代码。

4)一个1:1连接可以转换成一个独立的关系模式,也可以在任一端与对应的关系模式合并。

5)三个或更多实体之间的多元关系被转换成关系模型。用多元连接连接的实体的代码和连接本身的属性被转换成关系的属性。关系代码是实体代码的组合。

6)同一实体集内实体之间的连接,即自连接,也可以按照上述三种情况处理:1:1,1:n,m: n。

7)代码相同的关系模式可以合并。

为了进一步提高数据库应用系统的性能,通常要在规范化理论的指导下,对数据模型的结构进行适当的修改和调整,这就是对数据模型的优化。确定数据依赖关系。消除冗余连接。确定每个关系模型属于哪个范式。确定是合并还是分解它们。一般来说,这种关系被分解成3NF个标准,即:

表中的每个值只能表示一次。

表中的每一行都应该唯一标识(用唯一的键)。

依赖于其他键的非键信息不应存储在表中。

4.数据库物理设计阶段

为逻辑数据模型选择最适合应用环境的物理结构(包括存储结构和访问方法)。根据数据库管理系统的特点和处理的需要,进行物理存储安排和索引设计,形成数据库中的模式。

5.数据库实施阶段

利用DBMS提供的数据语言(如SQL)及其宿主语言(如C),根据逻辑设计和物理设计的结果建立数据库,编译调试应用程序,数据入库并投入试运行。数据库实现主要包括以下任务:用DDL定义数据库结构,组织数据存储,编译调试应用程序,数据库试运行。6.数据库操作和维护阶段。

数据库应用系统经过试运行后可以投入正式运行。数据库系统在运行期间必须不断评估、调整和修改。包括:数据库转储与恢复、数据库安全、完整性控制、数据库性能监督、分析与改进、数据库重组与重构。

建模工具的使用

目前有很多加速数据库设计的数据库辅助工具(CASE tools),如Rational公司的Rational Rose,CA公司的Erwin和Bpwin,Sybase公司的PowerDesigner,Oracle公司的Oracle Designer。

ERwin主要用于建立数据库的概念模型和物理模型。它可以用图形化的方式描述实体、关系以及实体的属性。ERwin支持IDEF1X方法。通过使用ERwin建模工具自动生成、变更和分析IDEF1X模型,不仅可以得到优秀的业务功能和数据需求模型,还可以实现从IDEF1X模型到数据库物理设计的转换。ERwin工具绘制的模型对应逻辑模型和物理模型。在逻辑模型中,IDEF1X工具箱可以方便地以图形化的方式建立和绘制实体关系和实体属性。在物理模型中,ERwin可以定义相应的表和列,并可以自动将其转换为适合各种数据库管理系统的类型。

设计人员可以根据需要选择相应的数据库设计建模工具。例如,需求分析完成后,设计人员可以使用Erwin绘制er图,将ER图转换为关系数据模型,并生成数据库结构。画出数据流图,生成应用程序。

二、数据库设计技巧

1.设计数据库之前(需求分析阶段)

1)了解客户需求,问用户如何看待未来的需求变化。让客户解释他们的需求,随着开发的继续,经常询问客户,以确保他们的需求仍然在开发的目的中。

2)了解企业的业务,可以在后期发展阶段节省大量时间。

3)注意输入输出。

在定义数据库表和字段要求(输入)时,您应该首先检查现有的或设计的报告、查询和视图(输出),以确定哪些表和字段是支持这些输出所必需的。

例如,如果客户需要一个按邮政编码排序、细分和汇总的报表,您应该确保它包含一个单独的邮政编码字段,而不是将邮政编码放入地址字段。

4)创建数据字典和ER图。

ER图表和数据字典可以让任何了解数据库的人清楚如何从数据库中获取数据。ER图表对于显示表之间的关系非常有用,而数据字典显示每个字段的用途和任何可能的别名。这对于SQL表达式的文档来说是绝对必要的。

5)定义标准的对象命名规范。

数据库中各种对象的命名必须标准化。

2.表和字段的设计(数据库逻辑设计)

表格设计原则

1)标准化和规范化

数据标准化有助于消除数据库中的数据冗余。标准化有几种形式,但第三范式(3NF)通常被认为是性能、可伸缩性和数据完整性之间的最佳平衡。简单来说,符合3NF标准的数据库的表设计原则是:“一个地方一个事实”,即一个表只包含自己的基本属性,当不是自己的属性时需要分解。表之间的关系由外键连接。它有以下几个特点:有一组专门存储相关数据的表,用键连接。

例如,存储客户及其相关订单的3NF数据库可能有两个表:customer和order。Order表不包含与订单相关联的客户的任何信息,但是表中将存储一个键值,该键值指向Customer表中包含客户信息的行。

其实为了效率,有时候不规范表格是必要的。

2)数据驱动

用数据驱动代替硬编码,很多策略修改和维护会方便很多,大大增强了系统的灵活性和扩展性。

例如,如果用户界面想要访问外部数据源(文件、XML文档、其他数据库等)。),建议在用户界面支持表中存储相应的连接和路径信息。此外,如果用户界面执行工作流(发送邮件、打印信纸、修改记录状态等)等任务。),那么生成工作流的数据也可以存储在数据库中。角色权限管理也可以通过数据驱动来完成。事实上,如果流程是数据驱动的,您可以将相当大的责任放在用户身上,他们将维护自己的工作流程。

3)考虑各种变化

设计数据库时,要考虑哪些数据字段将来可能会发生变化。比如姓氏是这样的(注意西方人的姓氏,比如女性婚后随夫姓等。).因此,在建立系统存储客户信息时,将姓氏字段存储在单独的数据表中,并添加开始日期和结束日期等字段,以便可以跟踪该数据项的变化。

现场设计原则

4)应该添加到每个表中的三个有用字段。

DRecordCreationDate在VB中默认为Now(),在SQL Server中默认为GETDATE()。

SRecordCreator,默认为SQL Server下的NOT NULL默认用户。

NRecordVersion,记录的版本标记;准确解释记录中出现空数据或缺失数据的原因很有帮助。

5)对地址和电话号码使用多个字段。

仅仅用一行来描述街道地址是不够的。Address_Line1、Address_Line2和Address_Line3可以提供更大的灵活性。此外,电话号码和电子邮件地址应该有自己的数据表,有自己的类型和标签类别。

6)使用角色实体定义属于某个类别的列。

当需要定义属于特定类别或具有特定角色的事物时,可以使用角色实体来创建特定的时间关联,从而实现自文档化。

例如,使用PERSON实体和PERSON_TYPE实体来描述人。例如,当John Smith,工程师晋升为John Smith,董事,并最终爬到John Smith,CIO的高位时,您所要做的就是更改两个表PERSON和PERSON_TYPE之间的关系的键值,并添加一个日期/时间字段以了解更改发生的时间。这样,PERSON_TYPE表就包含了所有可能的人员类型,比如助理、工程师、主管、CIO或CEO。另一种替代方法是更改人员记录以反映新头衔的变化,但无法及时跟踪个人所在位置的具体时间。

7)选择尽可能多的数字类型和文本类型。

在SQL中使用smallint和tinyint类型时要特别小心。例如,如果要查看月总销售额,而“合计”字段类型很小,那么如果合计超过32,767美元,就无法计算它。

ID类型的文本字段,如客户ID或订单号,应该设置得比平时大。假设客户ID的长度为10位数字。然后,您应该将数据库表字段的长度设置为12或13个字符。但是,这额外的空间并不需要在未来重建整个数据库来实现数据库规模的增长。

8)添加删除标记字段。

在表中包含删除标记字段,以便可以将行标记为删除。不要删除关系数据库中的任何一行;最好使用数据清理程序,并小心维护索引的完整性。

3.选择键和索引(数据库逻辑设计)

密钥选择原则:

1)关键设计4原则

为关联字段创建外键。

所有键必须是唯一的。

避免使用组合键。

外键总是与唯一的键字段相关联。

2)使用系统生成的主键

在设计数据库时,将系统生成的密钥作为主键,因此实际上控制了数据库的索引完整性。这样,数据库和非手工机制有效地控制了对存储数据中每一行的访问。使用系统生成的键作为主键的另一个优点是,当您拥有一致的键结构时,很容易发现逻辑缺陷。

3)不要使用用户的密钥(不要使主键可更新)

当决定使用哪个字段作为表的键时,必须小心用户将要编辑的字段。一般情况下,不要选择用户可以编辑的字段作为关键字。

4)可选键有时可以用作主键。

进一步使用可选键作为主键,您就能够构建一个强大的索引。

索引使用原则:

索引是从数据库中获取数据的最有效的方法之一。95%的数据库性能问题可以通过索引技术解决。

1)对逻辑主键使用唯一分组索引,对系统键使用唯一未分组索引(作为存储过程),对任何外键列使用未分组索引。考虑数据库有多少空间,如何访问表,这些访问是否主要用于读写。

2)大部分数据库都会索引自动创建的主键字段,但是不要忘记索引外键,外键也是常用的键,比如运行一个查询来显示主表和所有相关表中的一条记录。

3)不要索引memo/note字段,不要索引大字段(字符多),这样会使索引占用过多存储空间。

4)不要索引常用的小表。

不要为小数据表设置任何键,尤其是如果它们经常有插入和删除操作。这些插入和删除操作的索引维护可能比扫描表空间花费更多的时间。

4.数据完整性设计(数据库逻辑设计)

1)完整性实现机制:

实体完整性:主键

参照完整性:

删除父表中的数据:级联删除;限制性删除;空值

将数据插入父表:受限插入;递归插入

更新父表中的数据:级联更新;受限更新;空值

DBMS可以通过两种方式实现参照完整性:外键实现机制(约束规则)和触发器实现机制。

用户定义的完整性:

不为空;检查;引发

2)通过约束而不是业务规则来加强数据完整性。

利用数据库系统实现数据完整性。这不仅包括通过标准化实现的完整性,还包括数据的功能性。还可以在写数据的时候添加触发器,保证数据的正确性。不依赖业务层保证数据完整性;它不能保证表(外键)之间的完整性,所以不能强加在其他完整性规则上。

3)强制性指示完整性

在有害数据进入数据库之前将其消除。激活数据库系统指示的完整性特征。这可以保持数据的整洁,并迫使开发人员花费更多的时间来处理错误情况。

4)使用查找来控制数据完整性。

控制数据完整性的最好方法是限制用户的选择。只要有可能,就应该为用户提供一个清晰的值列表以供选择。这将减少键入代码时的错误和误解,并提供数据一致性。一些公共数据特别适合搜索:国家代码、状态代码等。

5)采纳观点

为了在数据库和应用程序代码之间提供另一个抽象层,可以为应用程序建立一个特殊的视图,而无需应用程序直接访问数据表。这样做还可以让您在处理数据库更改时更加自由。

5.其他设计技能

1)避免使用触发器。

触发器的功能通常可以通过其他方式实现。调试程序时,触发器可能会成为干扰。如果你真的需要使用触发器,你最好专注于记录它。

2)使用通用英语(或任何其他语言)代替编码。

创建下拉菜单、列表和报表时,最好按英文名称排序。如果需要编码,可以在编码中附上用户认识的英文。

3)保存常用信息

拥有一个专用于一般数据库信息的表非常有用。在该表中,存储了数据库的当前版本、最新检查/维修(用于访问)、相关设计文档的名称、客户和其他信息。这可以实现一个简单的机制来跟踪数据库,当客户抱怨他们的数据库不符合期望的要求并与您联系时,这对于非客户机/服务器环境尤其有用。

4)包括版本机制

版本控制机制被引入到数据库中,以确定正在使用的数据库的版本。随着时间的推移,用户的需求总是会发生变化。您最终可能需要修改数据库结构。将版本信息直接存储在数据库中更方便。

5)文件准备

记录所有快捷方式、命名约定、限制和功能。

使用数据库工具来注释表、列、触发器等。对于开发、支持和跟踪变更非常有用。

记录数据库,或者在数据库内部或单独建立文档。这样一年多以后你再去找第二个版本的时候,出错的几率会大大降低。

6)测试、试验和重复试验

建立或修改数据库后,必须用用户新输入的数据测试数据字段。最重要的是,让用户测试并与用户一起工作,以确保所选择的数据类型满足业务需求。在将新数据库投入实际服务之前,需要完成测试。

7)检查设计

在开发过程中检查数据库设计的一种常见技术是通过数据库支持的应用程序原型来检查数据库。换句话说,对于每个最终表达数据的原型应用程序,请确保检查数据模型并了解如何提取数据。

第三,数据库命名规范

1.实体(表)的命名

1)表格以名词或名词短语命名,确定表格名称是复数还是单数。此外,为表的别名定义了简单的规则(例如,如果表名是一个单词,别名取单词的前四个字母;如果表名是两个单词,取每个单词的前两个字母组成四个字母的别名;如果表名由三个单词组成,从前两个单词中取一个,然后从最后一个单词中取两个字母,结果仍然是四个字母的别名,依此类推)

对于工作表,表名可以以WORK_为前缀,后跟使用该表的应用程序的名称。在命名过程中,缩略语可以根据语义拼凑。请注意,由于ORCLE会将字段名称统一为大写或小写,因此需要给它们加下划线。

例如:

定义的缩写Sales:Sal Sales;

秩序:Ord秩序;

细节:Dtl细节;

然后将销售订单列表命名为:萨尔_ Ord _ Dtl;

2)如果表或字段的名称只有一个单词,建议使用完整的单词,不要使用缩写。

例如:

定义的缩写材料Ma文章;

项目列表被称为物料,而不是Ma。

但是字段项目编码是:Ma _ ID不是物料ID。

3)在所有存储值列表的表前面加上前缀Z。

目的是在数据库末尾对这些值列表分类进行排序。

4)在命名所有冗余类(主要是累积表)之前加上前缀X

冗余类是在数据库非规范化时添加的字段或表,目的是提高数据库的效率。

5)通过用下划线连接两个基本类,然后添加前缀R,然后按字母顺序列出两个表名或表名的缩写来命名关联的类。

关联表用于存储多对多关系。

如果关联的表名超过10个字母,则原始表名必须缩写。如果没有其他原因,建议使用缩写。

例如,如果表对象与其自身之间存在多对多关系,则保存多对多关系的表被命名为:r _ object

表格部门和员工;存在多对多的关系;关联的表名为R_Dept_Emp。

2.属性(列)的命名

1)采用有意义的列名,表中的列应该采用一套键的设计规则。每个表将有一个自动ID作为主键,逻辑主键将被定义为第一组候选主键。如果代码由数据库自动生成,则统一命名为ID;如果是自定义逻辑代码,则用缩写和“ID”命名。如果键是数字,可以用_NO做后缀;如果是字符型,可以使用后缀_CODE。列名应该使用标准的前缀和后缀。

例如,销售订单的数字字段命名为SAL _ ORD _ ID如果仍有数据库自动生成的数字,则将其命名为:ID。

2)所有属性都应以相关类型作为后缀。注意,如果需要其他后缀,它们应该放在类型后缀之前。

注意:数据类型是文本字段,类型后缀TX可以省略。对于一些类型比较明显的字段,不需要写类型后缀。

3)采用前缀命名

对每个表的列名使用统一的前缀将大大简化SQL表达式的编写。它确实有缺点,例如破坏了自动表连接工具的功能,该工具将公共列名与一些数据库链接起来。

3.视图的命名

1)视图以V为前缀,其他命名规则与表相似;

2)命名要尽可能体现每个视图的功能。

4.触发器的命名

触发器前缀为TR,触发器名称为对应的带后缀的表名,插入触发器加' _I ',删除触发器加' _D ',更新触发器加' _U ',如:TR_Customer_I,TR_Customer_D,tr _ customer _ u。

5.存储过程名称

存储过程应该以' UP_ '开头,这与系统的存储过程不同。后面的部分主要是动词和宾语的形式,每个成分用下划线分开。例如,用于添加代理帐户的存储过程是' UP_Ins_Agent_Account '。

6.变量名

变量名是小写的。如果它们是短语的形式,用下划线分隔每个单词,例如@ my _ err _ no。

7.命名中的其他注意事项

1)以上命名不得超过30个字符的系统限制。变量名的长度限制为29个字符(不包括标识字符@)。

2)数据对象和变量用英文字符命名,禁止中文命名。永远不要在对象名的字符之间留空格。

3)小心使用保留字,确保您的字段名不与保留字、数据库系统或常用访问方法冲突。

5)保持字段名和类型的一致性,在为字段命名和指定数据类型时,一定要保证一致性。如果一个表中的数据类型是整数,不要在另一个表中将其更改为字符类型。