web-dev-qa-db-ja.com

テーブルまたはデータベースの任意の数の列をサポートするためのデータ構造設計

私は現在、人々がデータを入力し、そのデータに対していくつかのモデルを実行できるように、無料のWebサービスを構築するための一種のメタモデラーに取り組んでいます。

私が現在苦労しているタスクは次のとおりです。ユーザーは列ごとにデータを入力する必要があります。これは、n、m> 0、およびkの条件で、n個のID、m個の属性、およびk個のクラスで構成されます。 > = 0。データは異種であるため、インデックスは数値またはテキストの両方にすることができ、属性とクラスについても同じことが言えます。簡単にするために、データにnullはないと思います。

私は現在考えています:

  1. 十分な数の列(すべてnull値)を含むテーブルを作成して、null以外の列(ユーザー入力から取得される)のみを使用して作業できるようにします。ただし、これにより、ユーザーが入力できるデータセットのサイズが制限されます。

  2. プログラミング言語で特殊なデータ構造を作成し、そこですべての作業を行い、最後に、結果データをそこに格納するためのテーブルを動的に作成します。

  3. この種のデータに特化したデータベース(おそらくドキュメントベースのDB)を使用します。

  4. RDBMS自体(私はPostgreSQLを使用しています)にデータ構造を作成します。たとえば、可変サイズの配列を作成します。これにより、3つの変数配列(インデックス用に1つ、属性用に1つ、属性用に1つ)を使用して、ユーザー入力から直接テーブルを作成できます。クラス用に1つ)。ただし、属性とインデックスは異なるタイプである可能性があるため、配列は異種データタイプをサポートする必要があり、これがRDBMSまたはSQLで可能かどうかはわかりません。

情報を探していましたが、今まで結果が出ませんでした。パッケージ、言語ライブラリ、拡張機能または紙、論文、関連情報を含むテクニカルレポートへのガイダンスをいただければ幸いです。また、似たようなことをした個人的な経験も役立つかもしれません。


編集:

いくつかのサンプルレコード:

 ID NAME CODE HEIGHT WEIGHT CLASS1 CLASS2 
 1 HARRY 100170 70 SURVIVOR VICTIM 
 2 ALBUS 101185 82 
 4 REMUS 103177 60 

これは、身長と体重に基づいて人が生き残るか死ぬかを予測する意図があるデータセットの例です。出力は、SURVIVORまたはVICTIMラインで構成されるラインである必要があります。
IDは、ID、NAME、およびCODE列になります。 HEIGHTとWEIGHTは属性であり、CLASS1とCLASS2はクラスです。

同じ構造が次のようなものをサポートする必要があります。

 IDコード収入年齢番号_OF_HOUSESCHILDRENC1 C2 C3 
 1 101 9000 212いいえHIGHLOW MED 
 2 110 5700 301はい
 7 111 4000 37 0 TES 

この例では、実際の年齢、収入、家の数、および現在子供がいるかどうかに基づいて、人の将来の収入レベルを予測するという考え方です。結果は、HIGH、MED、またはLOWのいずれかになります。

この場合のデータは次のようになります。IDとCODEはIDを表し、AGE、NUMBER_OF_HOUSES、INCOME、CHILDRENは属性を表し、C1、C2、C3はクラスを表します。

データ構造は、カテゴリごとに列数が異なる場合でも、両方の入力をサポートする必要があります。また、各列のデータ型は異なります。カテゴリごとの列数は固定されるべきではありません。

1

あなたの「不規則な」データを考えると、あなたはmightマグニートーを見たいと思うでしょう( ここここ を参照)。もともとは、さまざまな属性を持つさまざまな製品を持つことができる衣料産業向けに設計されました。それはあなたのニーズにぴったりかもしれません。コミュニティエディションがあるので、コードと(特に)データベーステーブル構造を見て、自分の環境に適応することができます。

ただし、注意してください。それは万能薬ではありません-追加された柔軟性に伴う問題があります。私の答えを参照してください ここ これはこのアプローチ( [〜#〜] eav [〜#〜] として知られている)の落とし穴のいくつかを説明しています(必ずリンクをたどってください) 。

1
Vérace