gpt4 book ai didi

sql - 如何将一个表与另一个表关联起来以备将来记录

转载 作者:行者123 更新时间:2023-11-29 01:19:14 26 4
gpt4 key购买 nike

我有一个游戏表,其中包含有关游戏的数据。然后是另一个表,其中包含有关新闻的数据。

到目前为止一切顺利。

首先,我考虑为 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

通过此设置,您可以拥有多个与单个新闻项目相关的游戏。只需插入所有正确的 GameNews 行即可将每个游戏链接到新闻行。

如果游戏尚未发布,您仍然可以通过创建状态为“N”或“R”(或类似名称)的 Games 行并使用 GameNews 表将其链接到新闻,就像您在已发布的游戏。您可以使用尽可能多的信息填充游戏中的所有字段,并在您发现更多信息时更新它。最后,您将在游戏行中获得完整的游戏信息(游戏发布后),并且它会链接到所有新闻行,即使它只是新闻中的谣言。

为了让您了解我在说什么,下面是一个“传言”游戏的数据随时间变化的示例(这是一个简化的示例,每个新闻行没有多个游戏):

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,您会看到它链接到完整且经过审核的 Games.GameID=1234,即使 News.NewsID=543 文章是关于“传闻”即将推出的战神版本。所有这一切都是在不对旧新闻或游戏新闻行进行任何更改的情况下完成的。

关于sql - 如何将一个表与另一个表关联起来以备将来记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2649763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com