【发布时间】:2014-05-31 22:08:48
【问题描述】:
我有一个包含三个表的数据库
消息 - PK = MessageId
草稿 - PK = DraftId
历史 - FK = RelatedItemId
History 表有一个外键 [RelatedItemId],它映射到 Messages 和 Drafts 中的两个主键之一。
这种关系有名称吗?
这只是糟糕的设计吗?
有没有更好的方法来设计这种关系?
以下是该问题的 CREATE TABLE 语句:
CREATE TABLE [dbo].[History](
[HistoryId] [uniqueidentifier] NOT NULL,
[RelatedItemId] [uniqueidentifier] NULL,
CONSTRAINT [PK_History] PRIMARY KEY CLUSTERED ( [HistoryId] ASC )
)
CREATE TABLE [dbo].[Messages](
[MessageId] [uniqueidentifier] NOT NULL,
CONSTRAINT [PK_Messages] PRIMARY KEY CLUSTERED ( [MessageId] ASC )
)
CREATE TABLE [dbo].[Drafts](
[DraftId] [uniqueidentifier] NOT NULL,
CONSTRAINT [PK_Drafts] PRIMARY KEY CLUSTERED ( [DraftId] ASC )
)
【问题讨论】:
-
最好提供
CREATE声明。在某些 rdbms 中,您可以像SHOW CREATE TABLE Messages;一样检索它 -
我发现很难选择答案,因此掷骰子...
标签: sql database database-design