php - 在 SQL 的用户输入上组织用户输入 n 用户输入

标签 php mysql sql

首先是一些背景故事:

我正在创建一个网站(和我的队友一起),用户必须能够在其中创建“概念”(包括时间戳、创建它的用户、标题、描述、摘要等等)。在上述概念上,人们必须能够发布“想法”(时间戳、创建者的 ip、文本)。最后,人们必须能够对创意发表评论(其中包含与创意相同的内容)。

tl;dr:我们正在构建一个具有类似于 StackOverflow 的基础设施的网站:它有 3 层(没有更好的词)用户输入:问题、问题的答案,以及对这些答案的评论。

最初,我和我的队友考虑做的是为所有概念创建一个表格,然后每个概念也有一个标题为 <the concept's id in the table>_ideas 的表格。然后每个想法都会在该表和另一个标题为 <the concept's id in the table>_<idea id in the concepts's id table>_ideas 的表中得到一行然而,对此进行的一些快速测试表明我们收到了表格的垃圾邮件......

因此我们需要重组当前的 SQL,我们目前的想法是简单地将想法和评论表结合起来,并在该表中创建一个额外的字段来表示该行是想法还是评论。

但是,我想在我们做任何事情之前把这个问题抛给堆栈溢出:

组织三层 SQL 数据的最佳(我的意思是最快)方法是什么?

最佳答案

each concept would also have a table

表格并不意味着是动态元素。当然可以,但要认真。

关系数据库结构具有静态数量的表。

请阅读 fundamentals of relational database design

是否将不同的实体合并在一个表中,并添加一个字段来区分它们,这是一个非常有效的问题。

最后我认为这取决于应用程序。它可以严重加快事情的速度,但也会减慢速度。我更喜欢单独的表,因为您可以保存一个索引,并且将来使用分片可能会更容易。 UNION 语句很便宜。

话虽这么说。从固定对象开始,为它们创建表格。

为“概念”创建一个表,一个为“想法”创建一个表,一个为“评论”创建一个表,一个为“用户”等...

评论有一个“idea”字段,它们属于哪个idea等等。

关于php - 在 SQL 的用户输入上组织用户输入 n 用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6726022/

相关文章:

php - 匹配来自 url 的 where 条件中的人名

javascript - 未授权用户的单独页面或同一页面的不同配置?

php - 无连接 (#2002) 从一个 IP 连接到 MySQL 数据库时出错,但从另一个 IP 可以正常工作

php - 使用 PHP 调用 Virtualenv’ed Python 脚本

Mysql date_add 1年

sql - PostgreSQL:获取数组中指定元素的出现次数

来自复选框值的 PHP 数组仅返回数组而不是值

mysql - 最大日期组按月、年和 ID 的累计总和

sql - 消除重复记录

SQL 为每个属性添加总计行