首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库表,一个表引用多个无关表。

数据库表,一个表引用多个无关表。
EN

Stack Overflow用户
提问于 2010-10-22 17:15:45
回答 4查看 2.7K关注 0票数 5

在我的搜索中,这个问题在各种论坛上已经出现过几次,但没有一个问题提供了一个简明的解决办法。

如果我有以下表格:

代码语言:javascript
运行
复制
User
+- id
+- username
+- password

Article
+- id
+- title
+- content

为了确定是谁创建了哪些文章,我想加入它们,我只需将user_id一栏添加到中作为参考。或者,我添加了一个中间表来显示谁/何时/什么,例如:

代码语言:javascript
运行
复制
User
+- ...

Article
+- ...

ChangeHistory
+- id
+- article_id
+- user_id
+- type [enum(insert, update, delete)]
+- datetime

这很好,但是我正在开发的系统需要更加动态,因为新的模块可以很容易地被引入和集成。因此,如果现在添加一个Media表,则需要将ChangeHistory拆分为文章和Media,具有:

代码语言:javascript
运行
复制
User
+- ...

Article
+- ...

Media
+- id
+- title
+- path

ArticleChangeHistory
+- id
+- article_id
+- user_id
+- type [enum(insert, update, delete)]
+- datetime

MediaChangeHistory
+- id
+- media_id
+- user_id
+- type [enum(insert, update, delete)]
+- datetime

随着许多模块的引入,这可能很快就会失控。每个模块都需要负责创建和管理它自己的ChangeHistory表。

TL;DR:我可以探索哪些实践来创建一个可以接收多个其他无关表的引用的中间表?我可以添加一个*record_type*字段,保存记录所属的表的名称,但这很难看。我需要一个类似于“表ID”的东西来引用来自它的表。这样,当/如果添加或删除模块时,模型就不会崩溃。

有什么想法吗?提前谢了。

EN

Stack Overflow用户

发布于 2010-10-22 18:35:16

@Majid:我知道这可能是最合理的解决方案,但我希望找到一些更直观的方法,它可能会利用现有的DB参数,比如难以捉摸(而且显然不存在)表id (在我的例子中,它是引擎InnoDB用来描述表的某种内部引用)。

@沮丧:我想我要做这样的事情。我会继续调查各种可能性。

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3999268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档