Mysql 数据库结构-链接数据

Mysql 数据库结构-链接数据,mysql,sql,asp.net-mvc-5,Mysql,Sql,Asp.net Mvc 5,我想学习ASP.NETMVC5,所以我决定做一些评论网站。我想添加不同的控制台/pc游戏和电影等。对于游戏表,我有以下内容: CREATE TABLE [dbo].[Games] ( [GameId] INT IDENTITY (1, 1) NOT NULL, [Title] NVARCHAR (MAX) NOT NULL, [Genre] NVARCHAR (MAX) NOT NULL, [Format] NVARCHAR

我想学习ASP.NETMVC5,所以我决定做一些评论网站。我想添加不同的控制台/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)

查看表关系

我假设用户和游戏之间的关联是用户将编写游戏评论。如果是这样,一个用户可以查看多个游戏,而许多用户可以查看单个游戏。但是您缺少了一个审阅表,该表应该是您列出的两个表之间的关系

我唯一的问题是,我从mvc5获取了AspNetUsers,但我无法更改该表。您可以更改它。研究如何将UserManager和RoleManager类用于AspNetMembership。这可以公开实体框架对象以连接到这些成员资格表。