我有一张表可以保存游戏统计数据'。持有的统计数据的名称将根据统计数据的运动而变化。
最佳做法是创建两个表:一个用于包含诸如< Stat1,Stat2'等列的统计数据。另外一个拿着带有sportID作为关键字的标题。或者最佳做法是为每项运动设置多个度假村桌子。或者其他任何方式?
谢谢,
答案 0 :(得分:1)
我同意安迪。像Stat1
这样的通用标题列 - 其中目的未在列名中指定,可以多态使用,或者列类型必须更通用 - 通常表示SQL / RA设计不佳。
考虑是否遇到过这种情况:create table people (field1 varchar(20), field2 varchar(20))
。是的 - 不将在我的数据库中飞行。给出与目的有关的列(和表)名称。
相反,收集的每个不同的类型信息应该具有它自己的实体(读取:表格)或相关实体组。在这种情况下,我会想象每项运动代表不同类型的收集统计/信息。 (即使输赢信息因运动而异。)
尝试"标记"基于附加表的列是Entity-Attribute-Value (EAV)模型的中途尝试。虽然EAV 可以有用但它在SQL中有很多的缺点,除非经过仔细考虑特定的用例,否则不应该使用它。 (我不认为EAV适合这种情况。)