2013-04-23 23 views
-1

我需要你的意見什麼是更好的做法..如何繼續上一個項目即時通訊工作.. 它包括ajax請求,PHP和一個MySQL數據庫.. 用戶將被允許選擇10個選項(即圖片)20和他的選擇將提交到一個分貝..因此,同一用戶將無法再「投票」..包含0/1或更少的更多數據庫字段包含完整的信息?

所以我想到了兩種方式去.. 一)到11場 UNIQUE_ID,選項1,選項2,選項3等等... option10所以在每一個選項我還得或許是用戶的選擇DIV ID或某事像的描述..

表b)用21 fi製作一張桌子視場 UNIQUE_ID,選項1選項,選項3等等等等選項20 .. 在這種情況下,我還得總量的選擇,我會提交0/1或真/假的對應者..

因爲ID等之後一段時間結束與一些分數,我應該去選項B? 似乎更加「貪婪」的數據列方面,但我認爲它會更容易被通過它看。

如果選項b更優選,提交一個字符串通過所有20個變量更聰明,或者僅僅是10個,然後在php中檢查一個var是否被設置?

+0

StackOverflow不幸的是不能獲得設計意見。如果您的代碼存在特定問題,請將其發佈到此處。如果您需要設計方面的幫助,有幾個網站在http://www.stackexchange.com/上決定使用 – Ian 2013-04-23 14:13:40

+0

感謝您對Ian的評論,我實際上無法做出決定,因爲每個決定都會影響代碼的方式將接近以及..例如,在選項a中,我知道我總是提交10個元素,這些元素將在數據庫中順序存儲,而在另一種情況下,我將不得不通過js或10提交所有值(20)並通過php進行驗證..所以我想在這裏發佈它,因爲我在過去的問題中看到最好的做法或更好的性能.. – nikolas 2013-04-23 14:25:37

+0

這一匹配的第一種方法,我怎麼可以提取結果,如果我使用這種方式.. http ://stackoverflow.com/questions/12017271/count-occurrences-of-distinct-values-in-2-fields – nikolas 2013-04-23 21:33:51

回答

1

這個怎麼樣?

enter image description here

具有以下CHECK約束:

  1. CHECK (OPTION_NO BETWEEN 1 AND 20)
  2. CHECK (VOTE_NO BETWEEN 1 AND 10)
  3. CHECK ((VOTE_NO IS NULL AND VOTE_SCORE IS NULL) OR (VOTE_NO IS NOT NULL AND VOTE_SCORE IS NOT NULL))

主鍵{USER_ID, OPTION_NO}結合約束(1)確保用戶不能有超過20個選項。

{USER_ID, VOTE_NO}上的備用密鑰與約束(2)一起確保沒有用戶可以爲超過10個選項投票。

通過更改約束(1)或通過更改約束(2)更改允許投票的數量,您可以輕鬆更改每個用戶所允許的選項數量。

使用此結構,您可以以通用方式彙總投票,無論實際允許多少個選項或投票。


不幸的是,MySQL的只是分析,但不強制CHECK約束,所以你需要執行使用觸發器的等效執行。

相關問題