【问题标题】:PHP + MySQL - one table holding reference to IDs from multiple tablesPHP + MySQL - 一张表包含对多个表中的 ID 的引用
【发布时间】:2016-02-16 12:49:09
【问题描述】:

我只是想知道让一个表保存对多个表中的 ID 的引用的最常用方法是什么。

我有一个包含客户、供应商、订单等模块的系统,我想为所有这些模块添加“注​​释”功能,以便能够添加/读取注释。

由于一个客户/供应商/订单可以有多个注释,我选择了一对多的关系方式,因此他们表中的注释应该引用单独列中的特定项目 ID。 但由于我将引用来自多个表的 ID,它们的 ID 会重叠,我需要一种方法来说明在哪个特定表中搜索该 ID。

我不想为我的每个模块创建完全相同的笔记模块,在这里我可以将笔记集中在一个表格中。这些注释的区别仅在于它们属于哪个模块。

我可以

  • 在notes表中存储特定的表名?但是这个名字可以 稍后更改,系统将中断
  • 在我的所有模块中引入 UNIQUE ID 或哈希值, 这在不同的表中是唯一的,并将它的 id 存储在 笔记表?
  • 为每个模块创建单独的注释表,不用担心 代码/类/表重复?

感谢您的想法!

【问题讨论】:

    标签: php mysql relational-database


    【解决方案1】:

    我们对可以附加到许多对象的注释做类似的事情。我们的每个对象都有一个唯一的类 id(我们将每种类型的对象存储在它自己的表中),我们将唯一的类 id + 特定对象 id 存储在 notes 表中。

    然后我们只需要维护一个唯一的类 id -> 表名的查找。通过使用唯一的类 id + 对象 id 作为键,我们确保不同表中的相同 id 不是问题。

    【讨论】:

    • 谢谢 Alan,您能否再解释一下“特定对象 id”?您是否有一张桌子,所有班级都有自己的 ID?比如订单的 ID 为 1,客户的 ID 为 2,等等?
    • 订单的唯一类 ID 可能为“12345”,而客户的唯一类 ID 为“67890”。我们可以在 order id 123 和 customer id 123 中添加注释,notes 表上的相应键是“12345_123”和“67890_123”(实际上,我们将唯一 id 和对象 id 存储在不同的列中)。跨度>
    猜你喜欢
    • 2016-11-01
    • 2021-12-22
    • 1970-01-01
    • 2016-04-07
    • 2015-05-15
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多