我有一个数据库,它将存储数百万个 Post ID#s。我需要将每个帖子 ID # 与多个用户 ID # 相关联(每个帖子 ID 大约为 20-50)。我正在考虑在 PHP 中构建一个以分号分隔的列表,然后将其插入到 post ID 行的 DB 字段中。
这是一种相对有效和好的方法吗?
谢谢!
我有一个数据库,它将存储数百万个 Post ID#s。我需要将每个帖子 ID # 与多个用户 ID # 相关联(每个帖子 ID 大约为 20-50)。我正在考虑在 PHP 中构建一个以分号分隔的列表,然后将其插入到 post ID 行的 DB 字段中。
这是一种相对有效和好的方法吗?
谢谢!
对此的长答案是您需要创建一个一对多的关联表。适当的数据库规范化原则规定了这一点。
您的方法的问题是将列表作为分号连接的列表序列化到数据库中,除非您可以反序列化,否则数据本身实际上是无用的。
此类字段:
JOIN
操作。您正在谈论创建一个简单的关联表:
CREATE TABLE user_posts (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
post_id INT
)
您将有一个UNIQUE
索引user_id,post_id
以确保您没有重复项。包含一id
列主要是为了您可以删除特定行而无需指定用户+帖子对。
不,这是一个非常糟糕的主意。
Aforeign key
是你想要的。基本上,对于每一个,post_ID
您还将 存储USER ID
为外键。
因此,如果您有一个POSTS
表,则添加一列User_ID
(或Poster_ID
)并USER ID
在USER
表中引用。
我认为您应该查看一些基础知识 - 请参阅链接: