0 0

关于数据库的疑问0

最近参加了一个的较大型的项目,发现pdm里面没有表与表的关系,仔细研究了一下,貌似全部关系是靠代码控制的,在库级别没有建立任何关系,突然发现这样做也挺不错的。问问大大们,数据库建立关系与不建立关系各有什么优缺点啊
2013年7月10日 17:01

9个答案 按时间排序 按投票排序

0 0

采纳的答案

首先说一点,使用外键是为什么?

外键的使用时为了在数据库的层级保证数据的一致性,完整性,更可靠。毕竟使用程序来控制的话,对于程序员的要求是比较高的。

然后再说应用场景:
追求的数据的完整性等,那就用上外键吧。毕竟不可控的因素太多了,还不如让数据库自己来保证。如果数据库都保证不了,那就game over啦。

追求性能,而且是在大数据量的频繁更新操作下。那就让外键去见鬼吧,这个时候外键还存在,不是完全的捣蛋吗?插入一条数据由于外键的存在还要去做一次一致性约束检测,这不是在浪费时间吗?所以在这种条件下,外键就有点不太实用了。

当然你的数据量不大,那么你使用外键是没有问题的(数据量不大也不需要考虑高速写入的问题了

所以说,这是一个权衡,看你用想要什么。

参考:http://www.dewen.org/q/1814/mysql+%E5%A4%96%E9%94%AE%E9%97%AE%E9%A2%98

题外话:如果你要高速写入大数据量,就不要用关系型数据库了,这个解决起来有点麻烦。现在不是NOSQL很火吗,看看这个吧。呵呵

2013年7月12日 11:47
0 0

以前看过有人对这方面的一些说法,内容大概是这样。数据库建模时,应尽可能的实现相关的规范,比如多少范式之类的,使其完整性更完整些。(言下之意:外键什么的还是加上的)。当程序完成后,再把外键之类的约束删除(如果是数据库方面出现性能瓶颈的话),直接由代码控制。
我倒觉得其实二种情况都挺符合实际的,只是看场景了。但有一样东西是最明显的,就是维护的成本。我只知道如果我接手一个系统,一打开数据库啥关系也看不到,那我觉得很痛苦在。

2013年7月12日 00:59
0 0

建议不要用外建,容易出现n+1问题

2013年7月12日 00:11
0 0

外键关系,我觉得大多数可以不建立。
  可以最近的一个项目中,部门老大的习惯就是必须要建立外键关系。
    说什么 这样数据可以随便删除,导致一些垃圾数据。
  
            靠,生产环境上,谁去删数据啊。况且我们系统中做的都是软删除,

除非客户的db去删数据,

2013年7月11日 19:18
0 0

一般都不在数据库上建立主外键关系,都在代码里维护了!
建在数据库里面在做数据麻烦,而且后期建索引的时候也有影响。

2013年7月11日 18:01
0 0

个人建议数据中各表之间还是需要适当的主外键关系的,之前我进公司接手的是个二手项目,一年前搭建的,我们是在上面做二次开发,就是各表之间就没有相应的关系约束,很难维护,而且有大量的冗余数据。现在公司又做了几个项目,我们都是创建好各表之间主外键关系,这样结构清晰,数据关系清楚,容易维护。

2013年7月11日 11:57
0 0

楼主说的是表与表之前并没有建立实际的外键关联吧,个人觉得外键关联实际的作用不大,反而会给操作数据带来阻碍。靠应用里边的领域模型来维护这些关系就显得更加的灵活。现在的数据库的主要作用还是在于存储这一单一功能,尽量不要使得数据库数据之间的规则变得复杂,能简单就简单吧。

2013年7月10日 17:55
0 0

代码量大,如果关系复杂的话,维护代价高。
pdm中不能直观的程现表与表之间的关系,只能靠读文档了解,很不方便
如果直接对数据库操作很容易误删数据等



2013年7月10日 17:35
0 0

和用泛型和不用泛型一样

2013年7月10日 17:27

相关推荐

    数据库常见疑问

    ### 数据库常见疑问详解 #### 一、数据库应用中常见问题概述 在数据库的应用过程中,用户往往会遇到一系列的问题,这些问题不仅涉及到数据存储、查询优化,还包括数据安全性与完整性等方面。本文将围绕这些常见...

    数据库学习日积月累资料

    学习资料可以帮助你系统地学习数据库理论,而网站和论坛如Stack Overflow、CSDN、GitHub等,提供了大量的技术问答和开源项目,可以实时解决学习过程中的疑问。 总的来说,"数据库学习日积月累资料"这个压缩包很可能...

    入门级数据库教程(关系型数据库)

    数据库是存储和管理数据的系统,它为用户提供了一种结构化的数据组织方式,使得...对于那些刚刚接触数据库或对数据库概念有疑问的人来说,这是一个很好的起点。但对于已经熟悉数据库的专家而言,这些内容可能过于基础。

    烂笔头 3.0_数据库专用学习工具,特点可以连接各种数据库-中文绿色

    随着软件3.0版本的发布,我们也开通了"烂笔头"官方学习交流社区,大家有任何疑问或者意见都可以到此提出,我们还成立了数据库知识问题解答团队,大家登陆论坛后只用在"有问必答帮助区"提出你学习或者工作中的问题,...

    Access数据库特殊器.zip

    说明.txt文件很可能包含关于如何使用这个特殊器的指南和步骤。在使用前,应该先阅读这份文档,了解工具的功能、操作方法以及任何潜在的注意事项。可能涉及的内容包括: 1. 工具的安装和卸载过程。 2. 如何打开和...

    Access数据库.accdb驱动

    IT猫扑网可能是一个提供IT资讯和技术支持的在线平台,你可以通过这些链接访问网站获取更多关于Access数据库驱动的资讯、教程或者解答疑问。 在实际使用中,了解如何使用VBA(Visual Basic for Applications)与...

    重建数据库日志文件

    重新启动SQL Server服务后,会发现“test”数据库的状态变为“置疑”,意味着数据库的完整性和一致性存在疑问,此时无法对数据库进行常规操作。 **E. 允许直接操作系统表** 为进行后续的紧急修复操作,需要设置SQL ...

    《MySQL数据库入门》教学设计.docx

    在第二课时,教师会回顾上节课内容,解答学生的疑问,进一步强化对MySQL服务的管理,如如何启动和停止MySQL服务,以及如何使用DOS命令和MySQL Command Line Client登录服务器。学生将学习到更多MySQL的命令,以提高...

    贪吃蛇(连接数据库)无需资源分

    开发者邀请用户下载游戏,并鼓励他们提出疑问或不足之处,以此来收集反馈信息。这些反馈是软件持续改进的基础,有助于开发者及时发现并修复软件中的bug,优化程序性能,甚至是根据用户需求添加新的功能。 对于那些...

    服务器数据库维护方案.doc

    - 远程协助:远程解决数据库故障,解答使用疑问,进行在线诊断。 - 现场支持:针对复杂问题,提供现场技术支持。 - 补丁提供:根据需要免费提供数据库补丁,确保数据库的安全和性能。 - 性能优化:监控并调整...

    数据库系统概念英文版答案

    这个“数据库系统概念第五版答案”资源将涵盖以上所有内容,帮助读者解决学习过程中的疑问,巩固理论知识,并通过解答实践题目提升应用能力。对于正在学习数据库或准备相关考试的人来说,这是一个非常宝贵的参考资料...

    数据库原理与应用论文

    作为一篇关于数据库原理与应用的论文,主要介绍了课程网站的设计与开发,讨论了在线教育的重要性和课程网站的功能。同时也对 ASP、Access 数据库、Dreamweaver 等技术和工具进行了概述。 知识点: 1. 数据库原理与...

    数据库系统 基础教程答案(英文)

    这个压缩包包含的“数据库系统基础教程答案”很可能是一系列关于数据库系统理论问题和实践案例的解答,帮助学习者深入理解和应用相关概念。 首先,我们从第二章开始,通常会介绍数据库系统的基本概念,包括数据、...

    数据库原理与应用实验指导书.doc

    在进行实验前,学生需要了解所用的 SQL Server 2008 或者更高版本的性能和使用方法,复习和掌握与本实验有关的教学内容,准备好上机所需的源数据库文件,并对上机中出现的问题应事先估计,对程序中自己有疑问的地方...

    浅析金蝶专业版数据库实体置疑及处理方法

    - 文档鼓励用户在遇到技术问题或需要最新信息时,主动向金蝶的业务联系人或合作伙伴咨询,这有助于及时获取技术支持,解决使用过程中的疑问或故障。 #### 总结 本文深入解析了金蝶KIS专业版9.1数据库实体置疑的...

    labview论坛-数据库应用例子Code.rar_LabVIEW 数据库_数据库_数据库操作应用举例labview

    本例程"数据库应用例子Code.rar"显然是一个关于LabVIEW数据库操作的应用示例,旨在帮助初学者掌握如何在LabVIEW中与数据库进行交互。 首先,让我们了解一下LabVIEW中的数据库接口。LabVIEW自带的Database Toolkit...

    echarts+Servlet+mysql从数据库获取数据实现简单图表展示

    项目本人亲测,可完美展示图表,若有疑问,可Email我,Email:bpcforevery@gmail.com 。(ps:本人在另一个上传的文件中实现了用SSM框架实现的echarts展示图表的小demo,使用的数据库也是mysql,感兴趣的可以去看看)...

    PHD实时数据库API接口文档

    Honeywell PHD实时数据库API接口官方文档,该接口用以本地或者远程采集实时数据库中的数据,如有疑问欢迎互相交流

    人大金仓_KingbaseES_数据库入门指南for+linux

    以上是关于人大金仓 KingbaseES 数据库在 Linux 环境下的快速入门指南,希望对初次接触 KingbaseES 的技术人员有所帮助。在实际操作过程中可能会遇到各种问题,建议仔细阅读官方文档并参考相关技术社区的经验分享。

    oracle数据库从入门到精通

    如果读者在阅读本书的过程中遇到任何疑问,都可以通过提供的邮箱联系作者。 总之,本书《Oracle数据库从入门到精通》是那些希望掌握Oracle数据库知识的读者的一本宝典。它不仅能够帮助新手快速入门,也能够为开发...

Global site tag (gtag.js) - Google Analytics