加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:23:50 所属栏目:MsSql教程 来源:网络整理
导读:我想选择检索人员,并进一步进行一些插入,删除和更新. 如果我想找回居住在巴西的人最好的方法是什么? 在表人中制作2个外国城市和国家: Person(id,name,profession,**id_country**,**id_city**) cities (id,city,**id_country**) countries (id,country) 或者
我想选择检索人员,并进一步进行一些插入,删除和更新.

如果我想找回居住在巴西的人最好的方法是什么?

在表人中制作2个外国城市和国家:

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

或者只是桌面城市中的一个外键和表城市中的另一个外键县

Person(id,**id_country**)   
countries (id,country)

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

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

解决方法

这个问题非常类似于你所做的那个问题:

Create many tables or just one

答案也是类似的 – 这取决于你想要达到的目标.两种解决方案都可以起作用,两者都有利有弊,应根据具体情况进行一些权衡分析.出于这种情况,不可能回答你的问题.

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

人(id,**** id_country ****,id_city)
城市(id,id_country)
国家(身份证,国家)

问题是“我们需要吗?”

那么,两种解决方案的优缺点:

1.解决方案:使用id_contry:

>专业人士:根据土地(更简单的查询)更轻松地回溯人员,并更好地执行此查询
>缺点:更复杂的数据库和更多的冗余,更多的机会在数据库中产生不一致,更难更新

2.解决方案:没有id_country:

>专业:更简单,更清洁的模型,无冗余,更易于维护
>缺点:性能较慢,查询更复杂,可根据土地进行人员追溯(简单查询)

因此,第一个解决方案有效地为您提供了更简单的查询结构和更好的性能,可以按国家/地区检索人员(您想要的),但它有其成本(参见优缺点).另一方面,务实的思考认为,国家 – 城市数据非常稳定,而且经常不会改变,这一事实有利于第一种解决方案.

如果这种非规范化和轻微的不一致的可能性,你可以采取第一种解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读