`
youyu4
  • 浏览: 435608 次
社区版块
存档分类
最新评论

数据库设计 -- 外键设计

 
阅读更多

数据库设计 -- 外键设计

 

 

  • 外键的目的:通过数据库去保证数据的完整性,提高关联查询的效率
  • 外键的副作用:插入或更新的效率下降。

 

 

 

为何说外键有性能问题

 

  • 数据库需要维护外键的内部管理;
  • 外键等于把数据的一致性事务实现,全部交给数据库服务器完成;
  • 有了外键,当做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,而不得不消耗资源;
  • 外键还会因为需要请求对其他表内部加锁而容易出现死锁情况;

 

 

 

 

外键命名

 

  • fk_业务:例如,注册业务,user表有一个外键,可以命名为,fk_user_register
  • fk_当前表名_主表名:例如,登陆,user_session表有一个user_id外键,可以命名为,fk_user_session_user

 

 

 

 

该不该用外键

 

要用

 

    通过数据库保证数据完成性。两个表关联查询很多的时候,并且数据量不大,可以不考虑插入或更新的效率时候。

 

    例如:

 

  • 软件应用的人数有限,换句话说是可控的;
  • 数据库服务器的数据量也一般不会超大,且活跃数据有限;

 

 

可用,可以不用

 

    可以忍受数据不完整性。或认为程序已经可以控制数据的完整性。

 

    两个表关联查询很多的时候,但两个表的数据量不大或两个表关联查询很多,对查询效率不高,对插入或更新的效率要求高。

 

 

 

不用

 

    两个表无任何逻辑关系,对插入或更新效率要求及高;或者有逻辑关系,但是可以通过中间业务层控制逻辑关系的,这样的扩展性更好。

 

    例如:

 

    互联网应用:用户量大,并发度高,为此数据库服务器很容易成为性能瓶颈,尤其受IO能力限制,且不能轻易地水平扩展;若是把数据一致性的控制放到事务中,也即让应用服务器承担此部分的压力,而引用服务器一般都是可以做到轻松地水平的伸缩;

 

 

分享到:
评论

相关推荐

    Educoder 数据库设计 - 博客系统

    在本项目中,"Educoder 数据库设计 - 博客系统"是一个关于构建博客平台的数据库设计方案。这个项目可能涉及到数据库架构设计、表结构规划、数据关系分析等多个方面,旨在提供一个高效、稳定且易于扩展的博客后台支撑...

    数据库设计-------小型超市管理系统

    【数据库设计-------小型超市管理系统】 小型超市管理系统是一个典型的信息管理系统(MIS),广泛应用于现代社会,旨在解决员工档案、库存商品及销售的管理问题。在设计过程中,采用了结构化和面向对象两种程序设计...

    数据库设计--驿站超市

    整个课程设计不仅强化了学生对SQL语言的掌握,如其在查询、更新和维护数据时的灵活性,还使他们理解到数据库设计的严谨性,如主键与外键的定义,以及约束的重要性。此外,这个项目也强调了数据库在实际业务中的作用...

    数据库设计-模板.docx

    《数据库设计》手册 在IT领域,数据库设计是构建高效、稳定、安全的信息系统的基石。这份文档旨在为读者提供一个全面的数据库设计指南,涵盖了从前期规划到具体实施的各个环节。文档的目标是帮助读者理解数据库设计...

    数据库设计-仓库管理系统

    总的来说,“数据库设计-仓库管理系统”涵盖了数据库设计原则、Java开发环境的使用、数据库管理工具的应用、事务处理、性能优化等多个方面。通过精心设计和实施,我们可以构建出一个强大而可靠的仓库管理信息系统,...

    数据库设计-网络收集的PPT

    数据库设计是信息系统开发过程中的关键环节,它涉及到数据的组织、存储和管理,确保数据的一致性、完整性和高效访问。这份"数据库设计-网络收集的PPT"提供了全面的知识点,适合初学者和有一定经验的开发者进行学习和...

    数据库建表-建约束-建外键.doc

    数据库建表是数据库设计中最基础且重要的一步。在实际应用中,建表的正确性将直接影响到后续的数据存储和查询效率。本文将从建表的角度出发,介绍了建表、约束、外键三者的关系和实现方法。 一、数据库建表 数据库...

    Oracle数据库设计-图书管理系统.docx

    ### Oracle数据库设计——图书管理系统知识点解析 #### 一、需求分析 **背景分析:** - 图书馆规模的扩大导致图书及相关信息量急剧增长,传统人工管理方式难以应对大规模信息处理的需求,容易出现管理混乱、资源...

    学生成绩管理系统数据库设计-MySQL.zip

    在本项目中,我们关注的是一...这个学生成绩管理系统数据库设计不仅涵盖了数据库的基本概念,还涉及到数据库设计的各个方面,包括表结构、关系、查询语言、安全性、性能优化等,是学习和实践数据库管理系统的良好实例。

    x01-2014-2015学年02期-数据库应用技术-项目01-项目数据库设计-任务4-范式.ppt

    【数据库应用技术】和【关系数据库设计】是本文件的核心主题。关系数据库设计涉及如何有效地组织和存储数据,确保数据的准确性和一致性。这通常基于规范化理论,它是一套指导原则,帮助设计师创建科学合理的关系模式...

    图书管理系统数据库设计-MYSQL实现.docx

    ### 图书管理系统数据库设计-MYSQL实现 #### 一、系统概述 ##### 1.1 系统简介 图书管理系统是一项重要的图书馆管理工作,旨在通过信息化手段提高图书管理的效率和服务质量。一个优秀的图书管理系统数据库能够有效...

    数据库E-R图,逻辑结构设计

    在实际应用中,数据库设计师还需要考虑性能优化,如索引设计、分区策略等。此外,随着NoSQL数据库和图形数据库的兴起,逻辑结构设计也扩展到了非关系型数据模型。 综上所述,数据库E-R图和逻辑结构设计是构建数据库...

    MySQL SQL高级特性 字段约束-索引-视图-外键学习实践

    在本部分中,虽然没有详细讨论外键的使用方法和作用,但可以知道外键在数据库设计中用于实现数据表之间的关联。 总结来说,字段约束、索引、视图和外键是MySQL数据库设计和优化的重要组成部分。通过理解和合理使用...

    考试系统mysql数据库设计-在线考试系统数据库设计(表).pdf

    在线考试系统的数据库设计是构建一个高效、安全的考试平台的关键环节。这个系统采用了MySQL数据库作为数据存储引擎,尽管描述中提到的是Microsoft SQL Server 2000,但我们可以假设这里是为了讨论数据库设计的一般...

    超市管理数据库设计-《数据库原理与应用》课程大作业.pdf

    在超市管理数据库设计中,我们需要考虑的关键知识点涵盖了数据库设计的全过程,从需求分析到系统功能设计,再到数据库的各个层次设计。以下是对这些知识点的详细阐述: 1. **需求分析**: 这是数据库设计的第一步...

    图书管理系统数据库设计-MYSQL实现(1).docx

    图书管理系统数据库设计是信息化图书馆的重要组成部分,它利用MySQL数据库实现,旨在提高图书管理的效率和准确性。本系统主要由以下几个部分组成: 一、系统概述 系统主要包括学生借阅、查询和归还图书的功能,以及...

Global site tag (gtag.js) - Google Analytics