所以我创建了一个用户通知系统,我有一个user_notifications表,结构如下:
id
receiver_id
sender_id
action
action_type
entity_id
timestamp
现在,其他表中的值通过'entity_id'列连接到通知。所以我要说我也有这个名为 videos_watched 的表:
video_id
user_id
time_watched_for
他们从 user_notifications .entity_id连接到 videos_watched .video_id
我想要决定的是将数据存储在第二个表中是否也是一件坏事。我应该将 user_notifications 表视为交互表,而不是实际可靠地存储用户数据的位置吗?
答案 0 :(得分:2)
我接近此任务的方法是将您正在录制的数据分解为可管理的逻辑块(尽管这会受到使用量和您想要提取的实际信息的影响)。
例如,如果情况是您正在记录以下类型的数据:
然后将数据存储在单独的表中可能有意义,以便以有意义的方式分离信息。
所以从这个意义上来说,让你拥有通知的初始表也是有意义的(尽管这看起来更像是一个通知日志表):
基本上,将数据存储在单独的表中并不是一个坏主意,只要有一个有意义或逻辑的理由将其存储在那里,例如逻辑数据分离。
答案 1 :(得分:0)
通常,在数据库中存储冗余数据(非规范化)是个坏主意,因为:
我能想到的有冗余数据的唯一原因是因为你绝对需要为某种类型的连接提供性能提升,你将会一直在阅读和阅读。如果您有冗余数据,则可以取消连接/查找并直接从单个表中读取。