数据库结构 - 链接数据

时间:2014-12-10 21:41:38

标签: mysql sql asp.net-mvc-5

我想学习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)? 我认为最好是为此制作一张特色表,然后将表格链接到游戏/电影表?

还有一个跟进问题。我如何链接这两个?

一旦它们被链接......我将如何继续填充我的数据库?我会假设我可以制作某种脚本来填充它们给我?

3 个答案:

答案 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)

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