mysql - 实现共享评论表

标签 mysql database database-design relational-database

已经提出了各种类似的问题,但它们要么不一样,要么我无法理解答案。 所以非常简单,请......我有各种表格,这些表格都有一个评论字段,其中可能包含多个评论。显然,前进的方向是引用 Comments 表。我没意见。 但我无法想象 2 个或更多表如何共享同一个 Comments 表,并且拥有 Table1Comments、Table2Comments 等似乎很疯狂。我正在使用 phpMyAdmin,如果我共享相同的名称,则它不是唯一的并且会失败。

如何修改如下,让Table1和Table2都在Comments中存储评论?

[表 1: *表1ID]

[表 2: ?table2ID]?

[评论: 评论ID, *表1ID, 评论, 日期]

LittleC 在这篇文章中说他自己这样做 Foreign key referring to primary keys across multiple tables?但我无法理解答案!

请不要关闭,因为它与其他人相似,因为我已经陷入僵局,需要帮助!谢谢

最佳答案

我已经在我编写的一个大程序中做到了这一点(无论好坏)。关键(双关语意)是您必须在表中添加“类型”指示符。你写了

[Comments: commentID, *table1ID, comment, date]

显然 tableID 不是唯一的,因为它可以引用您示例中的任何一个表。您需要添加一个额外的字段(通常但不一定是字符)来标识表格。因此结构应该是

[Comments: commentID, *table1ID, type, comment, date]

在我的程序中,表“dockets”、“projects”、“customers”(可能还有其他)将他们的评论存储在“comments”表中。因此,'type' 字段具有 D、P 和 C 等值以进行区分。

我上面的建议与 LittleC 对您提到的问题的回答之间的区别在于,我使用的是字符来区分,而他/她使用的是整数。我的解决方案比较有限,但可能更清晰;它也足以满足我的需要。另一个解决方案需要一个表的表。

关于mysql - 实现共享评论表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28309931/

相关文章:

mysql - 数据库 - 存储自定义变量 - 典型的wordpress数据库设计

mysql - 将文件信息存储在数据库中

mysql - 选择输入的第一部分在列中的位置

mysql,只返回大于10000的结果

sql-server - 为 Microsoft SQL Server 创建统计信息时,列顺序是否重要?

c++ - 数据库访问对象设计模式

mysql - 有效地搜索表中的特定短语

xampp for mac 用户无法启动 mysql

mysql - 如何让命令行客户端以shell启动>

database - 索引组织表和普通表重建索引有什么区别?