首页 > 编程知识 正文

数据的逻辑独立性是指(外键不一定要与相应的主键同名)

时间:2023-05-03 21:41:54 阅读:81943 作者:2547

对主键/外键/索引来说,有些开发团队认为是处理数据库关系的利器,有些开发团队认为是处理特定业务的恶魔,你的想法是什么? 在实际的APP中采取什么样的方法?

大家共同的观点:

主键和索引是必不可少的,不仅可以优化数据的搜索速度,还可以让开发人员省去其他工作。

矛盾:数据库设计是否需要外键。 这里有两个问题。 一是如何保证数据库数据的完整性和一致性;二是对第一个性能的影响。

正面看法:

1 )数据库本身保证数据的完整性、完整性、更可靠。 虽然程序难以100%保证数据的完整性,但是使用外键可以最大限度地保证数据的完整性和完整性,即使在数据库服务器崩溃或出现其他问题时也是如此。

()数据库和APP是一对多的关系,a APP应用维护他的数据的完整性。 系统变大后,会追加b APP应用,a和b两个APP应用可能是不同的开发团队做的。 如果他们如何协调以保证数据的完整性,一年后添加c APP,会怎么样?

2 )具有主外键的数据库设计可以提高ER图的可读性,这在数据库设计时非常重要。

3 )外键在某种程度上说明的业务逻辑,使设计周全且具体全面。

另一方面的观点:

1 )可以通过触发器和APP来保证数据的完整性。

2 )如果过分强调或使用主键/外键,则会产生开发困难、表过多等问题。

3 )不使用外键时,数据管理简单、操作简单、性能高(insert、update、delete数据的导入导出等操作更快)。

eg:请勿在庞大的数据库中考虑外键。 想想一个每天插入数百万张记录的程序。 如果有外键约束,则每次扫描该记录是否通过时,多个字段通常都有外键。 这样,扫描次数呈级数增长。 我的程序入住三个小时就结束了。 加上外键,需要28个小时!

结论:

1 )在大型系统中)使用外键(性能要求不高,安全要求高); 在大型系统中,(性能要求高,可以安全地自己控制)不使用外键; 小系统是自由的,最好使用外键。

2 )使用外键是合适的,不要过分追求。

3 )如果不使用外键,通过编程控制数据的完整性和完整性,则需要编写一个层以保证,然后每个APP都需要通过该层访问数据库。

最后说两句,其实外键这东西不好,不能用,这种认识也并不错误。 如果只是没有外键约束,那么可以随心所欲地写SQL,包括徒手修理数据时不受约束,反而是本末倒置的做法。 为了追求这样的便利,关系型数据库不应该失去提供的重要保障。

最后一次

有意思的是,查了一些资料,国内一色支持不使用外键,国外推荐使用外键……但是,国外并不是不允许使用外键进行insert开销,大部分情况下是忽略的另外,我认为关系数据库的核心功能其实是关系和事务。 关于数据的完整性、一致性,使用它。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。