Я делаю схему БД для 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
Теперь с этой схемой:
1-й случай: при вставке сообщения на стене столбцы [SharedLink], [SharedLinkTitle], [SharedLinkDesc], [SharedLinkImageSrc] будут вставлены как нулевые, а остальные столбцы будут иметь значения.
2-й случай: когда вставлена ссылка общего доступа, столбец «[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
Мне нужно пойти аналогичным образом, чтобы добавить схему для дальнейшего обмена видео. Пожалуйста, укажите мне, в каком направлении мне двигаться?