我有一个游戏桌,里面有一个游戏的数据。
然后是另一个保存新闻数据的表。
到现在为止,一直都还不错。
首先,我考虑为game_news创建一个连接表,以便将新闻与游戏关联起来。
这种方式在游戏存在时起作用。所以每当我插入一条新闻,我就可以使用连接表将它与一个游戏关联起来。
然而,当有关于游戏的消息的情况下,但游戏没有发布,它不存在。
所以我的问题是,在创建游戏记录时,是否有办法将这些新闻与特定的游戏关联起来。
最好的方法是什么?有什么想法吗?

最佳答案

交叉口的桌子是去的路。如果一篇新闻文章是关于一个以上的游戏,那么你需要它。若要处理尚未存在的游戏,只需为它们插入一行,包括您当前对它了解的所有信息(可能来自新闻文章),并有一个状态列,标记它尚未发布。你可以将此游戏显示为尚未发布或传言等。
把桌子摆成这样:

Games
GameID           int          not null auto increment PK
GameStatus       char(1)      not null "P"=published, "N"=not released yet, "R"=game is only a rumor
GameReleaseDate  date         null
GameName         varchar(...) not null
GameDescription...
...

News
NewsID      int               not null auto increment PK
NewsTitle   varchar(...)      not null
...

GameNews
GameNewsID  int auto increment PK
GameID      int FK to Games.GameID
NewsID      int FK to News.NewsID

使用此设置,您可以有多个游戏与一个新闻项目相关。只需插入所有正确的game News行,即可将每个游戏链接到新闻行。
如果游戏尚未发布,您仍然可以通过创建状态为“N”或“R”的游戏行(或类似的行)并使用game news表将其链接到新闻,就像对已发布的游戏一样。你可以用尽可能多的信息填充游戏中的所有字段,并在发现更多信息时对其进行更新。最后,你会有完整的游戏信息在游戏行(游戏发布后),它会链接到所有的新闻行,即使它只是一个谣言在新闻。
为了让您了解我所说的内容,下面是一个“谣传”游戏数据随时间变化的示例(这是一个简化的示例,每个新闻行没有多个游戏):
data as of 1/1/2010
    Games    GameID  GameStatus  GameReleaseDate  GameName
             1234    "R"         1/1/2012         "God of War 4"
    News     NewsID  NewsTitle
             543     "Future Of Games"
    GameNews GameNewsID  GameID  NewsID
             768         1234    543

data as of 4/1/2010
    Games    GameID  GameStatus  GameReleaseDate  GameName
             1234    "R"         1/1/2012         "God of War 4"
    News     NewsID  NewsTitle
             543     "Future Of Games"
             544     "Interview with John Hight"
    GameNews GameNewsID  GameID  NewsID
             768         1234    543
             769         1234    544

data as of 11/20/2010
    Games    GameID  GameStatus  GameReleaseDate  GameName
             1234    "N"         12/31/2011         "God of War IV"
    News     NewsID  NewsTitle
             543     "Future Of Games"
             544     "Interview with John Hight"
             545     "God of War Expected Next Year"
    GameNews GameNewsID  GameID  NewsID
             768         1234    543
             769         1234    544
             770         1234    545

data as of 8/15/2011
    Games    GameID  GameStatus  GameReleaseDate  GameName
             1234    "N"         12/01/2011         "God of War IV"
    News     NewsID  NewsTitle
             543     "Future Of Games"
             544     "Interview with John Hight"
             545     "God of War Expected Next Year"
             546     "Retailers Get Ready For New Games"
    GameNews GameNewsID  GameID  NewsID
             768         1234    543
             769         1234    544
             770         1234    545
             771         1234    546

data as of 1/1/2012
    Games    GameID  GameStatus  GameReleaseDate  GameName
             1234    "P"         12/01/2011         "God of War IV"
    News     NewsID  NewsTitle
             543     "Future Of Games"
             544     "Interview with John Hight"
             545     "God of War Expected Next Year"
             546     "Retailers Get Ready For New Games"
             547     "God of War IV Review"
    GameNews GameNewsID  GameID  NewsID
             768         1234    543
             769         1234    544
             770         1234    545
             771         1234    546
             772         1234    547

如果你在2012年1月1日查看News.NewsID=543,你会看到它链接到完整的和评论过的游戏。GameID=1234,即使News.NewsID=543的文章是关于一个“传闻”即将到来的战神版本。所有这些都是在没有对旧新闻或GameNews行进行任何更改的情况下完成的。

10-08 15:53