创建多对多关系并为每个关系赋予一个对象

时间:2012-05-22 19:56:43

标签: database sql-server-2008 entity-framework many-to-many

我正在编写一个查询来在SQL Server 2008 R2中创建数据库。我计划在mvc3应用程序中将它与实体框架一起使用

我有用户,游戏和高分。 我想要做的是:

我想在用户和游戏之间建立多对多的关系。

每个用户可以拥有多个游戏,每个游戏可以拥有多个用户。

每个关系用户游戏都有1个高分。

到目前为止,我创建了用户,游戏,高分榜:

CREATE TABLE Users
(
    UserId INT IDENTITY(1,1),
    FirstName VARCHAR(64) NOT NULL,
    LastName VARCHAR(64) NOT NULL,
    Email VARCHAR(200) NOT NULL,
    CreatedDate DateTime NULL,
    PhoneNumber VARCHAR(32) NULL,
    Password VARCHAR(64),
    CONSTRAINT pk_users_userid PRIMARY KEY(UserId)
)
CREATE TABLE Games
(
    GameId INT IDENTITY(1,1),
    Url VARCHAR(64) NOT NULL,
    CONSTRAINT pk_gamess_gameid PRIMARY KEY(GameId)
)
CREATE TABLE Highscores
(
    HighscoreId INT IDENTITY(1,1),
    Value INT NOT NULL,
    CONSTRAINT pk_surveyors_surveyorid PRIMARY KEY(HighscoreId)
)   

创建多对多用户 - 游戏关系并给每个关系一个高分的最佳方法是什么?我应该创建第4个表来保持这种关系吗?如果我这样做,我将能够在MVC3应用程序中使用带有Entity框架的数据库,还是会使它复杂化?

谢谢

附加说明:我计划在MVC 3 Web应用程序中将此数据库与实体框架一起使用。

1 个答案:

答案 0 :(得分:0)

CREATE TABLE Users (
     UserId INT IDENTITY(1,1),
     FirstName VARCHAR(64) NOT NULL,
     LastName VARCHAR(64) NOT NULL,
     Email VARCHAR(200) NOT NULL,
     CreatedDate DateTime NULL,
     PhoneNumber VARCHAR(32) NULL,
     Password VARCHAR(64),
     CONSTRAINT pk_users_userid PRIMARY KEY(UserId)
)

CREATE TABLE Games (
   GameId INT IDENTITY(1,1),
   Url VARCHAR(64) NOT NULL,
   CONSTRAINT pk_gamess_gameid PRIMARY KEY(GameId)
)

CREATE TABLE Highscores (
   HighscoreId INT IDENTITY(1,1),
   UserID Int,
   GameID Int,
   Value INT NOT NULL,
   CONSTRAINT pk_surveyors_surveyorid PRIMARY KEY(HighscoreId)
) 

ALTER TABLE [dbo].[Highscores]  ADD  CONSTRAINT [FK_Highscores_Games] FOREIGN KEY([GameID])
ALTER TABLE [dbo].[Highscores]  ADD  CONSTRAINT [FK_Highscores_Users] FOREIGN KEY([UserID])