`

数据库设计中的几个建议

阅读更多

一般好的数据库设计需要注意以下几点

 

 

1、一个好的数据库设计首先要满足用户的需求


所有信息系统最后都将提交给最终用户使用,对于这一点,相信大家都已经达成共识。但是准确地把握用户的需求是很难的,虽然各方面的专家已经从不同方面给出了解决方案,但是用户需求仍然是软件工程中最不确定的因素之一。

 

 

 

2、一个好的数据库设计要便于维护和扩充


为了应对用户需求的修改和添加,也为了满足各种不同的软硬件环境下系统的使用,大部分信息系统都不得不在其生命期中进行升级和调整。在这些升级、调整中,又有相当部分会涉及到数据库设计的修改,因此,数据库设计最好从一开始就能在易维护、可扩充的角度多加斟酌。

 

(1)、不要为各种编号字段的设定固定的意义


而是最好通过对照表来建立这种编号和意义的对照关系。举例来说,很多设计者习惯给部门信息给出固定的编号,这种设计有个致命的缺陷:那就是由于这种对照关系既然不体现在数据库中,就必然要用业务逻辑来进行解释,这样一来,一有新的调整就不得不更新业务逻辑代码,也就非常容易不一致的错误。

 

(2)、枚举信息要体现在相应在对照表中

而不是体现在使用该信息的表中的值字段,这样做的好处是当用户希望用该枚举信息作为查询条件的时候,通过参照表的方式可以很容易的建立这些信息,另外也避免了当多个表格中都含有该枚举信息有可能引起的不一致。

 

 

 

3、用关联表建立表和表之间的多对多关系

而不要用一个字段解析的方式进行,举例来说,为了描述用户(UserInfo)和角色(RoleInfo)之间的关联关系,我们要建立对照表UserInfo_RoleInfo,而不要试图在用户表中建立一个较长的字段,如Roles(用RoleID1; RoleID2...的形式构成)来代替,因为这样一来字段解释需要在业务代码相应的解析代码,二来由于Roles定长,无法满足用户角色的扩充。

 

 

 

4、一个好的数据库设计要具有“可读性”

如同编程书籍中反复强调的程序员一定要在代码的可读性方面下功夫一样,考虑到信息系统将来的升级和维护可能要要由另外一批人来进行,因此数据库设计必然也要具有可理解性。

 

 

 

5、一个好的数据库设计能够满足空间和效率的要求

 

 

对于一个信息系统来说,在实现用户需求的基础之上,保证一个较低的空间占用以及短的响应时间都是理智的客户所愿意看到的。那么在这一方面,数据库设计又要做些什么工作呢?

 

 

(1)、使用varchar而不要使用char字段


对于不定长信息如用户的简介信息,varchar的使用可以减少近一半的空间占用。当然这点不能一概而论,如用相应长度的char存储定长文本数据就比varchar来的合适。

 

 

(2)、不要使用BLOB字段存放“大数据”

 

BLOB字段诚如其名,本身是为存储二进制大数据而出现的,同样的道理也适用于某些DBMS所引入的TEXT字段。因为对于一般信息系统而言,最长的字段往往是一些描述文本信息,而DBMS对char/varchar的长度基本能满足这种需求。因此积极建议设计者对一些貌似很长的文本的最大允许长度进行确认,在此基础上参照DBMS中的开发手册来决定是否采用大字段。

 

(3)、不要使用设计器缺省的字段长度

 
这种做法一方面纵容了设计者对用户需求的一知半解以及对设计敷衍了事的不良习惯,另外一方面也在数据的存储上浪费了不少的空间,因为使用缺省字段长度的情况往往发生在字段上。

 

 

 

 

参考资料:    数据库设计的几个建议    http://www.studyofnet.com/news/336.html

 

 

 

分享到:
评论

相关推荐

    数据库设计经验谈 数据库设计经验 数据库设计经验总结谈

    此外,对于表的别名,建议制定简单的规则,比如取表名前几个字母作为别名。对于列名,则可以考虑采用标准的前缀和后缀,如使用_N代表数字类型的键,使用_C代表字符类型的键。这样的命名规则有助于减少混淆并提升代码...

    8数据库设计规范.doc

    在具体的设计规范中,文档涵盖了以下几个核心领域: 1. **数据库对象长度策略**:字段长度应根据业务需求、字符集和时间格式设定,以确保高效并避免不必要的开销。 2. **数据完整性策略**:提倡遵循第二范式和第三...

    数据库设计.doc

    数据库设计是信息系统开发过程中的关键步骤,它涉及到数据的组织、存储和检索策略,以确保高效、稳定且易于维护的数据管理。在这个文档中,我们主要关注的数据库设计应用于店铺管理和排班系统的场景。 1. 店铺数据...

    大学数据库原理实验报告--数据库设计与实施

    根据提供的实验报告标题、描述及部分内容,我们可以提炼出以下几个关键知识点: ### 1. 数据库设计的基本原则 数据库设计是数据库领域的一项基础性工作,它包括需求分析、概念设计、逻辑设计、物理设计等多个阶段...

    软件设计文档 需求分析 概要设计 详细设计 数据分析 数据库设计说明书等的编写提示

    本文将深入探讨标题和描述中提到的几个关键阶段,包括需求分析、概要设计、详细设计、数据分析以及数据库设计说明书的编写,旨在提供详尽的指导和建议。 首先,**需求分析** 是软件工程的第一步,它是确定系统或...

    oracle数据库设计规范

    这部分虽然在给定内容中没有详细介绍,但通常包括命名规范、数据类型选择、SQL编写规范等内容,这些也是Oracle数据库设计中的重要组成部分。例如: - **命名规范**:规定了对象命名的规则,如表名、字段名等,以...

    运维支撑系统数据库设计 数据库运维.docx

    对于MySQL而言,其物理设计主要包括以下几个方面: 1. **表空间设计**:根据数据访问模式和存储需求,合理规划表空间,例如,将频繁读写的表放置在高性能磁盘阵列上。 2. **索引策略**:为提高查询效率,应合理创建...

    需求分析+概要设计+详细设计+数据库设计模板.pdf

    在本模板中,软件数据库设计报告文档模板(附录 D)提供了以下几个方面的内容: 1. 数据库设计:描述软件的数据库设计,包括数据库结构、数据模型等。 2. 数据库实现:描述软件的数据库实现,包括数据库管理系统、...

    GB8567-88数据库设计说明书(doc 4页).doc

    根据提供的文档信息,我们可以推断出这是一份关于数据库设计的技术文档,主要涵盖了引言、外部设计以及结构设计等几个方面。接下来将基于这些信息详细展开相关知识点。 ### 一、引言 #### 1.1 编写目的 本章节主要...

    数据库原理与应用课程设计教室管理系统数据库设计.pdf

    在大学的教室管理中,数据库设计的重要性体现在以下几个方面: * 数据库设计可以帮助大学更好地管理教室资源,从而提高教学效率和质量。 * 数据库设计可以帮助大学更好地管理学生信息和教师信息,从而提高教学质量...

    mongo 数据库设计规范

    ### MongoDB 数据库设计规范 #### 一、名词解释与概念介绍 在开始深入探讨MongoDB的设计规范之前,我们首先需要了解几个基本的概念: - **Document**:在MongoDB中,一个Document可以理解为传统关系型数据库中的...

    集团企业所用的数据库设计规范

    规范主要涵盖以下几个方面: 1. **命名规范**: - 库名、表名、字段名应由26个英文字母、0-9这10个数字及下划线组合,避免使用其他字符,除非是注释。 - 表名需以项目名缩写开头,接着是业务模块缩写,再是表功能...

    数据库课程设计,数据库实验报告,数据库试验

    在"大型数据库课程设计2009(信息0601-0604).doc"中,我们可以期待看到以下几个方面的内容: 1. 项目背景:介绍设计的数据库用于哪个具体的信息系统,以及它的目标和意义。 2. 需求分析:详细列出系统所涉及的数据...

    基于Matlab的Oracle数据库设计.pdf

    Matlab数据库的特点主要体现在以下几个方面: 1. 数据类型自我保持:Matlab中的数据被保存在单元数组中,单元数组能够支持混合数据类型。这意味着数据类型在存储和传递过程中能够保持一致,用户无需为不同数据类型...

    学生管理系统-数据库课程设计报告.doc

    通过实体关系模型(ER模型),定义了几个关键实体及其属性: - **学生**:关联基本个人信息,如学号、性别、出生日期、姓名、班级和生源地。 - **班级**:包含班级的基本信息,如班级编号、名称、所属院系。 - **...

    软件项目模板-U19-2 数据库设计说明书报审表(和U19配套).doc

    数据库设计说明书通常包含以下几个关键部分: 1. **合同号**:合同号是项目识别的标识,用于关联项目合同和设计文档,确保设计工作与合同约定一致。 2. **版本号**:版本号(如ITECH-GYSP-V3.0)表明了文档的迭代...

    数据库课程设计说明书

    这份说明书通常包含以下几个关键部分: 1. **需求分析**:这是设计过程的第一步,要求学生对给定的设计题目进行深入理解,明确软件的目标和功能。需求分析应详细描述软件需要实现的功能,比如数据的增删改查、查询...

    数据库设计60个技巧

    具体技巧将在后续章节中展开,这里先简述几个关键点: - **字段设计**:确保每个字段的数据类型与存储的数据相匹配,避免数据类型不当导致的存储浪费或数据损坏。 - **避免常见问题**:注意避免冗余数据和不一致,...

    数据库原理课程设计指导书

    - **模块划分**:基于需求分析,将系统功能划分为几个独立但相关的模块。 - **案例划分**: - **员工管理** - **出勤管理** - **查询统计**(进一步细分为两个子模块) #### 五、与其它系统的关系 - **集成性**...

Global site tag (gtag.js) - Google Analytics