规范化/模式,用于根据渲染引擎和浏览器版本对跨浏览器的错误进行分类?

时间:2010-07-04 22:08:40

标签: sql database-design normalization

我正在尝试决定在所有渲染引擎中存储跨浏览器错误的架构。

这就是我的想法:

browser_engines表:

id  name  version
1   gecko 1.5
2   gecko 1.7
3   gecko 1.8
4   gecko 1.9.0
5   gecko 1.9.1

browser_versions表:

id  name      version  engine_id
1   firefox   3.0      4
2   firefox   3.5      5

browser_bugs表:

id  name    description   engine_id
1   ff bug                4

因此,如果我删除了第一个bug,它将映射到gecko 1.9.0,因此html视图会将浏览器视为Firefox 3.0。

问题1.1 :这个架构有意义吗?它足够正常吗?

问题1.2 :版本列应该是什么数据类型?

2 个答案:

答案 0 :(得分:1)

我会创建一个引擎表(即gecko的一行,以及从browser_engine到引擎的FK),类似于浏览器表。这将降低存储要求并加快查询速度。我还考虑将版本存储在major / minor / revision字段中,以便更容易查询“版本2.5或之前版本中的所有错误”(“10.0”<“2.5” - 因此字符串不适合此类查询)。 / p>

答案 1 :(得分:1)

  

问题1.1:这个架构有意义吗?它是否足够正常化了?

喂!那是两个问题。 ; - )

此架构假设了一些内容,例如:

  • 每个浏览器版本只有一个浏览器引擎。
  • 确保给定浏览器引擎中的每个错误都会影响使用该引擎的每个浏览器。

如果其中任何一个总是保证为真,那么您可能需要一些多对多的交叉表。

  

问题1.2:版本列应该是什么数据类型?

我会与VARCHAR一起考虑“4.0候选发布候选人1”等。我允许至少30的长度。