2014-12-10 88 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

我认为,用户和游戏之间的关联是,用户会写游戏评论。如果是这样,用户可以查看多个游戏,并且许多用户可以查看单个游戏。但是你错过了一个审查表,它应该是你列出的两个表之间的关系。