我有一个数据库,可以存储数百万个帖子 ID#。我需要与每个帖子 ID # 关联一些用户 ID #(每个帖子 ID 大约 20-50 个)。我正在考虑在 PHP 中构建一个以分号分隔的列表,然后将其插入到帖子 ID 行的数据库字段中。
这是一种相对有效且好的方法吗?
谢谢!
最佳答案
对此的长答案是您需要创建一个一对多关联表。适当database normalization原则决定了这一点。
您的方法(将列表作为分号连接列表序列化到数据库中)的问题在于数据本身实际上是无用的,除非您可以反序列化它。
此类字段:
- 无法有效地编入索引。
- 可以增长到超过列的存储容量。
- 需要上下文才能正确使用。
- 无法使用外键完整性检查。
- 不能轻易修改。
- 删除整个字段需要重写整个字段。
- 无法直接查询。
- 不能用于
JOIN
操作。
你说的是创建一个简单的关联表:
CREATE TABLE user_posts (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
post_id INT
)
您在 user_id,post_id
上有一个 UNIQUE
索引,以确保您没有重复项。包含 id
列主要是为了让您可以删除特定行而无需指定用户+帖子对。
关于mysql - 分号分隔符是在 mysql 字段中存储大量 ID # 的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19102971/