【发布时间】:2017-06-13 17:45:30
【问题描述】:
我的数据库中有 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 |
+-----+---------+-------------------+
因此,按照上面的结构,payment_methods 被用户 John 屏蔽,cash 被 Davis 屏蔽。
当有多个用户和支付方式时,我将在user_blocked_pm 上拥有多条记录,因为每个用户只被允许使用几种支付方式。
有没有更好的方法来处理users 和user_blocked_pm 之间的这种关系,以使表格不会变得巨大?
【问题讨论】:
-
注意ubpm中的id是多余的
-
因此您可以在用户级别添加一个字段以指示所有付款方式都被阻止,或者您可以在 user_blocked_PM 允许单独的块。并注意桌子不应该很大。我希望大多数客户和付款方式不会被阻止
-
@xQbert,这对于少数 pm 来说效果很好,直到用户决定根据付款期限创建大约 72 个,并且该州的不同城市制作了大约 134k 行的 blocked_pm 表。 ..
标签: mysql database relational-database database-administration