我们有一个游戏的表,每个游戏只添加一次在这个表中,但其中许多有几个平台,如PC,PS3,X360和.。我们希望为不同平台的游戏添加不同的发布日期,例如驻留邪恶6,它首先在PS3和X360上发布,然后在PC上发布另一个日期。
此外,我们有不同类型的发布日期,如确切日期,如2012年10月29日,或Q1,Q2,Q3,Q4 2014,或TBA 2014或仅TBA .
现在,我的问题是:
是否应该像添加平台的数量一样多地添加字段,并将发布日期放在其中,并通过最少()和最大()来选择所有这些?
还是单独制作有游戏标识、发布日期和平台的表?
对于数据库来说,哪一个更容易,哪一个更轻?
请注意,填充游戏表的可能性是每年200场。
还请注意,如果这个游戏在不同的平台上发布两次,我们希望在我们即将发布的页面中显示两次。并且只在同一天为所有平台显示一次if发布。
这是我的第一个模型:
//=. rdate_pc .
\x{e76f}\x{e76f}{##**$$}\x{e76f}\x{e76f} xbox360,
这是我的第二个模型:
=.
\x{e76f}\x{e76f} Q4 \x{e76f}\x{e76f} 20140000 \x{e76f}\x{e76f}
\x{e76f}\x{e76f} ps3 20140400
那么哪一个更好?
发布于 2013-07-29 19:59:06
通常,您希望将一个条目限制为一个字段(不将Xbox、PS3作为单个条目)。为此,您应该创建另一个将平台链接到游戏的表;该平台的发布日期也可以保存在这里。您将有类似于您的第二个表,另一个表按ID列出了所有的游戏。
另外,由于您说dB每年将有大约200场比赛,所以可能值得研究一下NoSQL数据库,例如Mongo。这些数据库允许您拥有与表中某些条目相关联的字段,但不允许其他字段,并允许您基于此进行筛选。
还请注意,我不相信SQL LEAST和GREATEST查询将不能处理与Q4之类的日期混合的日期。
发布于 2013-07-29 20:02:37
第二种模式将更加灵活。首先,对于第一个模型,如果添加了更多的平台,则需要为添加的每个新平台添加另一个rdate_*字段。
发布于 2013-07-29 20:04:21
我将使用至少三个表的数据库结构,如下所示:
Games
(
Id
Name
--any other relevant information, such as ESRB rating that will apply
)
Platforms
(
Id
Name
--any other relevant information
)
Game_Platforms
(
GameId
PlatformId
ReleaseDate
--any other relevant information
)正如其他海报所指出的,这允许在添加新平台、更改发布日期(或完全取消)时具有更大的灵活性。
https://stackoverflow.com/questions/17932977
复制相似问题