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,时间戳)
从本质上讲,将数据存储在单独的表中并不是一个坏主意,只要有一个有意义的或逻辑上的原因将其存储在其中,例如逻辑数据分离。通常,在数据库中有冗余数据(非规范化)是一个坏主意,因为:
- 它占用更多的空间
- 维护起来更麻烦,写入时间也更长(将相同的数据写入多个位置)
- 您可能会得到一个不一致的数据库(比如,如果您把上面的问题搞砸了,并且没有写入所有需要写入的地方)
我能想到的拥有冗余数据的唯一原因是,对于您将一直在执行和读取的某种连接,您绝对需要提高性能。如果您拥有冗余数据,您可以消除连接/查找,直接从单个表中读取。没有人能够在不知道使用量。根据经验,你的系统使用量越少,它就越接近理论(标准化等)。你拥有的量越多,你就会发现自己需要打破理论