我正在为 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
接下来,我必须添加用于添加“共享链接”和“共享视频”功能的架构。
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
现在有了这个模式:
第一种情况:插入墙帖时,[SharedLink]、[SharedLinkTitle]、[SharedLinkDesc]、[SharedLinkImageSrc] 列将被插入为空,其余列将具有值。
第二种情况:插入“链接共享”时,“[WallText]”列将作为空值插入,其余列将具有值。
对于我的案例,70% 的时间将发布墙贴,30% 的“链接”将被共享,这意味着 70% 的案例 [SharedLink]、[SharedLinkTitle]、[SharedLinkDesc]、[SharedLinkImageSrc] 将被插入为 null . 现在我担心的是是否可以插入空列,或者我应该为“共享链接”的目的使用单独的表,并使用这样的分隔表:
GO
CREATE TABLE [LinkShared]
(
[ID] [int] NOT NULL IDENTITY(1, 1) ,
[PostedByUserID] [int] NULL ,
[PostedOnUserID] [int] NULL ,
[SharedLink] [nvarchar](1024) NULL ,
[SharedLinkTitle] [nvarchar](512) NULL ,
[SharedLinkDesc] [nvarchar](512) NULL ,
[SharedLinkImageSrc] [nvarchar](512) NULL
)
GO
我必须以类似的方式添加架构以进一步共享视频。请指导我应该朝哪个方向移动?