この質問は、この質問に対する実用的な解決策を見つける試みです。
SQL データベースのセミスキーマレス設計が必要です。ただし、柔軟性を制限して、SQL パラダイム全体に押し込むことはできます。スキーマのないデータベースへの移行は、将来の選択肢になるかもしれませんが、今のところ、私は SQL にこだわっています。
SQL データベースにテーブルがあります ( と呼びましょうFoo
)。これに行が追加されると、これに任意の数の「メタ」フィールドを格納できる必要があります。例としては、タグ、コラボレーターなどの任意のメタデータを添付する機能があります。すべてのフィールドはオプションですが、問題はそれらが異なるタイプであることです。数値の場合もあれば、テキストの場合もあります。
、、、などのフィールドFoo
を持つテーブルにリンクするシンプルなデザインは直接的に見えますが、アレックスが最後の回答で言及した EAV モデル全体に降りかかり、かなり無駄に見えます。また、これが大きくなったときのクエリはかなり遅くなると思います。ただし、このテーブルで何かを検索したり並べ替えたりすることは期待していません。必要なのは、 から行を取得するときに、これらの追加の属性も取得できるようにすることだけです。OptionalValues
name
value_type
value_string
value_int
value_date
Foo
この種のセットアップを SQL データベースに実装するためのベスト プラクティスはありますか、それとも単に全体を見誤っているのでしょうか。