我有一个像SO,Wordpress等网站,你在那里发帖,你可以有(可选)标签。
处理此问题的常见数据库架构是什么?我假设它有很多< - >很多结构,有三个表。
有人有什么想法吗?
答案 0 :(得分:9)
三表多对多结构应该没问题。
EG。 Posts, PostsToTags(post_id,tag_id), Tags
关键是索引。确保PostsToTags表被双向索引(post_id,tag_id
和tag_id,post_id
)如果读取性能非常关键,您可以引入索引视图(可以为您提供post_name,tag_name)
您当然也需要帖子和标签上的索引。
答案 1 :(得分:1)
“我假设这是一个很多< - >很多结构,有三个表。任何人都有任何想法?”
更重要的是,没有任何严肃的替代方案,是吗?多对多关系中的两个关系表至少需要一个关联表来携带所有外键组合。
这样做了吗?谁知道。他们的数据模型包括引用计数,并且 - 对于所有已知的 - 日期时间戳和原始创建者以及关于标记的许多其他垃圾。
最低限度,必须有三个表。
他们在SO上所做的事情很难知道。
答案 2 :(得分:0)
我不完全确定这是否是SO的用途。但是有一个很好的讨论here。
答案 3 :(得分:0)
最好看一下wordpress如何为帖子处理标签,它会给你一些想法。
答案 4 :(得分:-1)
另一种可能性当然是只有两个表格。
鉴于最多有5个标签,可以使用一个对Tag表有五个可空的外键引用的Question表是可能的。
不是很标准化,但可能性能更高。