質問

各ユーザーには4つのテーブルがあります。4 つのテーブルのデータは追加されず、固定されたままになります。

各ユーザーテーブルの構造は同じになります。

これらのユーザーのデータを mysql に保存するには、データベースを設計する必要があります。

それぞれ 4 つのテーブルを持つ 200 万のデータベースを作成する必要がありますか?

助けていただければ幸いです

4 つのテーブルは

  1. ユーザーの1ヶ月間の着信履歴
  2. ユーザーの 1 か月分の受信 SMS 記録
  3. ユーザーの1か月分の発信履歴
  4. ユーザーの 1 か月間の送信 SMS 記録

呼び出しテーブルは次の構造になります。

日付時刻番号期間料金

受信SMSは次の構造になります

日付時刻番号

送信SMSは次の構造になります

日時番号料金

役に立ちましたか?

解決

これは私が呼んでいる SQL アンチパターンです メタデータ トリブル。 見た目は可愛くて人懐っこいのですが、すぐに制御不能になって増殖してしまいます。

「... ごとに同一のテーブルがあります」または「... ごとに同一の列があります」で始まるフレーズを聞いたら、おそらくメタデータ トリブルがあるでしょう。

まず、4 つのテーブルを持つ 1 つのデータベースを作成し、 user_id 4 つのテーブルのそれぞれに属性を付けます。

例外的に、ユーザーごとに別々のデータベースに分割したい場合がありますが、それらは 例外. 。自分が何をしているのかを理解し、それが必要であることを証明できない限り、そこには行かないでください。

他のヒント

ほとんどのデータベース サーバー (およびファイル システム) は、それほど多くの個別のデータベースを必要とするインスタンスを処理しません。実際に必要なのは、各ユーザーの行を含む 4 つのテーブルだと思います。それはまったく合理的な要件です。

いいえ、それぞれ 4 つのテーブルを持つ 200 万のデータベースは必要ありません。必要なのは、1 つのデータベース、4 つのテーブル、およびユーザーごとに一意のユーザー ID だけです。

何かのようなもの:

users table:
| user_id (primary key) | username |

address table
| user_id (foreign key) | address  |

whatever table
| user_id (foreign key) | whatever |

なぜユーザーごとに 4 つのテーブルが必要なのか不思議に思います。ここで私が伝えようとしていることの基本を理解していただければ幸いです。

データ ウェアハウジングから借用したこの例を考えてみましょう。これは、単なるキンボールのスターです。非常に単純化されたモデルですが、これら 4 つの表は、説明されているニーズなどをカバーしています。

telecom_model_01

必要なのは、ユーザー用のテーブル、table1、table2、table3、table4 だけです。table1 にデータを入力する必要がある場合は、table1 に users_id を含めるだけです

TABLE 1                              USERS

ID   usersID     amount   quantity   ID   Name
1       1           200      2        1   John
2       1           400      3      

その後、Table1.usersid = users.id all tableで内側結合を使用して接続できます。

要点を理解していただければ幸いです

いいえ、200 万のデータベースは必要ありません。

実際には、4 つのテーブルに対して 200 万のインスタンスが必要です。

もちろん、各テーブルが他のテーブルのリレーショナル属性を持つようにリレーショナル データベースを設計する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top