カスタムフィールドとデータ型の設計パターン/戦略


12

データオブジェクトにカスタムフィールドを追加する機能を持つオブジェクトを設計するための、またはオブジェクトの独自のカスタム定義を作成するための一般的な戦略または設計パターンはありますか。たとえば、独自の種類の情報を持つことができるSalesForceなどの製品、Expression Engineなどのフレームワーク、およびチャネルとチャネルフィールドグループの処理方法(例)、またはwordpressのようなCMSの機能カスタム投稿タイプにフィールドを追加します。



注意:Oracleは、これを特定の(私が理解していることから、一般的な)方法で実装しているすべての人からズボンを訴えています。私もそれをのぞきます。
スティーブンエバーズ

回答:



4

EAVモデルはあなたが説明するように、通常、非構造化スキーマのために使用されています。

それはパフォーマンスとそのような動的プロパティをアドホックな方法でクエリする能力に苦しみます...そしてそれ自体は多くの人がアンチパターンであると考えています。

他のアプローチとしては、XMLやJsonなどの動的形式を使用してそのようなプロパティを保持し、場合によっては検索を支援するために各プロパティ専用のストレージを使用します。


また、EAVの代替としてドキュメント指向のデータベースを使用している人々の話を聞いたことがありますが、そのようなアプローチについて個人的な経験はありません。
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner-それは私がほのめかしていたことですが、自分としては個人的な経験はありません。
Oded

4

@Odedが説明するEAVテーブルに加えて、人々はこのタイプの情報にnosql datbaseを使用します。アプリケーションが、リレーショナルモデルで意味のある部分にはリレーショナルデータベースを使用できず、そうでない情報にはnosqlデータベースを使用できない理由はないことを思い出してください。

3番目の可能性は、顧客が追加したフィールド(Customerfield1、customerfield2など)にいくつかの列を追加し、顧客にその意味を定義させることです。これは、追加する顧客のcomnfiguarbleフィールドの数に対してのみ機能するため、2つまたは3つしか必要としないが数百が必要な場合はまったく機能しないと予想される場合は問題ありません。


1

UDF1、UDF2、UDF3を含むテーブルを持つ最初のアプリケーションはありません。他の提案(EVAまたはNoSQL)ははるかに優れています。

RDBMSに応じて(SQL Serverがこれを提供します)、正規化から抜け出し、XML形式または単なるテキストのデータを保持するフィールドを持つことができます。これを管理するには、コードに依存する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.