这个问题已经出现在各种论坛几次在我的搜索,但没有提供了一个简洁的解决方案。数据库表,一个表引用多个不相关的表
如果我有以下表格:
User
+- id
+- username
+- password
Article
+- id
+- title
+- content
,我想加入他们的行列,以确定谁创造了什么文章,我可以简单地添加列user_id说明到条作为使用参考。另外,我加入一个中间表显示谁/时/什么,例如:
User
+- ...
Article
+- ...
ChangeHistory
+- id
+- article_id
+- user_id
+- type [enum(insert, update, delete)]
+- datetime
现在,这是好的,但我的工作需要,系统将变得更加富有活力,在新模块可以很容易地引入和集成。所以,现在如果我添加一个媒体表我需要拆分变更记录条和媒体之间具有:
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”来引用它来的表。这样,当/如果添加或删除模块,模型不会分崩离析。
任何想法?非常感谢提前。
有没有理由认为“表ID”比“record_type”更好? – 2010-10-22 18:14:33