具有一对多关系的2张桌子上的附加桌子

时间:2019-01-09 02:27:11

标签: database postgresql database-design relational-database

我有3张桌子。 A,B和C。

A可以有很多B,而B可以有很多C。

所以我从A到B建立了一对多的关系,在B上有A_id。

我从B到C建立了其他一对多的关系,在C上有B_id。

所有操作均安全无虞。生活是美好的,直到 有时候我需要批量插入表C。我也必须向C插入B_id。

我的问题是,如果我包含A_id,可以吗?  在C表中,以帮助查询C中的数据,因此在实际获取A的数据之前,我不需要先从B中获取数据。

很抱歉,这有点令人困惑。如果需要,鼓励进一步编辑以更好地进行类比。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

没关系,如果您知道自己在做什么,并且可以证明它是合理的。这称为反规范化。请记住,如果更改表B中的A_ID,则也必须在表C中的相应行中也对其进行更新。如果您觉得不方便-那么您不应该将A_ID引入表C中,而应该通过联接到表B来派生它。