单列ID表的有效案例?

时间:2016-05-17 16:11:14

标签: sql database-design

作为一个爱好项目,我接受了创建数据库的挑战,该数据库用于存储来自某个受欢迎的怪物收集RPG的怪物细节,其名称与Blokémon押韵。

开始的合理位置当然是一个名为Species的表格,用于保存每个物种的基本人口统计细节。麻烦的是,20年的例外和噱头意味着在所有情况下实际上没有一个人口统计与1:1匹配。一些例子:

  • 姓名:我们称之为Bulbasaur,但日本称之为Fushigidane(如果您愿意,可以称之为フシギダネ)。其他语言有不同的名称。
  • 类别:(Bulbasaur是一个“种子”神奇宝贝,例如)这个将<1> 1,但最近添加的物种Hoopa必须笨拙并且有两个。无论如何还有语言的东西。
  • 身高/体重/统计数据:大多数物种只有一个“forme”,但现在有很多物种有多个,每个都有不同的统计数据和外观。其中许多统计数据将存在于层次结构的Forme级别,而不是物种级别。

所有这一切的结果仍然是物种的概念概念难以存储在数据库中。例如,皮卡丘是一个黄色的小型电动林地鼠标,这就是它的全部,所以它只有一套人口统计数据(在大多数语言中甚至称为皮卡丘)。如果每个物种都像皮卡丘,这将是一个非常简单的设计表。 Shaymin,另一方面?好吧,它的一个物种,但它有两个 formes - Sky Forme和Land Forme--每个都有不同的统计数据。天空形态是一只飞行的白狗。 Land Forme是一只小绿刺猬。

无论如何,物种仍然是有用的东西。它将形式链接在一起,即使该名称在不同语言之间有所不同,每个物种都有一个名称。您可以计算物种数量,或查看特定游戏中出现的物种。但是这种表中唯一可以存在的字段是ID。对于每一个物种,我们唯一可以考虑固定。我可能还会为我自己的开发人员理智包含一个“标签”字段,但它不会被视为数据集的一部分,只是我个人的帮助。

这是单列ID表的可接受的情况,还是有更好的方法来构建它?

1 个答案:

答案 0 :(得分:2)

  

对于单列ID表

,这是否可接受?

从关系角度来看:一个表包含彼此具有某种关系的值的行,即参与某种关系,即以某种方式关联,即满足某个语句模板即谓词。您感兴趣的谓词是物种(ID)“ID是物种”。所以,做一个表。您将拥有许多其他谓词,例如“ID是一个物种......”。但是只要它们中没有一个与物种中的ID具有1:1的对应关系,就不能使用它们中的任何一个而不是物种。 (你可能能够将物种表达为,例如,它们的预测联合,但这是一个单独的设计问题。)

从企业风险管理的角度来看:有一些物种。所以有一个物种实体类型。它的表获得了一个代理键。您对任何属性都不感兴趣。所以没有。

有一个单列表没什么特别的。