首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试建立一个规范化的交易卡片数据库

尝试建立一个规范化的交易卡片数据库
EN

Stack Overflow用户
提问于 2012-08-31 22:53:55
回答 3查看 71关注 0票数 1

我一直在检查数据规范化,但不太明白如何将其应用到卡im设置的数据库中。每一张牌都来自一套牌,那套牌上有一个符号。既然这两件事对于该组中的每一张牌都是相同的,那么这是否应该构成它自己的表呢?是否所有的牌都应该放在一张大桌子上,而不管是哪一套?

还有,有没有理由不把每个集合中的卡片放在一个以符号命名的表中,然后把集合的名称放在一列中呢?

我是一个新手,所以如果我需要更具体或者只是闭嘴,请让我知道。提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-31 23:15:14

这取决于你想要什么样的范式。

考虑一个看起来像这样的牌表,主键是(Name, Set)

代码语言:javascript
复制
Card:
| Name   | Set   | Symbol |
---------------------------
| Card 1 | Set 1 | 1      |
| Card 2 | Set 1 | 1      |
| Card 3 | Set 1 | 1      |
| Card 1 | Set 2 | 2      |
| Card 2 | Set 2 | 2      |

此表在First Normal Form (1NF)中。然而,它不在Second Normal Form (2NF)中,因为Symbol的值依赖于Set的值,而(Set)是主键的真子集。

正如你在问题中所说,如果你想要2NF,你需要创建一个单独的Set表:

代码语言:javascript
复制
Card:
| Name   | Set   |
------------------
| Card 1 | Set 1 |
| Card 2 | Set 1 |
| Card 3 | Set 1 |
| Card 1 | Set 2 |
| Card 2 | Set 2 |

Set:
| Name  | Symbol |
------------------
| Set 1 | 1      |
| Set 2 | 2      |

这些表格现在都在2NF (和3NF、BCNF、4NF等)中。

关于问题的第二部分,您这样做而不是将所有列放在一个表中的原因有两个:

  • To使更改更容易。如果要更改集合的属性,只需更新Set表中的一行,而不是更新该符号中的所有卡片,从而降低了数据损坏的可能性。集合和符号之间存在真正的依赖关系,但第一个表不强制执行此操作。这意味着数据库将允许您进入一种损坏状态,即同一组中的卡片具有不同的符号。在第二组表格中,这是不可能发生的。
票数 2
EN

Stack Overflow用户

发布于 2012-08-31 23:02:33

我不太确定我是否理解了你的问题,但是如果我想建立一个基于TCG的数据库,我会有一个表,里面有所有的卡和相应的信息。我就假设YGO的卡片是这样的,因为它们在某种程度上是众所周知的。

在‘牌’表中,你会有一个自动递增的‘卡ID’,牌的名称,牌的描述,牌的符号,效果ID,等级,攻击值和防御值。所有这些都是“与卡相关的”。

集合本身在1:1表中,该表将任何数量的牌链接到玩家ID。

所以假设玩家ataylor在他的集合中有三个蓝眼白龙,那么他的表中就会有三个条目,每个条目都有相同的卡片/玩家组合……每个条目代表一张卡片。

这就是你想知道的吗?

票数 1
EN

Stack Overflow用户

发布于 2012-08-31 23:17:29

我也不确定我是否理解了这个问题,但我建议你把所有的牌都放在一张大桌子上,不要把它们分成不同的桌子,分别放在不同的桌子上。

您需要的是唯一标识该卡的Id (cardId)。然后有一个setId和一个symbolId。

那么你的牌桌看起来就像这样:

CardId、SetId、SymbolId、说明

1,1,2,一张很棒的卡片

2,2,2,另一张甜蜜的卡片

你可以让那张桌子变得很大,并且能够超级快速地计数/分离出任何一组或符号的牌。然后你只需要一个查询表来告诉你什么是SetId 1和什么是2。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12217866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档