我想存储各种场所的数据。 我想存储允许所在机构在其国家内的位置的数据。
因此,我需要为每个企业存储城镇数据,县数据和国家数据。
我有一个城镇,县和国家数据库,它们都链接在一起,例如我可以搜索一个城镇,它的'county_id'列匹配县表中县的ID等。
我想知道从实际建立表中引用这些数据的最佳方法。
在此表中,我只有一个包含相应数据的城镇,县和国家/地区列。
我的网址结构是website.com/country/county/town/name,因此拥有这样的数据可以让我找到一个包含一个查询的网站,而且没有连接等。
只有一个列具有城镇ID,然后每次查找县/国家数据时使用联接查询有什么好处?显然,一个好处是,如果任何数据被更改,它本身会自动更新。另一个我认为它需要更少的数据库存储空间。
另一方面,它需要更多查询。
有什么想法吗?
由于
答案 0 :(得分:2)
好吧,你对这句话非常感兴趣:去标准化通常有助于读取性能并且对写入性能有害,而标准化通常则相反。
通常,您执行的读取次数超过对某些数据的写入次数。如果是这种情况,那么我将按原样保留数据(在每个企业条目中都有重复的城镇,县等)。更新速度会更慢(更多代码,更多验证,更多时间发送和执行更新)但读取速度更快(查询代码更简单,数据库端执行查询的时间更少,等等)。我最近在一个项目中工作,每月更新一次数据,但每天多次读取(在Web应用程序中显示),所以我们最终从拥有标准化数据库和大量连接(伪或实际) ,对于与此处类似的重复数据,Web应用程序的读取性能和响应能力显着提高。
哦,就数据库空间而言(就像在磁盘上占用的物理空间一样),虽然从理论上来说规范化表会减少空间(有时是显着的),这不会真正影响读取和/或写入速度显着,所以如果你只考虑性能(并且不关心磁盘空间)时不考虑这个参数,你会更好。
答案 1 :(得分:0)
在您的情况下,没有数据库空间节省,但您可以非常轻松地维护更改。购买,因为城镇不改变县或国家,你的数据库是安全的!
在这种情况下拆分它意味着存储和性能的成本。如果不需要其他数据,请不要将其拆分!