"データベースアプリケーション"を見直して、それが大きいと、名前と値のペアを含むフラットテーブルで構成されていることがわかりました。関係はDDLとして存在するのではなく、参照情報を提供する他の表と列の名前への "ポインタ"を提供するヘルパー表の使用によって存在します。これらの関係は、実行時に汎用関数を介して解決されます。これはどのような種類のデータモデルですか
エンティティ間の「関係」を提供する一般的な機能のメタコードは
FUNCTION Translate (Element)
LOCAL c, t, r
SELECT Table, Column
INTO t, c
FROM Translator
WHERE Item = $Element
SELECT $c
INTO $r
FROM $t
WHERE Name = $Element
RETURN $r
END FUNCTION
のように見え、上の例では、
Translate "Ele1" ==> "Bar"
Translate "Ele2" ==> NULL
Translate "Ele3" ==> "Bar2"
に解決されるだろう
これらの「関係」はもちろんすべてが「不完全」であるテーブル「カタログ」の「値」は参照されますが、テーブルと列名を「トランスレータ」テーブルに追加するだけで、新しい参照テーブルが作成され、アプリケーションにリンクされたカタログに行を簡単に追加できます。言うまでもなく、私はこのアプリケーション用のERモデルを開発することはできませんし、まったく意味がないとは思いません。
質問:
このアプローチ/コンセプトのための文献では専門用語がありますか?
"機能/アドホック/間接"依存関係を作成するデータ広告を格納するこの方法を説明する理論的概念はありますか? (私はこの「関係」と呼んでいないかもしれません)
"デザインパターン"に関して上記を説明する方が良いでしょうか?
このパターンの名前はわかりませんが、その特徴の1つを指摘します。ユーザーテーブルに格納される値は、データとメタデータが混在したものです。従来のリレーショナル・モデルでは、DDLによってデータが定義され、DDLから生成されたメタデータはすべてシステム表、つまりデータ・ディクショナリに格納されます。ユーザーテーブルにはメタデータが含まれていません。 –
この種のものを好むデザイナーがいる理由は簡単です。これにより、DDLを実行することなく、データ・モデルを変更することができます。これにより、アプリケーション・プログラマはDBAを介して実行せずに変更を行い、プロセスの速度を遅くすることができます。欠点は、それが文書化されていないデータをもたらすことです。 –
以上の研究成果は、「多形性の関連」として記述されていることもあり、時には反パターン化されていることもあります。 – MikeD