我正在创建一个存储Magic the Gathering卡的数据库 我认为我应该使用的设计如下:
完整img:http://portolivre.net.br/imgs/MTGdb.png
为了帮助您了解此数据库中需要的内容:
每张卡可以出现在多个版本中,当它更改版本时,它可以更改:Rarity,Artist和每个版本中的卡号。
每张卡可以有一种或多种类型。
每张卡都有子类型(不需要)。
马克也依赖于卡片和版本。
现在,对于我有疑问的事情:
这是否正确归一化?
是否可以保留一些没有任何主键的表格? (cardSets,cardType和cardSub)
考虑到当我需要卡片信息时,我需要检查每张桌子,我应该了解哪些视图并使用它们?
还有基本的土地,女巫可以在同一版本中出现不止一次,即任何版本都可以有4种不同的森林,它们将具有相同的一切(包括卡号),只有艺术家不同。
我应该创建一个土地表并使用它而不是卡表来处理这种情况,或者我应该在卡表中添加森林4次?
谢谢大家=)
答案 0 :(得分:0)
这是正常化的良好开端。添加数据然后尝试在其上构建一些东西是理解您的需求所需的一种好方法。另外说明每个连接的所有关系(如上所述)是验证设计的好方法。
根据您将要使用的数据模型,我建议将pk添加到所有表中 - 如果您使用的是ORM或其他代码生成工具,则可能需要它们。视图可能肯定有助于简化对数据的访问,但它们只是在数据库中存储为sql文本的查询,因此不是严格要求的。