我想学习ASP.NET MVC5所以我决定制作一些评论网站。我想添加不同的控制台/电脑游戏和电影等。对于游戏桌我有这个:
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)? 我认为最好是为此制作一张特色表,然后将表格链接到游戏/电影表?
还有一个跟进问题。我如何链接这两个?
一旦它们被链接......我将如何继续填充我的数据库?我会假设我可以制作某种脚本来填充它们给我?
答案 0 :(得分:0)
从技术上讲,你实际上应该有一个单独的连接表,其中包含电影的外键和一个用户,因为你在这里处理M2M关系:用户可以查看许多电影和电影可以被许多用户查看。同样适用于游戏。
然而,既然你开始使用MVC,那么你实际上是把马放在马前。虽然您可以将现有数据库与Entity Framework一起使用,但最好让Entity Framework根据您编写的代码为您管理数据库架构。然后,当您对类进行更改时,可以创建将相应更新架构的迁移。
只需搜索“实体框架代码优先”之类的内容。你会发现很多文章和教程解释如何开始。
答案 1 :(得分:0)
AspNetUsers
------
Id (PK)
Game
------
Id (PK)
Review
------
Id (PK)
GameId (FK)
UserId (FK)
如果用户只能一次查看游戏
,则制作复合键Review
------
GameId (PK)
UserId (PK)
但是如果你想要电影和游戏,你可以做
Review
------
Id (PK)
GameId (FK NULL)
MovieId (FK NULL)
UserId (FK)
查看表关系
答案 2 :(得分:0)
我认为用户和游戏之间的关联是用户会写游戏评论。如果是这样,则用户可以查看多个游戏,并且许多用户可以查看单个游戏。但是您缺少一个评论表,该表应该是您列出的两个表之间的关系。