数据库设计注意事项

本文介绍了数据库设计的基本原则,包括遵循从逻辑设计到物理设计的过程、创建数据字典和ER模型、遵守设计范式等内容。文中强调了命名规范的重要性,并讨论了如何通过主键、索引和触发器等手段来确保数据库的完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库设计之前

在数据库设计之前首先应该有明确的数据库设计规范,包括表,视图,字段等的命名规范,设计约束和存储过程等的编码规范。同时数据库设计应该遵守从逻辑设计到物理设计的实现思路,在充分了解客户需求的情况下,创建数据字典和ER模型,遵守数据库的设计范式等基本要求进行设计。

设计表和字段

对于复杂的业务系统数据库设计,首先从ER图入手从逻辑模型转入物理模型后可得到相应的数据库表,数据库的表和字段的命名都能够规范和确切的表达数据项的含义。表的设计和划分标准一般要达到第三范式,3NF也通常被认为在性能,扩展性和数据库完整性方面得到良好的平衡。但3NF又不是绝对的准则,当有时存在性能方面的考虑时候,我们又适当冗余而提高性能。

对于Oracle ERP系统而言,每个数据表都默认有创建人,创建时间,更新人,更新时间和是否有效五个字段。这是我们可以借鉴的重要内容。另外在数据库设计字段名称的选择上要小心和数据库系统的保留字发生冲突,如Type,Name,DESC等都可能是数据库重要的保留字。

在表中包含一个“删除标记”字段,这样就可以把行标记为删除。在关系数据库里不要单独删除某一行;最好采用清除数据程序而且要仔细维护索引整体性。另外在设计数据库时候有时候常利用表的触发器来保证某些参照完整性,但触发器往往影响到程序的调试,而且是不容易被别人察觉到的业务规则,所以进来通过其他方式来实现触发器的功能。对于表字段的容量也是进行设计的时候要考虑的问题,一般在设计时候都需要对字段长度留一定的余量以方便后期的扩展。

选择键和索引

在设计数据库时候往往可以使用具有唯一性特点的某些编号字段做为数据表的主键,但推荐的做法则是通过数据库自增长或自动生成的无意义字段作为数据表的主键。这样就很好的控制了数据库索引的完整性和效率,而且当你拥有一致的键结构的时候,找到逻辑陷也很容易。

外键可以很好的保证数据表间的参照约束,但个人的经验是尽量不使用外键约束而通过程序区控制数据表间的参考完整性。

索引是从数据库中获取数据的最高效方式之一。95%的数据库性能问题都可以采用索引技术得到解决。对于主键字段系统会自动设置上聚族索引,对于外键字段因为常要在多表关联查询中使用到,因此也要考虑建立相关索引。对于表数据量较大而又需要进行频繁的检索的字段一般都需要考虑建立索引。但索引不适合建立的太多,一是耗空间,增加表的维护成本,同时影响到表更新插入等维护操作的性能。

保证数据库的完整性

主外键约束,触发器等都可以很好的实现数据库的参照完整性。但个人意见是对于较复杂的参照完整性最好还是作为业务规则在程序中进行实现。如果两个实体之间存在多对一关系,而且还有可能转化为多对多关系,那么你最好一开始就设置成多对多关系。从现有的多对一关系转变为多对多关系比一开始就是多对多关系要难得多。

另外对于视图有一个重要的作用就是维护参照完整性。为了在你的数据库和你的应用程序代码之间提供另一层抽象,你可以为你的应用程序建立专门的视图而不必非要应用程序直接访问数据表。这样做还等于在处理数据库变更时给你提供了更多的自由。 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值