2014-12-10 85 views
1

我想學習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)? 我認爲如果我爲此製作了一個spefic表格並且將表格鏈接到遊戲/電影表格最好?

以及後續問題。我如何鏈接這兩個?

一旦他們有聯繫......我怎麼會繼續和填充我的數據庫?我會假設我可以製作某種腳本來爲我填充它們?

回答

0
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) 

查找到表關係

+0

我遇到的唯一問題是,我從mvc5獲得了AspNetUsers,我無法更改該表。 – 2014-12-11 09:45:52

+0

你可以改變它。查看使用UserManager和RoleManager類的AspNetMembership。 http://msdn.microsoft.com/en-us/magazine/dn605872.aspx。這可以暴露實體框架對象連接到這些成員資格表。 – hunter 2014-12-12 18:27:54

0

技術上講,你實際上應該有一個單獨的連接表的外鍵在電影和一個用戶,因爲你正在處理這裏M2M關係:用戶可以查看許多電影和電影可以由許多審查用戶。同樣適用於遊戲。

不過,既然你已經開始了與MVC你實際上把本末倒置。雖然您可以將現有數據庫與Entity Framework結合使用,但最好讓Entity Framework根據您編寫的代碼爲您管理數據庫模式。然後,當您對類進行更改時,可以創建將相應地更新模式的遷移。

只是做這樣的事情「實體框架代碼優先」的搜索。你會找到大量的文章和教程來解釋如何去做。

0

我認爲,用戶和遊戲之間的關聯是,用戶會寫遊戲評論。如果是這樣,用戶可以查看多個遊戲,並且許多用戶可以查看單個遊戲。但是你錯過了一個審查表,它應該是你列出的兩個表之間的關係。