簡體   English   中英

數據庫結構-鏈接數據

[英]database structure - linking data

我想學習ASP.NET MVC5,所以我決定做一些評論站點。 我要添加不同的控制台/ PC游戲和電影等。對於“游戲”表,我具有以下內容:

CREATE TABLE [dbo].[Games] (
    [GameId]     INT             IDENTITY (1, 1) NOT NULL,
    [Title]  NVARCHAR (MAX)  NOT NULL,
    [Genre]  NVARCHAR (MAX)  NOT NULL,
    [Format] NVARCHAR (MAX) NOT NULL,
    CONSTRAINT [PK_dbo.Games] PRIMARY KEY CLUSTERED ([GameId] ASC)
);

我對電影表有相同的代碼,這是我從MVC獲得的用戶表:

CREATE TABLE [dbo].[AspNetUsers] (
    [Id]                   NVARCHAR (128) NOT NULL,
    [Email]                NVARCHAR (256) NULL,
    [EmailConfirmed]       BIT            NOT NULL,
    [PasswordHash]         NVARCHAR (MAX) NULL,
    [SecurityStamp]        NVARCHAR (MAX) NULL,
    [PhoneNumber]          NVARCHAR (MAX) NULL,
    [PhoneNumberConfirmed] BIT            NOT NULL,
    [TwoFactorEnabled]     BIT            NOT NULL,
    [LockoutEndDateUtc]    DATETIME       NULL,
    [LockoutEnabled]       BIT            NOT NULL,
    [AccessFailedCount]    INT            NOT NULL,
    [UserName]             NVARCHAR (256) NOT NULL,
    CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED ([Id] ASC)
);
GO
CREATE UNIQUE NONCLUSTERED INDEX [UserNameIndex]
    ON [dbo].[AspNetUsers]([UserName] ASC);

但是我的問題是,如何將電影/游戲鏈接到用戶? 我是否只需要在游戲/電影表上添加FK,還是應該在用戶表上添加FK?

接下來,我將如何存儲評分,(INT)和評論(NVARCHAR)? 我認為最好是為此創建一個專用表,然后將表鏈接到游戲/電影表?

還有一個后續問題。 如何鏈接這兩個?

並且一旦它們鏈接起來...我將如何繼續填充我的數據庫? 我以為我可以編寫某種腳本來替我填充它們?

從技術上講,您實際上應該有一個單獨的聯接表,該表具有電影的外鍵和用戶的外鍵,因為您在此處處理M2M關系:用戶可以查看許多電影,並且許多用戶可以查看電影。 游戲也是如此。

但是,由於您是從MVC開始的,所以實際上是在把車推到了馬的前面。 雖然您可以將現有數據庫與Entity Framework一起使用,但最好讓Entity Framework根據您編寫的代碼為您管理數據庫架構。 然后,當您對類進行更改時,可以創建將相應更新架構的遷移。

只需搜索“首先輸入實體框架代碼”之類的內容即可。 您會找到大量的文章和教程來解釋如何進行。

AspNetUsers
------
Id (PK)

Game
------
Id (PK)

Review
------
Id (PK)
GameId (FK)
UserId (FK)

或如果用戶只能瀏覽游戲1次,則可以組合鍵

Review
------
GameId (PK)
UserId (PK)

但是如果您想擁有電影和游戲,則可以

Review
------
Id (PK)
GameId (FK NULL)
MovieId (FK NULL)
UserId (FK)

查看表關系

我假設用戶與游戲之間的關聯在於用戶將撰寫游戲評論。 如果是這樣,則用戶可以查看多個游戲,並且許多用戶可以查看單個游戲。 但是您缺少一個查看表,該表應該是您列出的兩個表之間的關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM