MySql:将多项选择数据存储在数据库中

时间:2011-03-17 03:55:51

标签: mysql database insert

我的表单中有一个复选框列表,用户可以选择其中任何一个,或者只选择所有复选框 认为用户选择他感兴趣的运动类型。

我需要最好的数据库结构来存储此用户选择。因此,将来我可以获得所有这些数据。

我认为,我可以将每个(userID,sport)选择存储为数据库表中的新行。但令我感到困惑的是,因为只有少数用户,表格会更快地扩展。

任何想法,兄弟?

2 个答案:

答案 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表包含哪个用户喜欢哪项运动。

您选择的方法取决于数据的关系以及您期望的重复次数。

如果您只存储用户选择的运动,我会选择第二项运动。这可以防止重复运动名称,但每个用户只允许一项运动。如果您想允许用户选择多项运动,请使用第三个选项。