Php 多表数据冗余

Php 多表数据冗余,php,mysql,database,schema,Php,Mysql,Database,Schema,因此,我创建了一个用户通知系统,我有一个用户通知表,其结构如下: id receiver_id sender_id action action_type entity_id timestamp 现在,其他表中的值通过“entity_id”列连接到通知。假设我还有一张叫做“视频”的桌子 video_id user_id time_watched_for 它们从用户通知.entity\u id连接到观看的视频.video\u id 我想确定的是,将数据也存储在第二个表中是否是一件坏事。我是否应该

因此,我创建了一个用户通知系统,我有一个用户通知表,其结构如下:

id
receiver_id
sender_id
action
action_type
entity_id
timestamp
现在,其他表中的值通过“entity_id”列连接到通知。假设我还有一张叫做“视频”的桌子

video_id
user_id
time_watched_for
它们从用户通知.entity\u id连接到观看的视频.video\u id


我想确定的是,将数据也存储在第二个表中是否是一件坏事。我是否应该将用户通知表视为一个交互表,而不是一个实际可靠地存储用户数据的地方?

我执行此任务的方法是将正在记录的数据分解为可管理的逻辑块(尽管这受使用量和您想要提取的实际信息的影响)

例如,如果您正在记录以下类型的数据:

  • 用户信息(电子邮件、id、姓名等)
  • 视频(id、标题、文件名等)
  • 观看的视频(视频id、用户id、观看时间)
然后将数据存储在单独的表中,以便以有意义的方式分离信息,这可能是有意义的

因此,从这个意义上讲,拥有通知的初始表也是有意义的(尽管这看起来更像一个通知日志表):

  • 通知表(id、接收方id、发送方id、操作、操作类型、, 实体(id,时间戳)

从本质上讲,将数据存储在单独的表中并不是一个坏主意,只要有一个有意义的或逻辑上的原因将其存储在其中,例如逻辑数据分离。

通常,在数据库中有冗余数据(非规范化)是一个坏主意,因为:

  • 它占用更多的空间
  • 维护起来更麻烦,写入时间也更长(将相同的数据写入多个位置)
  • 您可能会得到一个不一致的数据库(比如,如果您把上面的问题搞砸了,并且没有写入所有需要写入的地方)

我能想到的拥有冗余数据的唯一原因是,对于您将一直在执行和读取的某种连接,您绝对需要提高性能。如果您拥有冗余数据,您可以消除连接/查找,直接从单个表中读取。

没有人能够在不知道使用量。根据经验,你的系统使用量越少,它就越接近理论(标准化等)。你拥有的量越多,你就会发现自己需要打破理论