了解关系数据库中的非规范化?

Understanding Denormalization in Relational Databases?

假设我在 NF3

中有如下 tables

Table 姓名:地址

Table 姓名:

Table 姓名:国家/地区

现在我想对这个 table 进行非规范化,这样读取速度会更快,而且我不需要加入多个 tables,但我无法理解什么是反规范化。

示例 1) 我是否需要像上面那样在 3NF 中保留 tables,以及像 state_name、country_name 这样的地址的额外列,所以结果 table 看起来如下所示。

Table 姓名地址

示例 2) 我是否需要从 Address table 中删除 state_id 并保留 state_namecountry_name

Table 姓名地址

从以上2个例子看,哪个是反规范化?

引用 Wikipedia:

Denormalization is the process of trying to improve the read performance of a database, at the expense of losing some write performance, by adding redundant copies of data or by grouping data.

因此,通过将 state_name 添加到 Address table,您已经对数据库进行了非规范化。

消不消state_id无所谓。添加一个像 state_name 这样有很多行具有相同值的列的简单操作会使数据库非规范化。

你展示的两个例子都是非规范化的。出于实际目的,您可能希望存储 state_id。否则您将失去与州 table 的连接,因此无法更新州名(和国家/地区名称)。

这是一个似乎可以解决您的问题的页面。

https://rubygarage.org/blog/database-denormalization-with-examples

此致,
比亚尼