我在表單中有一個複選框列表,用戶可以選擇其中的任何一個,或者只是全部。
認爲用戶選擇他感興趣的運動類型。MySql:將多項選擇數據存儲在數據庫中
我需要最好的數據庫結構來存儲這個用戶選擇。所以,將來我可以得到所有這些數據。
我想,我只是可以將每個(userID,sport)choise存儲爲數據庫表中的新行。但這讓我感到困惑,因爲只有少數用戶,桌子的展開速度會更快。
任何想法,兄弟?
我在表單中有一個複選框列表,用戶可以選擇其中的任何一個,或者只是全部。
認爲用戶選擇他感興趣的運動類型。MySql:將多項選擇數據存儲在數據庫中
我需要最好的數據庫結構來存儲這個用戶選擇。所以,將來我可以得到所有這些數據。
我想,我只是可以將每個(userID,sport)choise存儲爲數據庫表中的新行。但這讓我感到困惑,因爲只有少數用戶,桌子的展開速度會更快。
任何想法,兄弟?
你可以設置一個多到多臺如:
FavoriteSports
------
id user_id sport_id
1 5 20
如果您有:
User
-------
id name
5 Mike
Sport
-----
id name
20 Football
這是有道理的,因爲用戶有許多體育和運動有許多用戶。
決定如何做到這一點叫做正常化。
有多種方法可以做到這一點,這取決於您希望數據如何標準化。
最簡單的方法就是你所描述的。
userID userName sport
或者你可以有2個表
users
userID userName sportID
sports
sportID sport
或者你可以有3個表
users
userID sportName
sports
sportID sportName
user_sports
userID sportID
凡user_sports
表包含用戶喜歡哪個體育項目。
您選擇的方法取決於您的數據關係和您期望的重複數量。
如果您只存儲用戶選擇的運動,我會選擇第二個。這可以防止體育名稱重複,但只允許每個用戶進行一項運動。如果您想讓用戶選擇多項運動,請使用第三個選項。