2012-05-13 4 views
1

を処理するためのMySQLデータベースのスキーマが必要です。プログラムはファイルをスキャンして、各列の適切なデータ型を決定し、そのファイルをMySQLの新しいテーブルに書き込みます。は、ここで私は既に持っているものだ複雑なデータのインポート

次に、データ(スキュー、コスト、色、コレクション名、高さ、MSRPなど)に、生のテーブル(インポートしたばかりのもの)の異なる列を割り当てるデータをマップします。

私の問題は、取ることができるプロセスを保存するための良いスキーマを考え出すことです。

例。

RAWファイルには、フィールドがあります。ITEM_NUMBER、LIST_PRICE、説明

これらはITEM_NUMBERにマップするには、色とcolletion名にMSRPするだけでなく、コストに、記述マップ、SKUにLIST_PRICEマップをマップします。

varchar型のフィールドでは、変換テーブルを使用して "core"値を参照して変換することができます。 生ファイルの "list_price"のような数値型では、ある種の数値変換ルールを保存する必要があります。例えば。 'list_price' = 2.0 * core_attribute_cost。

数学演算とそのオペランドの格納と検索についてはどうすればよいですか?私が欠けている簡単な解決策はありますか?私は現在、 "x + y"、 "x/y"、 "y/x"、 "yx"、 "xy"という数式テーブルを持つことを考えているので、xは入力フィールドになり、yは保存された値(「2.0」など)または別のフィールド。これは無限に複雑なようです。

おかげ

+0

に影響を与えることなく、データベーススキーマへの平らなテーブルからCSVインポートファイルやビジネスのいずれかのルールを調整するための柔軟性を提供します変数の?彼らは線形システムだけを形成するだろうか?そうであれば、各変数の係数を独自の列に保存することができます。** EDIT **もちろん、x/yなどの用語があるかもしれませんが、このソリューションは理想的でない可能性があります。たとえば、 PHPの['eval()'](http://php.net/manual/en/function.eval.php)関数を使用します。ユーザーの操作から「安全」)。 – eggyal

+0

私はvarcharフィールドの作業モデルを持っていると思います。私の主な問題は多分数学的操作を関係的に保存することは不可能だと思われます。 eval()を利用することは、短期間の簡素化において重要なステップとなる可能性があります。現在、着信データはユーザーの操作によって完全に安全ですが、(私がアルファから出ると)遠い将来にはないかもしれません。 –

答えて

0

私はあなたが必要な列を持つ単一のフラットテーブルにすべてのデータをインポートすることをお勧めしますし、CSVファイルに含まれます。

インポートが完了したら、SQLクエリを実行して、事前定義されたルールに従って正規化データベースにデータを挿入できます。

は、したがって、あなたのインポートプロセスは、固定された数があり、2段階であるが、他の

関連する問題