私の雇用主である小規模な事務用品会社は、サプライヤを切り替えようとしています。私は、堅牢なデータベース スキーマを作成するために、サプライヤの電子コンテンツを調べています。私たちの以前のスキーマは、ほとんど何も考えずにまとめられただけであり、破損した一貫性のない情報を含む耐え難いデータ モデルにつながっています。
新しいサプライヤーのデータは古いものよりもはるかに優れていますが、彼らのデータは私が超正規化と呼ぶものです. たとえば、製品カテゴリ構造には、マスター部門、部門、クラス、サブクラス、製品ブロックの 5 つのレベルがあります。さらに、製品ブロックのコンテンツには、製品の長い説明、検索用語、および画像名があります (製品ブロックには製品とすべてのバリエーションが含まれているという考えです。たとえば、特定のペンは黒、青、または赤のインクで提供される場合があります。これらすべてアイテムは本質的に同じものであるため、単一の製品ブロックに適用されます)。私が与えられたデータでは、これは製品ブロックの一意の ID への参照を持つ製品テーブル (「テーブル」と言いますが、データを含むフラット ファイルです) として表されます。
提供されたデータに対応する堅牢なスキーマを考え出そうとしています。比較的すぐにロードする必要があり、提供されたデータは提供されたデータのタイプと一致しないようですサンプル Web サイト ( http://www.iteminfo.com ) でデモを提供しています。いずれにせよ、私は彼らのプレゼンテーション構造を再利用しようとは考えていないので、それは論点ですが、私はサイトを閲覧して物事を構造化する方法についていくつかのアイデアを得ていました.
私が確信が持てないのは、データをこの形式で保持する必要があるかどうか、またはたとえば、自己参照関係を使用してマスター/部門/クラス/サブクラスを単一の「カテゴリ」テーブルに統合し、それを製品ブロック (製品ブロックは「カテゴリ」自体ではなく、特定のカテゴリに関連する製品のグループであるため、個別に保持する必要があります)。現在、製品ブロック テーブルはサブクラス テーブルを参照しているため、これらを統合すると「category_id」に変更されます。
私はおそらく、このデータを Ruby on Rails で利用する e コマース ストアフロントを作成する予定です (少なくとも、それは私の計画です)。考えすぎですが、申し訳ありませんが安全を確保したいと思います。以前のデータは本当に混乱しており、一貫性のない不正確なデータが原因で、会社は何万ドルもの売り上げを失っていました。また、Rails の規則から少し離れて、データベースが堅牢であり、制約が適用されるようにするつもりです (アプリケーション レベルでも行う予定です)。
このような状況にどのように対処しますか?テーブル構造を模倣するフラット ファイルにデータをロードする必要があることに注意してください (どの列がどの参照が設定されているかを示すドキュメントがあります)。それらを現在のように正規化したままにするか、統合する必要があるかを決定しようとしています。各メソッドが Rails を使用してサイトをプログラミングする方法にどのように影響するかを認識する必要があります。統合すると、単一のテーブルに本質的に 4 つの「レベル」のカテゴリが存在するためです。各レベル。サブクラス (製品ブロックに直接リンクする) を除いて、それらは行わないためそれらの下の次のレベルのカテゴリを表示する以外のもの。私は常に、このようなデータを処理するための「最善の」方法を失っています。