まず、私はthis StackOverflow questionを読んだので、それに向けて私を指摘する必要はありません。テーブルに依存しない外部キー?
私は今、同様の問題に取り組んでいます。具体的には、db内の他のテーブルに関する監査情報を格納するために使用される監査テーブルを持つデータベースがあります。この表の基本的な形式は次のとおりです。
ID、実体識別子、EntityTypeID、ActionTypeID、今のDateTime
、あなたが推測できるように、実体識別子の一般的な性質は、このテーブルへとからの外部キー関係がにトリッキーであることを意味しますORMシステムを使用して特にあなたと管理してください。
もちろん、不快な作業の解決策は、必要なクエリを手動で行い、それがうまくいくところでORMのものを使用することです。
しかし、この問題は、Table:IDを定義するための外部キー関係を可能にするRDBMSが存在するかどうかという疑問を私の心に浮き彫りにしました。そして:つまり
は、RDBMSで、EntityTypeID列かもしれないが、そのような
'1テーブルA' などの値が含まれている 'TableBのを:somekey'
そう...
がありますこれを行うRDBMS?
あなたは正しいです - 監査は通常 "歴史的"を意味します。 FKは作成できません。 –
私はそれであなたが言っていることの論理を見ています。 しかし、私は削除に関してあなたに同意しません。ほとんどの場合、私が扱っているデータベースのすべてではないにしても、レコードを「削除する」というシステム内のさまざまなテーブル間には、実際に削除するのではなく、ブール値の列を使って削除とマークするという関係がたくさんあります。 このアプローチは、RDBデータを本当に削除してはいけないという私の考えにも基づいています。 – OOPMan
@OOPMan:「何も削除しないでください」という視点にかなり同情しています。時間的データベースは、それを明示的に(または可能に)サポートします。しかし、私は、レコードが実際に消えることを意味するDELETEという用語の従来の定義を使用していました。 –