3

我有几个数据库表,它们对于不同类型的信息具有完全不同的字段。这些表代表应用程序前端中不同类别的数据。我想为所有这些数据集实现评论功能,无论它们属于什么类别(数据库表)。

所以我会设置一个“评论”表,其中每个条目都将作为 1:n 关系分配给某个数据集。当然,如果所有数据都存储在单个表中,这根本不是问题,但是我如何通过存储在多个表中的数据来解决这个问题,因为我只有每个表的唯一 ID?我需要所有表的某种全局 ID。

我正在考虑一个特定的表(类似于“glob_id,table,id”)来分配全局唯一 ID,但我一直在寻找一种方法,将表对应的 ID 分配给唯一的全局 ID。

任何尝试,如何解决这个问题?这是一个好方法吗?有什么不同的做法吗?

如果可能的话,我想在数据库级别解决这个问题。

4

1 回答 1

2

我不会继续使用 GUID / UID / 全局唯一标识符。相反,我会在主消息表和存储要评论的实体的单个表之间创建映射表。

每次插入到评论表中都会有一个 ID,然后该 ID 将被插入到包含要评论的原始实体的 ID 和评论 ID 的映射表中。

例如

产品

id
name

产品评论

product_id
comment_id

另一张桌子

id
anothervalue

anothertable_comments

some_id
comment_id

comments table

id
comment

The reason I would use a mapping table is because you would be required to create a new global identifier in each of your existing tables. The mapping table would also allow a many – many as well as a one to one relationship so someone could apply the same comment to more than one existing table.

Edit:

Single mapping table:

If there are lots of tables you want to add this to you can just create a single mapping table. For example:

comments_table

id
comment

table_map

table_name
table_id
comment_id

This way you would add the table name and the id of the row along with the comment id to this single mapping table. This reduces the number of tables you have to insert but you must then think about appropriate indexing for performance reasons as you don’t want to do a full table scan on mapping tables.

于 2013-03-02T20:30:49.657 回答