gpt4 book ai didi

mysql - 单独的表或数据透视表(或两者)

转载 作者:行者123 更新时间:2023-11-30 01:16:58 25 4
gpt4 key购买 nike

我网站的用户可以上传文件。在 question 的帮助下,我提出了两种用于建模文件状态的设计。 .

示例状态为 - 已删除、待处理、禁止、上传

设计 A - 单独的表

文件 - file_id(pk) |用户 ID(fk) |文件名

禁止文件 - file_id(fk) |禁令原因 |管理员用户 |时间

已删除文件 - file_id(fk) |永久删除 |时间 |删除者

待处理文件 - file_id(fk) |开始时间 |等待

<小时/>

设计 B - 数据透视表和单独的信息表(两者)

文件 - file_id(pk) |用户 ID(fk) |文件名

状态 - status_id(pk) status_text

文件状态 - file_id(fk) |状态 ID(fk) | info_id(fk) <-- 此链接到另一个表中的记录,该表存储有关此状态的信息,例如(ban_reason、admin_user、时间)

禁止信息 - info_id(fk) |禁令原因 |管理员用户 |时间

已删除信息 - info_id(fk) |永久删除 |时间 |删除者

待处理信息 - info_id(fk) |开始时间 |等待

<小时/>

我对设计 A 的主要担忧是,在选择文件时,我必须连接多个表以检查它们是否被禁止等。设计 B 旨在防止需要执行连接,因为我只会需要加入一张表。

您会推荐哪种设计?

设计 A 的选择查询是否会太慢?

最佳答案

如果您担心性能,可以在文件表中包含一个名为 active 的 BIT 列。 1 表示它处于事件状态,0 表示不活动。这可以让您仅使用一个表找到所有事件文件,但维护它会产生一些开销。这与设计 A 很相配。

关于mysql - 单独的表或数据透视表(或两者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18963582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com