1

我想存储各种机构的数据。我想存储允许所述机构在其国家/地区内的位置的数据。

因此,我需要为每个机构存储城镇数据、县数据和国家数据。

我分别有一个城镇、县和国家数据库,它们都链接在一起,例如我可以搜索一个城镇,它的“county_id”列与县表中一个县的 ID 相匹配。

我想知道从实际建立表中引用这些数据的最佳方法。

目前,在此表中,我只有一个包含相应数据的城镇、县和国家列。

我的 URL 结构是 website.com/country/county/town/name,因此拥有这样的数据可以让我通过一个查询找到一个机构,而无需连接等。

只有一列具有城镇 ID,然后每次使用连接查询以查找县/国家/地区数据有什么好处?显然,一个好处是,如果任何数据发生更改,它本身会自动更新。另一个我想是它需要更少的数据库存储空间。

但另一方面,它需要更多的查询。

有什么想法吗?

谢谢

4

2 回答 2

2

好吧,您对这句话非常满意:反规范化通常有助于读取性能,但不利于写入性能,而规范化通常相反。

通常,您对特定数据的读取次数要多于写入次数。如果你是这种情况,那么我会保留数据(每个机构条目中都有重复的城镇、县等)。更新速度会更慢(更多代码、更多验证、更多时间发送和执行更新),但读取速度更快(更简单的查询代码、更少的数据库端执行查询等)。我最近参与了一个项目,其中数据每月更新一次,但每天读取(显示在 Web 应用程序中)多次,所以我们最终摆脱了标准化数据库和大量连接(伪或实际) ,复制到与您在此处所拥有的数据类似的数据,并且 Web 应用程序的读取性能和响应能力显着提高。

哦,就数据库空间(如磁盘上占用的物理空间)而言,虽然理论上正确化表会减少空间(有时会显着),但这不会真正显着影响读取和/或写入速度, 所以如果你只在追求性能时不考虑这个论点(并且不关心磁盘空间),你会更好。

于 2012-10-05T11:57:38.310 回答
0

在您的情况下,没有节省数据库空间,但您可以很容易地维护更改。购买,因为城镇不改变县或国家,你的数据库是安全的!

在这种情况下拆分它意味着存储和性能成本。如果不需要额外的数据,请不要拆分它!

于 2012-10-05T11:55:25.423 回答