在我的网站上,我有一个论坛,您可以在其中发起话题、回复话题、删除您的帖子、举报他人的帖子等。
我决定进行抽象并创建一个名为的表,该表activity
将存储user_id
, time
(每个活动共有的字段)和活动类型(线程、响应、报告、删除)和effective_id
(id
对应于各自的桌子)。
一开始,这似乎是个好主意,因为它有助于避免冗余,并且可以更容易地查找某个用户所做的事情,而无需询问每个表。但同时,这种抽象会导致更复杂的查询(例如,必须INNER JOIN
在几乎每个简单查询中使用),现在我在处理更复杂的查询时遇到了麻烦。
所以我的问题是:我做出了正确的决定吗?在现实生活环境中拥有一个完美的数据库是否如此重要,即使它会导致非常昂贵的查询?