在数据库中建模继承的最佳实践是什么?
权衡取舍(例如可疑性)是什么?
(我对SQL Server和.NET最感兴趣,但我也想了解其他平台如何解决这个问题.)
在 Django 中,是否有一个简单的替代多表继承来实现下面描述的基本数据模型模式?
请考虑下图中非常基本的数据模型模式,它基于例如Hay, 1996。
简单地说:Organizationsand Personsare Parties,并且Parties都有Addresses 。类似的模式可能适用于许多其他情况。
这里的重点是 与Address具有显式关系Party,而不是与各个子模型Organization和具有显式关系Person。
请注意,每个子模型都引入了额外的字段(此处未描述,但请参阅下面的代码示例)。
这个具体的例子有几个明显的缺点,但这不是重点。为便于讨论,假设该模式完美地描述了我们希望实现的目标,因此剩下的唯一问题是如何在 Django 中实现该模式。
我相信,最明显的实现将使用多表继承:
class Party(models.Model):
""" Note this is a concrete model, not an abstract one. """
name = models.CharField(max_length=20)
class Organization(Party):
"""
Note that a one-to-one relation 'party_ptr' is automatically added,
and this is used as the primary key (the …Run Code Online (Sandbox Code Playgroud) python django inheritance data-modeling single-table-inheritance
有没有办法在数据库中使用继承(特别是在SQL Server 2005中)?
假设我有几个像CreatedOn,CreatedBy这样的字段,我想在我的所有实体上添加.我正在寻找一种替代方法,而不是将这些字段添加到每个表中.
我正在为像facebook结构的facebook制作数据库模式.我需要保存墙贴,共享链接,将视频内容分享到我的数据库中.直到现在我能够制作这个架构:
GO
CREATE TABLE [Wall]
(
[ID] [int] NOT NULL IDENTITY(1, 1) ,
[PostText] [nvarchar](MAX)
[PostedByUserID] [int] NULL ,
[PostedOnUserID] [int] NULL ,
[DateCreated] [datetime] NULL
)
GO
Run Code Online (Sandbox Code Playgroud)
接下来,我必须添加用于添加"共享链接"和"共享视频"功能的架构.
GO
CREATE TABLE [Wall]
(
[ID] [int] NOT NULL IDENTITY(1, 1) ,
[WallText] [nvarchar](MAX)
[PostedByUserID] [int] NULL ,
[PostedOnUserID] [int] NULL ,
[DateCreated] [datetime] NULL,
[SharedLink] [nvarchar](1024) NULL ,
[SharedLinkTitle] [nvarchar](512) NULL ,
[SharedLinkDesc] [nvarchar](512) NULL ,
[SharedLinkImageSrc] [nvarchar](512) NULL
)
GO
Run Code Online (Sandbox Code Playgroud)
现在有了这个架构:
第一种情况:插入墙柱时,[SharedLink],[SharedLinkTitle],[SharedLinkDesc],[SharedLinkImageSrc]列将插入为空,其余列将具有值.
第二种情况:当插入"链接共享"时,"[WallText]"列将作为空插入,其余列将具有值.
对于我的情况,70%的时间将发布墙贴,30%的"链接"将被共享,这意味着70%的情况[SharedLink],[SharedLinkTitle],[SharedLinkDesc],[SharedLinkImageSrc]将被插入为null .现在我担心的是,是否可以保持插入空列,或者我应该为"共享链接"目的找到一个单独的表,并将分离的表格如下:
GO
CREATE TABLE [LinkShared] …Run Code Online (Sandbox Code Playgroud) sql-server schema database-design sql-server-2005 database-schema