2014-11-01 28 views
-1

我正在創建一個Android應用程序,用戶可以在playstore中以類似的方式評價行程。所以,我使用數據類型DECIMAL(3,2)來存儲評分。mysql中評分的數據類型是什麼?

但問題是,它會允許超過5的平均評級值,比如高達9.99 ...我想要顯示來自0.0 to 5.0的平均評分。那麼我的數據類型應該是什麼?

我應該使用enum{1,2,3,4,5}嗎?

+0

您可以簡單地將評分作爲字符串存儲,並在您的應用中檢索後,可以將其轉換爲雙精度。 – kgandroid 2014-11-01 06:23:15

+0

使用評級欄? – 2014-11-01 06:34:42

+0

@ W-I-Z-A-R-D ya,使用等級欄。但是,當其他人看到它時,我必須檢索平均評分。所以,我必須從評級欄存儲評分。 – 2014-11-01 06:36:13

回答

1

我們應該使用tinyint來存儲數據庫的評分。然後,我們可以使用MySQL集合函數(如AVG)檢索平均值。

+2

這是不正確的。閱讀關於該答案的評論。 ENUM類型是一個字符串對象。你不能像AVG那樣對它進行數學計算。如果您想要執行數字函數,則需要使用TINYINT之類的數字數據類型。 – Tom 2014-11-01 06:55:54

+0

限制應用程序中的答案。 – Tom 2014-11-01 06:56:31

+0

其實,我試過了一個sqlfiddle,而AVG實際上似乎也起作用。 http://www.sqlfiddle.com/#!2/bb23ef/1 – Tom 2014-11-01 07:03:08

1

您可以對插入評級進行驗證。如果評級高於5.0,則顯示對話框。或吐司通知等級必須是在0.0到5.0

0

RatingBar方法public float getRating()將返回浮點值範圍可以存儲爲字符串,就可以轉換成浮動而獲得大鼠和RatingBar也紛紛方法public void setStepSize (float stepSize)其中stepSize的是步長這個評級欄。例如,如果需要半星粒度,則該值爲0.5。

<RatingBar 
    android:id="@+id/ratingBar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:numStars="5" 
    android:stepSize="1.0" /> 
相關問題