数据库开发规范详细介绍(一)

运维 数据库运维
数据库开发的过程中并不是开发者想怎么做都可以,而是数据库开发者也要遵守一些规范要,在这些规范要求的前提下去开发数据库,那么接下来将为大家详细介绍数据库开发规范。

一.数据表和字段的设计

  表设计原则

  1、标准化和规范化

  数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,我们在这里采用Third Normal Form(3NF),因为3NF在性能、扩展性和数据完整性方面达到了***平衡。
遵守3NF 标准的数据库某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下特点:有一组表专门存放通过键连接起来的关联数据。

  2、考虑各种变化

  在设计数据库的时候考虑到哪些数据字段将来可能会发生变更。

  字段设计原则:
  1) 每个表中都应该添加的3 个有用的字段,即要求每张数据表中字段不得少于3个;
  2) 选择数字类型和文本类型尽量充足。在字段类型为数字或文本时,其长度***比实际所需的大一些。
  3) 增加自动增长的操作ID字段(czid)
  5) 增加记录创建的日期字段(CreateDate)。
  4) 增加删除标记字段(isvoid):
  在表中包含一个"删除标记"字段,这样就可以把行标记为删除。在关系数据库里不单独删除某一行;一般采用清除数据程序而且要仔细维护索引整体性。

二.键和索引的设计

  1、键选择原则:

  1)为关联字段创建外键。
  2)所有的键都必须唯一。
  3)避免使用复合键。
  4)外键总是关联唯一的键字段。

  使用系统生成的主键
  设计数据库的时候采用系统生成的键作为主键,那么实际控制了数据库的索引完整性。这样,数据库和非人工机制就有效地控制了对存储数据中每一行的访问。采用系统生成键作为主键还有一个优点:当拥有一致的键结构时,找到逻辑缺陷很容易。不要用用户的键(不让主键具有可更新性)在确定采用什么字段作为表的键的时候,小心用户将要编辑的字段。通常的情况下不要选择用户可编辑的字段作为键。

  可选键有时可做主键
  把可选键进一步用做主键,可以拥有建立强大索引的能力。

  2、索引使用原则:

  索引是从数据库中获取数据的***效方式之一。95%的数据库性能问题都可以采用索引技术得到解决。

  索引外键
  大多数数据库都索引自动创建的主键字段,但是可别忘了索引外键,它们也是经常使用的键,比如运行查询显示主表和所有关联表的某条记录就用得上。
  不要索引大型字段(有很多字符),这样作会让索引占用太多的存储空间。

  不要索引常用的小型表
  不要为小型数据表设置任何键,假如它们经常有插入和删除操作就更别这样作了。对这些插入和删除操作的索引维护可能比扫描表空间消耗更多的时间。

三. 数据完整性设计

  完整性实现机制:实体完整性:主键

  参照完整性:
  父表中删除数据:级联删除;受限删除;置空值
  父表中插入数据:受限插入;递归插入
  父表中更新数据:级联更新;受限更新;置空值

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

  用户定义完整性:NOT NULL;CHECK;触发器

  用约束而非商务规则强制数据完整性
  采用数据库系统实现数据的完整性。这不但包括通过标准化实现的完整性而且还包括数据的功能性。在写数据的时候还可以增加触发器来保证数据的正确性。不要依赖于商务层保证数据完整性;它不能保证表之间(外键)的完整性所以不能强加于其他完整性规则之上。

  强制指示完整性
  在有害数据进入数据库之前将其剔除。激活数据库系统的指示完整性特性。这样可以保持数据的清洁而能迫使开发人员投入更多的时间处理错误条件。

  使用查找控制数据完整性
  控制数据完整性的***方式就是限制用户的选择。只要有可能都应该提供给用户一个清晰的价值列表供其选择。这样将减少键入代码的错误和误解同时提供数据的一致性。

  采用视图
  为了在数据库和应用程序代码之间提供另一层抽象,可以为应用程序建立专门的视图而不必非要应用程序直接访问数据表。这样做还等于在处理数据库变更时给你提供了更多的自由。

在进行数据库开发时,严格遵守这些规范原则就能将数据库的开发工作做的很完善,希望大家能很熟练的掌握这些设计规范,以便于大家在以后的数据库开发过程中能很轻松的应用上。

【编辑推荐】

  1. 数据库开发者常犯的错误(二)
  2. 数据库开发10个最重要特点
  3. MS-SQL Server数据库开发中技巧总结
责任编辑:迎迎 来源: 博客
相关推荐

2011-03-21 13:53:45

数据库开发书写规范

2009-08-28 13:03:55

C#压缩Access数

2011-06-23 09:00:04

QT QODBC 数据库

2022-07-27 08:32:01

数据库MySQL

2011-08-10 13:03:58

CJDBC数据库集群

2011-07-27 11:08:49

Oracle数据库EM Console重

2011-03-21 13:41:20

数据库开发规范

2009-08-13 13:38:30

C#命名规范

2011-08-05 13:17:34

Oracle数据库闪回个性

2011-07-26 16:53:29

MongoDB数据库自动分片技术

2011-08-02 18:38:19

MySQLINI文件

2010-03-18 14:55:17

Python数据库连接

2011-09-01 09:30:27

Oracle数据库控制语句

2019-08-20 09:46:14

DBA收藏脚本语言

2015-01-12 15:07:56

SQLAlchemy数据库开发OpenStac

2011-06-15 16:58:26

PHP

2011-04-07 10:50:47

数据库编程注释规范

2019-11-07 14:46:09

数据库MySQL命令

2019-08-20 22:06:32

Oracle数据库索引

2011-03-17 14:51:33

数据库自我调整
点赞
收藏

51CTO技术栈公众号