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] 列が null として挿入され、残りの列には値が含まれます。
2 番目のケース: 「リンク共有」が挿入されると、「[WallText]」列が null として挿入され、残りの列に値が含まれます。
私の場合、70% の確率でウォール ポストが作成され、30% の「リンク」が共有されます。つまり、70% のケースで [SharedLink]、[SharedLinkTitle]、[SharedLinkDesc]、[SharedLinkImageSrc] が null として挿入されます。 . 今私の懸念は、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
ビデオをさらに共有するためのスキーマを追加するには、同様の方法で行う必要があります。どの方向に進むべきか教えてください。