当前位置: 首页 > 面试题库 >

哪种数据库设计可提供更好的性能?

潘凯
2023-03-14
问题内容

我想select检索person并进一步进行一些插入,删除和更新。

如果我想找寻person谁住Brazil的最好的方法是什么?

制作2个外键citycountry在表中person

Person(id, name, profession, **id_country**, **id_city**)   
cities (id, city, **id_country**)  
countries (id, country)

或者只是一个外键citiesperson和其他外国键countycities

Person(id, name, profession, **id_city**)   
cities (id, city, **id_country**)   
countries (id, country)

或像第一个选项一样制作 视图

对于插入,删除和更新数据,它们仍然是最好的表吗?性能没有区别吗?我也很困惑,什么会影响架构的性能?


问题答案:

根据具体情况
进行一些权衡分析。在这种情况下,无法回答您的问题。

我在两个版本中看到的唯一区别是Person表中的外键id_country:

人(id,姓名,职业,* id_country *,id_city)
城市(id,城市,id_country)
国家(id,国家)

问题是“我们需要吗?”

因此,两种解决方案的利弊:

1.解决方案:使用id_contry:

  • 优点:更容易根据土地检索人(更简单的查询),并且此查询的性能更好
  • 缺点:更复杂的底层数据库和更多冗余,减少数据库中不一致的机会更大,更新难度更大

2.解决方案:不使用id_country:

  • 优点:更简洁的模型,无冗余,易于维护
  • 缺点:性能降低,基于土地的人员检索查询更复杂(查询更简单)

因此,第一种解决方案有效地为您提供了更简单的查询结构和更好的性能,可按国家(按需要)检索“人”,但是它有其成本(请见优点和缺点)。另一方面,务实的思想认为乡村城市的数据非常稳定且不经常更改,这一事实有利于第一种解决方案。

如果您可以忍受这种非规范化和出现不一致的可能性,则可以采用第一种解决方案。



 类似资料:
  • 问题内容: 我对选择两种方法感到困惑。 方案 有两个表,并分别。包含用户数据,例如名字,姓氏等 包含每个用户拥有的汽车及其说明。即,等等 现在,如果我想获得所有用户的所有信息,那么哪种方法最好在最短的时间内完成? 方法1。 查询其中的所有行,并将它们全部存储在ex的列表中。 然后循环浏览列表并对其进行查询,并根据第一步中保存的用户从中获取数据。 方法2 查询所有行,并在保存该行时从中获取所有值并保

  • 问题内容: 哪个NoSQL数据库可以提供对查询结果集的 更改 流? 有人可以指出一些例子吗? 首先,我认为没有SQL数据库提供此功能-我正确吗? 我需要能够指定任意的,简单的查询,这些查询在SQL中可能等效为: 我想要一个初始结果集: 但是然后,我希望一直跟随着一系列的变化,直到停止它们: 注意:我 不是 在谈论大型结果集的流式传输。我正在寻找变化的软实时流。 另外,如果可能,它需要向外扩展。 谢

  • 使用指南 - 数据报告 - 概述 - 百度统计提供哪些数据报告 百度统计提供各种维度的访客行为分析报告,这些报告可以帮助您全方面改善网站质量与推广方案: 流量分析- 多少人来过您的网站?(流量分析报告) 流量分析模块包含流量趋势分析、实时访客、跨屏分析等报告,能告诉您谁来过您的网站,他们分别来自什么地域,以及这些访客是否足够关注您网站等等。 流量来源-访客从什么途径来?(来源分析报告) 流量来源模

  • 问题内容: 我有一张叫订单的桌子。订单上的一列是customer_id, 我有一个名为“ customers”的表,具有10个字段 给定两个选项,如果我要建立一个订单对象数组并将其嵌入到一个客户对象中,那么我有两个选择。 选项1: 一种。首先查询订单表。b。遍历记录并查询人员表以获取人员的记录 这将是这样的: 选项2: 一种。在所有领域参加 #2是显而易见的,因为您只执行一个查询,而不是1 + [

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 2年前关闭。 改善这个问题 我正在寻找有关关系数据库设计,性能调整等最佳实践的书/站点/教程。有很多“这里是归一化,这是ER图,”,但在实际示例中却没有太多。有人有想法么? 问题答案: 图书:仅凡人的数据库设计

  • 我正在创建一个应用程序,其中大量数据将存储在服务器中。例如待办事项列表。 一个用户来了,写下他的待办事项清单,就像一张每天100项任务的清单。因此,所有的任务都会像列表一样显示给他(100个字符串)。 以下哪一项更适合存储数据: > JSON文件 对于每个用户,都会有一个文件夹和一个day文件夹,如- abc_user(文件夹) ..对于其他用户也是如此。 每个json文件都有一个对象数组,比如