如何在数据库PHPMyAdmin中映射两个表

时间:2012-06-18 15:05:48

标签: mysql database database-design phpmyadmin

我正在开展一个用户可以在网站上保存自己的优惠券代码的项目,所以我想知道最好的方法是什么。

可以说,我有1个用户表,如下所示:

userId  |  firstName  | lastName  | codeId

然后我有一张优惠券代码表,如下所示:

codeId  |  codeNumber

所以我可以做的就是将codeIduserId相关联,这样当有人保存优惠券时,优惠券表中的codeId会进入用户的codeId

但是,如果用户有多张优惠券,我该怎么办?他们应该如何与用户联系?

我有2个选项可以做什么:

  1. 将优惠券表中的codeId保存到codeId用户表1,2,3,4,5

  2. 在优惠券表中创建一个新行,并通过在优惠券表userId中添加另一个字段并将添加的用户userId添加到其中,将用户连接到代码优惠券。

  3. 那么两个选项中哪一个更好?

3 个答案:

答案 0 :(得分:2)

两个表之间的多对多关系应该通过添加连接两个表的第三个表来解决:

user_coupons
- userId
- couponId

答案 1 :(得分:1)

您的第一个选项违反了1-NF规则,其中没有列会包含一组值。

这是一种典型的一对多关系。您的第二个选项是创建一个单独的表User_Coupons(不是下划线),并为每个关联创建一个带有UserID,CouponCode的行。两列一起应该是唯一的,以便它们都成为关联表的主键。

答案 2 :(得分:0)

如果我是你,我的数据库将是:

userId  |  firstName  | lastName

codeNumber | userId  

如果需要,您可以为任何用户插入许多codeNumber。