我有一个人们可以上传内容的系统,然后单个链接会识别上传的文件并显示给其他用户。每个文件都有自己的页面,它们将有一个注释框。现在我有了如何创建PHP脚本和SQL的一般概念,我只有一个问题。什么会更好?将每个文件的所有注释存储在一行中,并为每个新注释添加分隔符?或者为每个注释输入创建一个新行,但对文件具有相同的引用?我希望如果每条评论在SQL中都有自己的行,那么它每天很容易增长到数千个条目,我不确定这是否有效。
哪种方法最有效率?
答案 0 :(得分:1)
如果(每个)评论长度有限,则转到VARCHAR
类型的单独行。如果您为每个文件的所有注释选择单行,那么您不能事先估计长度注释,并且您必须声明它TEXT
类型,这意味着数据将存储在单独的文件中,这将是消极地影响检索时间。此外,使用单独的行可以更轻松地进行高级查询和数据挖掘。
另外,单独的行将符合高阶归一化的一些要求。
答案 1 :(得分:1)
为每个评论添加新行会更有意义。您可以在注释表中有一个列,它可以是FileID,并可以轻松地按结果过滤结果。虽然你会有人评论它并且会添加行,但它比单行更有效。特别是考虑到你可能没有足够的空间容纳成千上万的评论!
如果你真的担心有太多的评论,你应该研究像MongoDB或Cassandra这样的NoSql解决方案。这些系统专门用于处理大量插入物(即:新注释)。
答案 2 :(得分:0)
确保注释具有设置的最大长度,并且数据库中的行具有VARCHAR
类型。 不建议使用delemeter在一个字段中保存数据,如果您想在稍后阶段保存有关评论的信息(日期/由/ etc发布)或甚至在查询时,这将是一个真正的麻烦回来获取信息。
将它们作为单独的条目保存在单独的表中,并引用uploadId。