MySQL(涉及数组)需要表建议

时间:2012-03-23 10:10:31

标签: mysql arrays database

我正在尝试在网站上创建一个PHP表单,用于收集用户的姓名,电子邮件,地址和工作经验。名称,电子邮件和地址都非常简单并且有自己的字段,但工作体验表包含三个字段:“时间段”,“雇主”和“位置”,用户可根据需要动态添加多行(JavaScript用于在网站上完成此操作)。

我的问题是,在MySQL数据库中对此进行建模的最佳方法是什么?我只使用这样一个表:

| UserId |名称|电子邮件|地址|时间|雇主|职位|

或者我应该使用这样的两个表:

| UserId |名称|电子邮件|地址|

| UserId |时间|雇主|职位|

我的胆量告诉我第二个解决方案可能就是我需要的,因为我不知道如何将动态数组添加到数据库中。但是如何将第二个表的相同UserIds与第一个表相关联?如果我只使用一个表坚持第一个解决方案,是否可以在一个UserId下保存Time,Employer和Position的数组?请记住,我无法事先知道用户将创建多少行工作经验。

4 个答案:

答案 0 :(得分:1)

选项2是正确的,因为它会创建更少的冗余。

  

表1   | UserId |名称|电子邮件|地址|

     

表2   | UserId |时间|雇主|职位|

答案 1 :(得分:1)

Table 1     | UserId | Name | Email | Address |

Table 2  |Id| UserId | Time | Employer | Position |

选项2更好,如果你不想进入连接,只需从第一个表中获取$ userId并在第二个表上执行单个查询(WHERE UserId ='$ userId')。这将返回一个用户的所有工作经验的数组。

答案 2 :(得分:1)

Table 2  |Id| UserId | Time | Employer | Position |

这是我猜的正确选项..因为它会减少冗余。

答案 3 :(得分:1)

从Sevag Akelian的回答中,你需要使用join来获取数据。它会是这样的

select u.userid, time, employer, position from user as u left join
user_experience as ue on u.userid = ue.userid

如果您想获取特定用户的数据,只需使用条件

    select u.userid, time, employer, position from user as u left join
    user_experience as ue on u.userid = ue.userid
where userid = 1 
相关问题