我的数据库中可以有 100 万个表吗?

Can I have one million tables in my database?

我的数据库中会有 advantages/disadvantages 到一百万 table 吗?

我正在尝试实施评论。到目前为止,我可以想到两种方法来做到这一点: 1. 将所有 post 的所有评论都放在 1 table 中。 2. 为每个 post 设置一个单独的 table 并将来自该 post 的所有评论存储在其各自的 table.

哪个更好?

谢谢

你最好有一个 table 用于评论,其中有一个字段标识每个评论属于哪个 post id。如果这样做,编写查询以获取给定 post id 的评论会容易得多,因为您不需要首先动态确定要查找的 table 的名称.

我在这里只能代表 MySQL(不确定这在 Postgresql 中是如何工作的)但请确保在 post id 字段上添加索引以便查询 运行 快速.

可以 一百万 table 但由于多种原因,这可能并不理想 [*]。经典 RDBMS 通常被部署和优化以在 table 的 hundreds/thousands 中存储 millions/billions 行。

至于你要解决的问题,正如其他人所说,使用外键关联一对 tables:帖子和评论 a la [MySQL 语法]:

create table post(id integer primary key, post text);
create table comment(id integer primary key, postid integer , comment text, key fk (postid));

{您可以添加约束以强制评论和帖子之间的引用完整性以避免孤立评论,但这需要存储引擎的某些功能才能有效}

主键 ID 的生成留给了 reader,但是像自动递增这样简单的东西可能会让您快速入门 [http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html].

哪个更好?

除非这是一项家庭作业,否则将这种 material 存储在经典 RDBMS 中可能不符合现代习语。保持相同的精神模式并使用类似 SOLR/Elasticsearch 的东西来存储您的 material 并从内容索引中受益,因为我相信您会想要避免编写自己的搜索引擎?您可以使用类似 sphinx [http://sphinxsearch.com] 的东西以相同的方式索引 MySQL。

[*] 如果您的模式没有一些非常规的结构,底层文件系统上的元数据量和压力将会有问题(例如一些 dated/legacy 存储引擎,如 MySQL 上的 MyISAM 将每个 table).

创建三个文件

在使用关系数据库时,您必须了解(稍微了解一下)规范化。 third normal form (3NF) is easy to understand and works in almost any case. A short tutorial can be found here。如果需要 more/other/better 个示例,请使用 Google。

每条记录一个 table 是红灯,你知道你错过了什么。这也意味着您需要动态 DDL,当您有新记录时,您必须创建新的 tables。这也是一个安全问题,数据库用户需要很多权限,成为一个安全风险。