我正在建立一个小练习论坛.我看到像phpBB这样的论坛将线程文本存储在一个单独的表中.
为什么?为什么不将它们全部存储在同一个表中?
就像是:thread_id, thread_date, thread_text, thread_author
为什么这样做?你会怎么做?
我在网上发现了这个酷的架构.
架构http://yensdesign.com/tutorials/forumsdatabase/schemaFull.jpg
对于任何基本论坛的数据库架构来说,它似乎都是不错
我知道这已经过时了,但我想我会发布这个给那些会再次发现这个问题的人.
我实际上并不知道为什么这样做,但我能想象的一个原因是优化后期元数据(日期,作者等)的搜索和检索.
根据Joel(和Joel永远是对的!;-)数据库将数据存储在组成固定长度记录的固定长度字段中,因此只需将指针递增一个字节长度就可以很容易地从一行跳到下一行.记录.但是用于存储帖子文本的大文本字段不能具有固定大小,因为帖子的长度在很大范围内变化,并且创建足够大的固定长度存储以容纳所有帖子会浪费大量空间.这意味着将帖子文本存储在同一个表中,因为当您想要检索大量帖子的元数据时,其他信息会使它变慢很多,就像每次有人查看主论坛页面时那样.
获得两全其美的方法是将固定长度的字段(即除文章后的所有内容)放在一个表中,将可变长度字段(即后置文本)放在另一个表中.