0

我想要两张桌子:

[Table1]         [Table2]
id1              id2
createdon        createdon
createdby        createdby
column1a         column2
column1b                 

可以看到两个表都具有“createdon”和“createdby”列。我的其他桌子也有类似的情况。有没有办法通过列继承来建模和实现数据库表结构(就像我会在 OOP 中使用类属性一样)。从概念上讲我的意思是:我想创建一个超级表:

[Supertable]
createdon
createdby

并使 Table10 和 Table20 扩展 Supertable。这样我就不必为每个特定表创建“createdon”和“createdby”列,因为它们将从超级表继承。

[Table10]  extends  [Supertable]   results in wanted   [Table1]
id1                 createdon                          id1
column1a            createdby                          createdon
column1b                                               createdby
                                                       column1a
                                                       column1b

[Table20]  extends  [Supertable]   results in wanted   [Table2]
id2                 createdon                          id2
column2             createdby                          createdon
                                                       createdby
                                                       column2

所以Table10,Table20和Supertabe只是RDBMS内部的结构,Table1和Table2是数据库用户在访问数据库时看到的最终表。在 MySQL(或任何其他 RDBMS)中是否有可能发生这样的事情?

4

2 回答 2

0

您还可以将表与关联键链接在一起:

[supertable]
id
createdon
createdby

[Table1]  
id1  
supertable_id      
column1a    
column1b    

这并不完全是您正在寻找的,但可能很有用。

于 2013-01-18T08:43:54.897 回答
0

从纯建模的角度来看……为什么不可能呢?

您的表结构将如下所示(我已经调整了您的语法):

[Table1]       [Table2]
id1            id2
column1a       column2
column1b

...和...

[Table0]
table   <- either Table1 or Table2
id      <- either the value id1 or id2
createdon
createdby

但最大的问题是……你会在你的应用程序中受益吗?如果不深入了解您将要做什么,我无法回答这个问题。

于 2013-01-17T18:44:13.587 回答