2010-07-04 66 views
1

我正試圖決定在所有渲染引擎中存儲跨瀏覽器錯誤的模式。基於渲染引擎和瀏覽器版本分類跨瀏覽器錯誤的規範化/架構?

這是我腦子裏想的:

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:版本列應該是什麼數據類型?

回答

1

問題1.1:這個模式是否有意義?足夠正常嗎?

嘿!這是兩個問題。 ;-)

此架構假定一些事情,如:

  • 每個瀏覽器版本只有一個瀏覽器引擎。
  • 給定瀏覽器引擎中的每個錯誤都會影響到每個使用該引擎的瀏覽器。

如果這些並非總是保證是真實的,你可能需要一些多到許多路口表。

問題1.2:版本列應該是什麼數據類型?

我會用VARCHAR來解釋「4.0發佈候選人1」等等。我會允許至少30長度。

1

我會創建一個引擎表(即一行gecko,以及一個從browser_engine到引擎的FK),類似的是一個瀏覽器表。這會降低存儲要求並加快查詢速度。我還考慮將版本存儲在major/minor/revision字段中,以便查詢「修訂版2.5或以前的所有錯誤」更容易(「10.0」<「2.5」 - 因此字符串不適合這樣的查詢)。