私のデータベースにはテーブルが3つあります:users
、payment_methods
、user_blocked_pm
です。 users
テーブル自体は話していますが、payment_methods
には会社が使用するすべてのお支払い方法が保存されており、user_blocked_pm
には特定のユーザーに対して支払方法がブロックされています。MySQLの3つのテーブル間の関係を改善する
+------------------+
| 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
はジョンとcash
はデイビスのためにブロックされているユーザーのためにブロックされています。
複数のユーザーと支払い方法がある場合、私はuser_blocked_pm
に複数のレコードを持ちますが、各ユーザーはいくつかの支払い方法しか使用できないためです。
テーブルが巨大にならないように、users
とuser_blocked_pm
の間のこの関係を改善する方法はありますか?なぜ許さ午後の数が、許可されていない多くの少ないしている場合は、user_idの上で選択するために行くか、
ubpmのidは冗長であることに注意してください。 – Strawberry
ユーザレベルで、すべての支払い方法がブロックされていることを示すフィールドを追加することができます。そうすることができます。 user_blocked_PMで個々のブロックを許可する。テーブルが巨大であってはならないことに注意してください。私はほとんどの顧客と支払い方法がブロックされていないことを願っています – xQbert
@xQbert、これは午後の少数でうまくいきました。支払い期限に基づいて約72件を作成し、州ごとにblocked_pmテーブルの周りに134k行... – Rafael