我的表单中有一个复选框列表,用户可以选择其中任何一个,或者只选择所有复选框 认为用户选择他感兴趣的运动类型。
我需要最好的数据库结构来存储此用户选择。因此,将来我可以获得所有这些数据。
我认为,我可以将每个(userID,sport)选择存储为数据库表中的新行。但令我感到困惑的是,因为只有少数用户,表格会更快地扩展。
任何想法,兄弟?
答案 0 :(得分:3)
您可以设置多对多表格,例如:
FavoriteSports
------
id user_id sport_id
1 5 20
你在哪里:
User
-------
id name
5 Mike
Sport
-----
id name
20 Football
这是有道理的,因为用户有很多运动,而运动有很多用户。
答案 1 :(得分:3)
决定如何执行此操作称为规范化。
有多种方法可以执行此操作,具体取决于您希望数据的规范化程度。
最简单的方法是你所描述的。
userID userName sport
或者你可以有2张桌子
users
userID userName sportID
sports
sportID sport
或者你可以有3张桌子
users
userID sportName
sports
sportID sportName
user_sports
userID sportID
user_sports
表包含哪个用户喜欢哪项运动。
您选择的方法取决于数据的关系以及您期望的重复次数。
如果您只存储用户选择的运动,我会选择第二项运动。这可以防止重复运动名称,但每个用户只允许一项运动。如果您想允许用户选择多项运动,请使用第三个选项。