我想select检索person并进一步进行一些插入,删除和更新。
select
person
如果我想找寻person谁住Brazil的最好的方法是什么?
Brazil
制作2个外键city并country在表中person:
city
country
Person(id, name, profession, **id_country**, **id_city**) cities (id, city, **id_country**) countries (id, country)
或者只是一个外键cities表person和其他外国键county表cities
cities
county
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:
因此,第一种解决方案有效地为您提供了更简单的查询结构和更好的性能,可按国家(按需要)检索“人”,但是它有其成本(请见优点和缺点)。另一方面,务实的思想认为乡村城市的数据非常稳定且不经常更改,这一事实有利于第一种解决方案。
如果您可以忍受这种非规范化和出现不一致的可能性,则可以采用第一种解决方案。