我正在尝试决定在所有渲染引擎中存储跨浏览器错误的架构。
这就是我的想法:
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 :版本列应该是什么数据类型?
答案 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的长度。