对不起,如果我的标题不清楚。我正在使用 PHP 制作一个网站,用户可以在其中提交帖子。我目前正在使用 MySQL 数据库来存储用户和帖子。我还想存储每个用户和每个帖子之间的相关值。这是这样的想法:
-----------------
| user1 | user2 |
-------------------------
| post1 | #val | #val |
-------------------------
| post2 | #val | #val |
-------------------------
我希望我可以在 MySQL 中创建一个这样的表,但是我不能使用准备好的语句选择列名,除非我连接到一个查询中,这显然不理想。
我之前问过一个类似的问题,回答是制作一个三列表,其中每一行代表一个相关性。像这样:
=======================
| user | post | value |
=======================
| usr1 | pst1 | #val |
-----------------------
| usr2 | pst1 | #val |
-----------------------
| usr1 | pst2 | #val |
-----------------------
| usr2 | pst2 | #val |
-----------------------
我不喜欢这个。它存储了大量无关的数据,因为它多次存储每个用户的 id 和多次存储每个帖子的 id。它还需要大量的行;如果我只有 100 个帖子和 100 个用户,那将是 10,000 行。
我不害怕在我的项目中添加另一个数据库(或者如果我喜欢它,可以完全切换到另一种数据库类型)来适应这种情况。我知道那里有很多 NoSQL 数据库,但我对 MySQL 之外的任何东西都没有经验,而且我不知道哪种数据库适合我的需求。
我对在 MySQL 中这样做的担忧是否合理?或者 MySQL 可以处理那么多行吗?在 MySQL 中是否有另一种更有效的方法?如果没有,我想知道最好的数据库类型是什么。
这似乎是一种非常常见的存储类型,但我看不到在 MySQL 中执行此操作的合理方法;因此我想那里有一种数据库类型非常适合这样做。