0

スキーマの変更についてサポートが必要です。ビデオを保存するビデオテーブルがあり、ビデオの実際を知りたいと思いViewCountました。

これが私が今持っているビデオテーブルスキーマです:

CREATE TABLE dbo.VideoFiles(
VideoId     int IDENTITY(1, 1) PRIMARY KEY,
VideoTitle  nvarchar(64) NOT NULL,
VideoDescription nvarchar(2048),
PublishDate date,
Duration    time,
VideoUrl    nvarchar(256),
--ViewCount bigint,
UpdateTime  datetime default CURRENT_TIMESTAMP )

ビデオファイルを起動するたびに+1ずつ増加する列を作成できViewCountます。これは、簡単な方法のように見えます。しかし、どうすればビデオビューの一意性を管理できますか?

User1 view Video1 = Video1 Count =>1  
User2 view Video1 = Video1 Count =>2  
User1 view Video2 = Video2 Count =>1  
User1 view Video1 = Video1 Count =>2 (not increased as he already seen this video) 

ありがとう、
Prabhat

4

2 に答える 2

1

必要な構造は次のようになります

CREATE TABLE [dbo].[ViedeoViews](
    [VideoID] [int] NOT NULL,
    [UserID] [int] NOT NULL,
 CONSTRAINT [PK_ViedeoViews] PRIMARY KEY CLUSTERED 
(
    [VideoID] ASC,
    [UserID] ASC
) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[ViedeoViews]  WITH CHECK ADD  CONSTRAINT [FK_ViedeoViews_VideoFiles] FOREIGN KEY([VideoID])
REFERENCES [dbo].[VideoFiles] ([VideoId])
GO

ALTER TABLE [dbo].[ViedeoViews] CHECK CONSTRAINT [FK_ViedeoViews_VideoFiles]
GO



Create View V_VideoFiles as
Select dbo.VideoFiles.*,(Select COUNT(*) from ViedeoViews vv where vv.VideoID=VideoFiles.VideoID) as ViewCount
from VideoFiles
于 2013-03-08T10:43:45.443 に答える
1

テーブルを作成する

UserId int/UniqueIdentifier
VideoId Int
TimeOfView Datetime
SessionId int/UniqueIdentifier

これはあなたを助けます。あなたはビジネスの観点からすべての答えを与えることができるでしょう。トータルビュー、ビュー/日、またはユニーク訪問/日と同様です。同様に、週、月、年についても同様です。UserVisitにさらに属性を追加することもできます。

于 2013-03-08T10:44:13.840 に答える