gpt4 book ai didi

sql-server - Facebook 的 DB 模式,如 Wall + "Shared links"

转载 作者:行者123 更新时间:2023-12-01 09:08:51 24 4
gpt4 key购买 nike

我正在为 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] 将是插入为空。现在我担心的是是否可以插入空列,或者我应该为“共享链接”的目的而使用单独的表,并使用这样的分隔表:

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

我必须以类似的方式添加架构以进一步共享视频。请指导我应该朝哪个方向移动?

最佳答案

因为这些是独立且不同的项目(墙贴/共享链接/共享视频),每个项目都有自己独特的属性,我建议为每个项目创建一个单独的表。

关于sql-server - Facebook 的 DB 模式,如 Wall + "Shared links",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3730145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com