0

我们有一个游戏表,每个游戏只在这个表中添加一个时间,但其中许多游戏有多个平台,如 PC、PS3、X360 和...。我们想为不同平台有不同发布日期的游戏添加不同的发布日期,例如生化危机 6,它首先在 PS3 和 X360 上发布,然后在另一个日期发布在 PC 上。

此外,我们有不同类型的发布日期,例如确切日期,例如 2012 年 10 月 29 日,或 Q1、Q2、Q3、Q4 2014,或 TBA 2014 或只是 TBA ...

现在,我的问题在那里:

添加与平台数量一样多的字段并将发布日期放在那里并通过 LEAST() 和 GREATEST() 选择所有这些是否更好?

还是制作单独的表格,其中包含游戏 ID、发布日期和平台?

哪一个更容易和更轻量级的数据库?

请注意,填满比赛表的可能性是每年 200 场比赛。

另请注意,如果该游戏针对不同平台发布了两次,我们希望在即将发布的页面中显示该游戏两次。如果在同一日期针对其所有平台发布,则仅显示一次。


这是我的第一个模型:

| 编号 | 平台 | 日期 | rtype | rdate_pc | rdate_x360 | rdate_ps3 |

| 27 | 电脑,xbox360,ps3 | 20140306 | 个人电脑=Q4 | 20140000 | 20140306 | 20140400 |


这是我的第二个模型:

| 编号 | 平台 | 日期 | rtype |

| 27 | 电脑 | 20140000 | 第四季度 |

| 27 | ps3 | 20140400 | 待定 |


那么哪个更好呢?

4

3 回答 3

0

第二种模式将更加灵活。一方面,对于第一个模型,如果您添加更多平台,则需要为您添加的每个新平台添加另一个 rdate_* 字段。

于 2013-07-29T20:02:37.540 回答
0

我会使用至少包含三个表的数据库结构,如下所示:

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
)

正如其他海报所指出的,当添加新平台、发布日期更改(或完全取消)时,这允许更大的灵活性。

于 2013-07-29T20:04:21.137 回答
0

通常,您希望将一个条目限制为一个字段(不要将 Xbox、PS3 作为单个条目)。为此,您应该创建另一个将平台链接到游戏的表;该平台的发布日期也可以保留在这里。您将拥有类似于第二张桌子的东西,另一张桌子按 ID 列出所有游戏。

此外,由于您说 dB 中每年大约有 200 场比赛,因此可能值得研究 NoSQL 数据库,例如 Mongo。这些数据库允许您拥有与表中的某些条目相关联的字段,而不是与其他条目相关联的字段,并允许您基于此进行过滤。

另请注意,SQLLEASTGREATEST查询不适用于与 Q4 之类的日期混合的日期,我不相信。

于 2013-07-29T19:59:06.767 回答