2011-06-29 38 views
1

我是網絡開發新手,可以真正使用一些建議。謝謝大家!如果我只有一對多的數據庫,我還應該使用多對多的數據庫結構嗎?

我有一個表格,我讓用戶從1評價自己在幾個方面(心理,身體,遊戲)的經驗 - 10.總共有大約10區。用areaID和userID製作一個區域表和一個交叉表是否值得?在這種情況下,創建一個包含11列的表格(每個區域加上一個用戶ID)會不會更容易?

據我瞭解,有areaID表示的關鍵「區域」表將是最強大的,並讓我在以後添加更多的地區,但我真的不認爲自己這樣做。此外,因爲我只希望< 1000用戶,將另一列添加到MySQL分貝是很多工作?

最後,什麼是分界點,我其實應該使用許多一對多的結構?後來在表格中,我有用戶從1到4的比率〜30個字段。我應該在那裏使用兩個表系統嗎?

再次感謝!

+1

你是否絕對確定區域的數量將不會改變?你確定你能確定嗎?另外,「多對多」中「多」的定義實際上是「多於一個」。 – Wiseguy

回答

4

最好使用單獨的子表。連接的SQL開銷很小,您可以在需要允許的條目數量/數量很少的情況下獲得全面的靈活性,而無需更改數據庫結構。

它可能只有現在10個領域,但PHB的是臭名昭著的改變有關的東西,這是「基石」在一個小時之前推出他們的想法。

+0

感嘆。 。 。好。感謝您花時間給FNG建議 – Dimitri

+0

那麼將這些值存儲在交集表中的好方法是什麼?我是否需要將每個區域名稱與區域表格中的行進行比較,找到適當的區域ID,然後將其添加到交叉表格中?有沒有更好的方法? – Dimitri

4

我會總是模型正確的路口表中的許多一對多的關係,因爲你可以永遠預期未來會帶來什麼。

0

有沒有錯誤的答案,但考慮一下:你相信這一數字將十保持不變?

就我個人而言,我仍然會使用多對多的關係。這是更優雅的解決方案,在我看來,更好。但是,做好工作往往是浪費時間。

+0

如果你想組裝一個快速原型,或者技術債務不會讓你陷入困境,然後才能把它交給其他人,那是浪費時間。 –

+0

做好工作可能並不總是會在以後得到充分理解,但如果您沒有很好地/靈活地做好工作,您肯定會浪費更多的時間進行重新設計。 – Wiseguy

+1

有時,編程包含一次使用然後丟棄的腳本。我非常信任範式,鼓勵像OOP這樣的靈活性,但是三行用粉筆寫的Perl,你會使用一次或兩次,優於八十行優雅的Java,以達到同樣的目的。 –

2

假設您要計算每個用戶的區域數量。如果你使用11列的單個表格,你會怎麼做?

用交叉表實現此操作。你會很高興你做到了。

1

無論是有道理的,但我會選擇多對許多方法,你就可以在區表指定每個區域的名稱(也許添加一些評論指針對特定區域什麼1或10等..)