我一直在考虑用PHP创建一个论坛,所以我做了一些研究,看看人们在数据库中创建的表的标准是什么。在我查找的大多数网站上,他们总是选择为线程创建一个表,为线程上的帖子选择第二个。
拥有一个表的线程似乎对我来说是完全合理的,但是一个表来保存所有线程上的所有帖子看起来有点太多了。是否更好的是为每个线程创建一个表,该表将保存该线程的帖子而不是在一个表中粘贴几十万个帖子?
答案 0 :(得分:3)
表格应代表数据库中数据的结构。如果您有2个对象(在本例中是您的主题和帖子),则应将它们放在2个表中。
相信我,如果你按照自己的想法去做,那么试图找出每个帖子的正确表格将是一场噩梦。 SQL会是什么样的?像
这样的东西SELECT *
FROM PostTable17256
并且您必须在每个请求上动态构造此查询。
但是,通过使用1个表,您只需获取一个ThreadID并将其作为变量传递给您的查询。
SELECT *
FROM Posts
WHERE ThreadID = $ThreadID
关系数据库旨在拥有包含大量行的表。你可能会惊讶于DBA认为顺便说一下这是一个“很多”。在大多数地方,包含1,000,000行的表被认为是中小型。
答案 1 :(得分:1)
Nope nope nope。数据库爱大桌子。将帖子拆分成多个表会引起许多令人头疼的问题。
答案 2 :(得分:0)
将帖子存储在一个表中是最佳解决方案 MySQL可以轻松地在表中保存数百万行。
创建多个表可能会导致很少的问题。 例如,您将无法使用来自不同线程的帖子来加入JOIN。