mysql - MySQL检查数据库是否规范化和功能正常

标签 mysql database database-design normalization

我正在创建一个数据库来存储魔法收集卡。
我认为我应该使用的设计如下:
完整图像:http://portolivre.net.br/imgs/MTGdb.png
为了帮助你们了解这个数据库需要什么:
每张卡片可以出现在多个版本中,当它改变版本时,它可以改变:稀有品,艺术家,以及每个版本中的卡号。
每张卡可以有一种或多种类型。
每张卡都可以有子类型(不是必需的)。
马克也依赖于卡片和版本。
现在,对于我怀疑的事情:
这是正常的吗?
是否可以保留一些没有主键的表?(卡片组、卡片类型和卡片子)
考虑到当我需要卡片信息时,我需要检查每一张表,我是否应该了解哪些视图并使用一些视图?
也有基本的土地,巫婆可以出现在同一个版本不止一次,即任何版本可以有4个不同的森林,他们将有一切相同(包括卡号),只有艺术家不同。
我应该创建一个lands表并使用它来代替cards表来处理这种情况,还是应该只在cards表中添加forest 4次?
谢谢大家=)

最佳答案

这是正常化的良好开端。添加数据,然后尝试在其上构建一些东西,这是理解您的需求所需的一种好方法。同时声明每个连接的所有关系(正如您在上面开始做的那样)是验证设计的好方法。
根据您将使用什么样的数据模型,我建议向所有表中添加一个pk—如果您使用orm或其他代码生成工具,它们可能无论如何都是必需的。视图可能有助于简化对数据的访问,但它们只是作为SQL文本存储在数据库中的查询,因此不是严格要求的。

关于mysql - MySQL检查数据库是否规范化和功能正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18279208/

相关文章:

mysql - 显示两种状态的金额总和

java - 如何在 Java Web 应用程序中存储文件?

ruby - 有谁知道 datamapper + sqlite3 与 ruby​​ 的教程?

java - 数据库分布

sql - 糟糕的数据库模式设计的升级策略

database-design - 您是否应该在数据库级别和应用程序级别强制实现约束?

MYSQL - 更新后检查值是否不为负,如果是则抛出错误

mysql - SQL 语法和 SQL Server 版本错误

mysql - 在 spring mvc 的 hibernate 注释中选择查询

php - 如何为我的应用程序创建索引数据库