`
jessen163
  • 浏览: 465088 次
  • 性别: Icon_minigender_1
  • 来自: 潘多拉
社区版块
存档分类
最新评论

总结数据库设计的原则技巧

SQL 
阅读更多
通常认为,第三范式在性能,扩展性和数据完整性方面达到了最好平衡.有以下几个要点。

1.一个表只描述一个单一的事物(实体)。

2.表内的每一个值在整个数据库只出现一次(外键除外)。

3.表内的每一行都应该被唯一的标识(有唯一主键)。

4.表内不存储与主键无关的信息。

-------------------------------------------------------------------------------------------------------------------

字段设计技巧

1.确保表中没有计算字段
   计算字段的值,是由其他字段的值计算而来,当你更新其他字段的时候,很容易忽略同时更新这个计算字段,造成数据的错误。


2.确保这个字段的值只有一个
例如下表Users:
用户ID   用户名称    电话号码
   001      robin        1358888888/028-8888888/…
电话号码的值就不只一个,因此电话字段不能放在users表中,解决办法是增加一个表Phone
电话号码ID       用户ID   电话号码
001              001      13588888
     002              001      028-888888
这个表就是Users的从表,用户ID是外键.
还有地址address,和电话的情况类似

3.尽可能地细分字段
如下雇员表(employee)
雇员ID 雇员名称   地址
emp_id   emp_name    emp_address
001         Robin          四川省成都市高新区天泰路1号

这里的emp_address就可以细分,改进的表如下
雇员ID 雇员名称 国家     省/直辖市   地/市   区/县      街道
001      罗代均     china       四川       成都    高新区    天泰路1号

这样更方便我们查询统计,有利于保证数据的完整性。

比如我要查询某区县的数据,你没有细分字段,这些查询根本做不了

------------------------------------------------------------------------------------

表设计技巧

1.为表内的每一个字段添加表名缩写
例如客户表customer
cust_id cust_name cust_type cust_city ...

这样书写SQL语句时,很容易就知道这个字段属于哪个表,代表什么含义。
例如cust_city ,就不会和employee表的emp_city混淆了。

2.为每一个表添加如下审计字段
last_update_by      最后修改人
last_update_date    最后修改时间

这样方便以后数据错误时,查找相关责任人,以及错误发生时间。

3.添加删除标记字段
   在关系数据库中,表之间的关系错综复杂,删除一条记录,往往会影响很多其他的表,建议添加删除标记字段,删除数据时,只是将这行标志为删除即可。
例如,客户表(customer)
cust_id   cust_name           status
001         罗代均                   A         A:Active,活动的,有效的
002         罗曾英                    I          I:Inactive ,无效的

   其他的表,比如送货单,里面有cust_id,如果我们将002客户删除,那么这张送货单也就不能查看了.删除002客户时,只需要将其状态更改为I即可.

   我们还可以编写单独的数据清除程序,将这些标记为删除的数据删除,或者移入历史数据库中等。

4.使用无业务含义的数字作为主键
     首先,关系数据库中,一个表的主键往往会被其它表引用(外键).因此,任何情况下,都不能允许主键字段被修改.否则,相关表的记录都要相应的修改,这真是噩梦.
     而且,任何有业务含义的字段,都有被修改的可能,因此不能作为主键,当然,为了保证数据的完整性,我们可以为必须唯一的字段(可能是一个,或者多个),添加唯一索引.
     最后,从性能考虑,还有什么比数字查询效率更高呢?这点对于多表连接查询非常重要。
     例如,以前有些系统使用身份证号码作为主键,但是后来身份证由15位升为18位,这些系统就面临噩梦了!
     因此,建议为表添加无业务含义的数字作为主键,SQL Server,MySQL可以用自增字段,Oracle可以用序列sequence.


5.别忘记为外键添加索引
     大家都知道,系统会自动为主键添加唯一索引。但是外键,需要我们手动添加索引。

6.将表的公共部分,导出成一张表,作为其他模块交互的接口。
      如果表的结构经常变化,那么将这个表中公共的部分抽取出来,单独作为一张表,这样,对表结构的修改,就不会影响到其它关联的模块。
   例如:
   将客户表customer表拆分customer_basic和customer_other两张表。
      有一张报表,需要客户的基本信息,那么只需要查询customer_basic.如果业务变化,客户信息有变动,只需要修改customer_other表,不会影响到报表的正常运行。
分享到:
评论

相关推荐

    mysql数据库设计原则

    ### MySQL数据库设计原则详解 #### 一、引言 在当今数据驱动的世界中,数据库设计的质量直接影响着应用程序的性能和可扩展性。MySQL作为一款广泛使用的开源关系型数据库管理系统,其设计原则对于确保数据的一致性...

    常用数据库设计技巧总结

    以下是对【标题】"常用数据库设计技巧总结"和【描述】中提到的一些关键知识点的详细解释: 1. **关系类型**:数据库中的实体关系可以分为一对一、一对多和多对多。通常,原始单据与实体对应一对一关系,但在特定...

    SQL数据库设计的各种小技巧

    根据给定的信息,我们可以总结出以下关于SQL数据库设计的小技巧及关键知识点: ### SQL数据库设计的小技巧 #### 技巧一:确保数据的一致性和完整性 - **描述**:在设计数据库时,需要确保所有数据都保持一致且完整...

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

    ### 数据库设计经验总结 #### 一、设计数据库之前的准备 **1.1 考察现有环境** 在设计新数据库之前,深入了解当前环境是非常重要的一步。这包括但不限于研究现有系统的架构、流程以及存在的问题。大多数情况下,...

    数据库设计指南 数据库设计

    ### 数据库设计指南 在企业运营的过程中,数据如同流淌在企业体内的血液一般至关重要,而数据库的设计则成为了确保这些“血液”能够健康...希望这些经验和技巧能帮助读者更好地理解和掌握数据库设计的基本原则和方法。

    关系数据库设计经验(总结经验)

    【数据库设计概述】 关系数据库设计是构建高效、稳定和可扩展的信息系统的关键步骤。它涉及到对业务需求的深入理解,...这些经验和技巧是数据库设计者不断积累和提炼的宝贵财富,能够为信息系统建设提供坚实的基础。

    大型数据库开发技巧与原则

    二、设计原则 1. 规范命名:统一的命名规则是数据库设计的基础,清晰的命名有助于后续的维护和查询。 2. 字段引用控制:使用设计工具进行管理,避免重复字段,如果需要新字段,需重新设计。 3. 库表重复控制:通过...

    数据库设计60个技巧

    综上所述,“数据库设计60个技巧”涵盖了数据库设计的各个方面,从前期规划、命名规范、表结构设计、键选择到数据完整性保障,每一点都是实践经验的总结,对于任何从事数据库设计工作的专业人员来说,都是一份宝贵的...

    多年的数据库设计经验总结

    ### 多年的数据库设计经验总结 #### 一、设计数据库之前的基本技巧 1. **考察现有环境**:在...遵循上述技巧和原则,可以确保数据库设计既高效又可靠。在实践中不断学习和完善,是成为优秀数据库设计师的重要途径。

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

    ### 数据库设计规范、技巧和方法 #### 一、数据库设计概述 数据库设计是一个系统化的过程,旨在构建高效且符合用户需求的数据库系统。这一过程包括了从需求分析到最终数据库实现的所有步骤。良好的数据库设计不仅...

    优化MySchool数据库设计总结

    【优化MySchool数据库...在MySchool数据库设计中,正确应用这些原则和技巧能提高查询效率,减少数据冗余,增强系统的稳定性和可扩展性。优化数据库设计是一个持续的过程,需要不断根据业务需求和系统性能调整和改进。

    数据库连接、设计以及备份技巧集锦

    总结来说,掌握JDBC连接数据库的技巧对于Java开发者至关重要,而良好的数据库设计原则和备份策略则是保障数据安全和系统稳定性的基石。理解并实践这些知识,将有助于提升数据库管理的专业水平。

    数据库设计14个技巧

    根据给定的文件标题、描述、标签以及部分内容,我们可以总结并深入探讨以下14个数据库设计技巧的关键知识点: ### 1. 原始实体与实际实体的关系 原始实体应只对应一个实际实体,强调一对一关系的重要性。在设计时...

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

    **3.1 关系数据库设计原则** - **单一责任原则**:每个表只负责一类信息的存储。 - **第三范式(3NF)**:确保每张表中的每一列都只依赖于主键,避免数据冗余。 - **规范化设计**:通过规范化来消除数据冗余,减少...

    简单校园商品买卖数据库设计

    【数据库设计概述】 数据库设计是信息系统开发的关键环节,它涉及到数据的组织、存储和访问方式。...通过这个实例,初学者能够全面地了解和实践数据库设计的基本流程和技巧,为进一步深入学习和实际工作打下坚实基础。

    数据库 课程设计 合同订单

    2. 系统目标和设计原则,阐述系统期望达到的效果和遵循的设计准则。 3. 支撑环境规划,涵盖硬件、软件及开发工具的选择。 4. 系统功能结构,清晰展示系统的模块划分和功能分配。 5. 数据库设计,包括数据字典、E-R图...

    数据库设计经验

    本篇文章将深入探讨数据库设计的经验与技巧,帮助你更好地理解和应用这些知识。 首先,我们要明白数据库设计的基础——概念模型设计。这通常采用实体关系(ER)模型,通过识别系统中的实体、属性和关系来构建数据...

    数据库设计技巧

    总结,数据库设计是一个涵盖广泛且不断发展的领域,从基础的规范化到高级的性能优化和可扩展性设计,每个阶段都需要深入理解和实践经验。只有不断学习和实践,才能在这个领域中不断提升,应对各种挑战。

Global site tag (gtag.js) - Google Analytics