個々のレコードのメタデータをデータベースに保存するためのベストプラクティスは何ですか?
データベース内の多くのテーブルの作成時刻や最終更新時刻などの一般的なメタデータを保存する必要があります。私はいくつかの異なる解決策を見つけました:
メタデータをテーブルに直接保存します。
長所:
- メタデータはレコードに直接リンクされています
- メタデータを取得するために結合は必要ありません
短所:
- 多くの重複列が必要です(継承が使用されている場合を除く)
- メタデータとビジネスデータは分離されていません
で一般的なメタデータテーブルを作成し、ソフト外部キーを使用してデータを正しいテーブルとレコードにリンクします。
長所:
- 列の重複なし
- メタデータはビジネスデータから分離されています
短所:
- メタデータとデータ間の直接リンクなし(FKは使用できません)
- 結合には追加の条件が必要です
メタデータを必要とするテーブルごとに個別のメタデータテーブルを作成します。
長所:
- メタデータはレコードに直接リンクされています
- メタデータはビジネスデータから分離されています
短所:
- 追加のテーブルがたくさん必要です
- 多くの重複列が必要です(継承が使用されている場合を除く)
ここで述べたものよりも多くのオプション、長所または短所はありますか?そして、このメタデータを保存するためのベストプラクティスは何ですか?
hstore
またはJSON
列を使用して問題を解決できますか?