3

この質問は、この質問に対する実用的な解決策を見つける試みです。

SQL データベースのセミスキーマレス設計が必要です。ただし、柔軟性を制限して、SQL パラダイム全体に押し込むことはできます。スキーマのないデータベースへの移行は、将来の選択肢になるかもしれませんが、今のところ、私は SQL にこだわっています。

SQL データベースにテーブルがあります ( と呼びましょうFoo)。これに行が追加されると、これに任意の数の「メタ」フィールドを格納できる必要があります。例としては、タグ、コラボレーターなどの任意のメタデータを添付する機能があります。すべてのフィールドはオプションですが、問題はそれらが異なるタイプであることです。数値の場合もあれば、テキストの場合もあります。

、、、などのフィールドFooを持つテーブルにリンクするシンプルなデザインは直接的に見えますが、アレックスが最後の回答で言及した EAV モデル全体に​​降りかかりかなり無駄に見えます。また、これが大きくなったときのクエリはかなり遅くなると思います。ただし、このテーブルで何かを検索したり並べ替えたりすることは期待していません。必要なのは、 から行を取得するときに、これらの追加の属性も取得できるようにすることだけです。OptionalValuesnamevalue_typevalue_stringvalue_intvalue_dateFoo

この種のセットアップを SQL データベースに実装するためのベスト プラクティスはありますか、それとも単に全体を見誤っているのでしょうか。

4

1 に答える 1

1

文字列列「Metafields」をテーブル「Foo」に追加し、そこにメタデータをXMLまたはJSON文字列として保存します。

于 2010-08-01T11:29:14.650 に答える