我的数据库中有3个表:users
,payment_methods
和user_blocked_pm
。 users
表格不言而喻,payment_methods
存储公司使用的所有付款方式,而user_blocked_pm
则为特定用户屏蔽了付款方式。
+------------------+
| users |
+-----+------------+
| id | user_name |
+-----+------------+
| 1 | John |
| 2 | Davis |
+-----+------------+
+-----------------------+
| payment_methods |
+-----+-----------------+
| id | payment_method |
+-----+-----------------+
| 1 | credit_card |
| 2 | cash |
+-----+-----------------+
+-----------------------------------+
| user_blocked_pm |
+-----+---------+-------------------+
| id | user_id | payment_method_id |
+-----+---------+-------------------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 2 |
+-----+---------+-------------------+
因此,按照上述结构,用户John阻止了payment_methods
,而且戴维斯阻止了cash
。
当有多个用户和付款方式时,我会在user_blocked_pm
上有多个记录,因为每个用户只能使用一些付款方式。
有没有更好的方法来处理users
和user_blocked_pm
之间的这种关系,以便表格不会变得巨大?
答案 0 :(得分:0)
答案 1 :(得分:0)
如果您有几个用户"类型",那么您可以将user_blocked_pm
替换为user_type_blocked_pm
。 A"类型"是一组被阻止/允许的付款方式。所以user_type_blocked_pm
表很小 - 有不同类型的条目(只能用现金支付的用户,可以用信用卡和现金支付的用户等)然后,你可以在{{{{{ 1}}表以指示用户类型。
答案 2 :(得分:0)
你的方法很好,到目前为止提出的其他想法也没问题。如果支付类型的数量很小(不超过7,比如说 - 当然少于64!)和有限,那么你也可以考虑一种按位方法,其中1 = credit_card,2 = cash,3 = both。我这样做的几天都不会超过7天。