【问题标题】:MySql: Store multiple choice data in databaseMySql:将多项选择数据存储在数据库中
【发布时间】:2011-03-17 12:08:12
【问题描述】:

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

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

我认为,我可以将每个(用户 ID、运动)选择存储为数据库表中的新行。但这让我很困惑,因为只有少数用户的表格会更快地扩展。

兄弟们有什么想法吗?

【问题讨论】:

    标签: mysql database insert


    【解决方案1】:

    您可以设置多对多表,例如:

    FavoriteSports
    ------
    id user_id sport_id
    
    1  5        20
    

    你在哪里:

    User
    -------
    id name
    
    5  Mike
    
    Sport
    -----
    id name
    
    20 Football
    

    这是有道理的,因为一个用户有很多运动,而一项运动有很多用户。

    【讨论】:

      【解决方案2】:

      决定如何执行此操作称为规范化。

      有多种方法可以做到这一点,具体取决于您希望数据的标准化程度。

      最简单的方法就是你描述的。

      userID    userName    sport
      

      或者你可以有 2 张桌子

      users
      userID    userName    sportID
      
      sports
      sportID   sport
      

      或者你可以有 3 张桌子

      users
      userID    sportName
      
      sports
      sportID   sportName
      
      user_sports
      userID    sportID
      

      user_sports 表包含哪个用户喜欢哪个运动。

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

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

      【讨论】:

        猜你喜欢
        • 2010-12-02
        • 1970-01-01
        • 1970-01-01
        • 2011-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多