作为一个爱好项目,我接受了创建数据库的挑战,该数据库用于存储来自某个受欢迎的怪物收集RPG的怪物细节,其名称与Blokémon押韵。
开始的合理位置当然是一个名为Species
的表格,用于保存每个物种的基本人口统计细节。麻烦的是,20年的例外和噱头意味着在所有情况下实际上没有一个人口统计与1:1匹配。一些例子:
所有这一切的结果仍然是物种的概念,概念难以存储在数据库中。例如,皮卡丘是一个黄色的小型电动林地鼠标,这就是它的全部,所以它只有一套人口统计数据(在大多数语言中甚至称为皮卡丘)。如果每个物种都像皮卡丘,这将是一个非常简单的设计表。 Shaymin,另一方面?好吧,它的一个物种,但它有两个 formes - Sky Forme和Land Forme--每个都有不同的统计数据。天空形态是一只飞行的白狗。 Land Forme是一只小绿刺猬。
无论如何,物种仍然是有用的东西。它将形式链接在一起,即使该名称在不同语言之间有所不同,每个物种都有一个名称。您可以计算物种数量,或查看特定游戏中出现的物种。但是这种表中唯一可以存在的字段是ID。对于每一个物种,我们唯一可以考虑固定。我可能还会为我自己的开发人员理智包含一个“标签”字段,但它不会被视为数据集的一部分,只是我个人的帮助。
这是单列ID表的可接受的情况,还是有更好的方法来构建它?
答案 0 :(得分:2)
对于单列ID表
,这是否可接受?
是
从关系角度来看:一个表包含彼此具有某种关系的值的行,即参与某种关系,即以某种方式关联,即满足某个语句模板即谓词。您感兴趣的谓词是物种(ID)“ID是物种”。所以,做一个表。您将拥有许多其他谓词,例如“ID是一个物种......”。但是只要它们中没有一个与物种中的ID具有1:1的对应关系,就不能使用它们中的任何一个而不是物种。 (你可能能够将物种表达为,例如,它们的预测联合,但这是一个单独的设计问题。)
从企业风险管理的角度来看:有一些物种。所以有一个物种实体类型。它的表获得了一个代理键。您对任何属性都不感兴趣。所以没有。
有一个单列表没什么特别的。