1

74列と約60K行のCSVファイルがあります。このCSVファイルの内容は、毎月MySQLデータベースにインポートする必要があります。

データが挿入された後、エンドユーザーは事前定義されたフィルターを使用してMySQLデータベースのコンテンツを照会できます。

すべてを1つのテーブルに入れると、挿入は速くなりますが、読み取りは遅くなります。コンテンツを(外部キーを使用して)複数のテーブルに分割すると、挿入が遅くなり、読み取りが速くなり、失敗する可能性が高くなると思います。

私にとって最良の選択肢は何だと思いますか、それとも他の可能性はありますか?

4

2 に答える 2

0

あなたのコラムを見なくても、私は複数のテーブルが進むべき道であることをほぼ保証することができます。

  1. ヒューマンエラーを減らします
  2. 冗長性を減らすことにより、
  3. ボーナスとして、クライアントのアドレスなどの更新は、クライアントが関与したすべてのラインアイテムで更新する必要がなく、クライアントのテーブルに対して1回行うことができます。
  4. また、別のテーブルでカバーされているデータの行全体を1つの外部キーを参照して合計できるため、挿入が容易になります。

データベースの挿入時間が大きな問題になる場合は、マクロを作成するために常に少し時間がかかる可能性があります。

于 2012-08-20T11:08:36.380 に答える
0

すべてのデータ関係(バス、クライアント、および旅行の間)が1対1であり、情報がCSV全体で複製されていない場合、次の理由で単一のテーブルを使用できます。

  1. CVSからデータベースへの最も単純な変換。CVSの各列はデータベースの1つの列に対応します。
  2. CVSに「似ている」ため、データベースで作業する人は誰でも、データがどこにあるかを正確に知ることができます。
  3. データベースに情報を照会するときは、必要なデータのみを要求し、不要な列を除外するため、「読み取りが遅くなる」という主な懸念事項は大きな問題にはなりません。(例SELECT departure, arrival, distance FROM bustrips WHERE distance > 1000)\

ただし、データを見ると、CVSに大量の重複がある場合、おそらく同じ旅行に複数のクライアントが乗っているか、同じバスが複数の旅行に使用されているなどです。一意のデータのブロックごとに新しいテーブル。私がすでに見ているかもしれない1つの例は、バスの新しいテーブルです。

Bus_ID;
Numberplate;
Handicap;
Odometer reading;

これがあなたの決断に役立つことを願っています。それは「簡単な読み取り」と「簡単な書き込み」ではなく、冗長性の削減による情報の明確化に関するものです。

于 2012-08-20T19:31:15.563 に答える