0

これは長い間私を悩ませてきたものであり、私はまだ答えを見つけることができません.

私は、さまざまな機能を備えた巨大なシステムを持っています。このシステムに共通することは、もちろん、私のusersことができるということです

作成、更新、読み取り、削除

私のシステムのさまざまな部分。

簡単な理由から、次の機能を持つアプリケーションがあるとしましょう。

  • 文書管理
  • ビデオ管理
  • ユーザー管理
  • 販売管理

(これらすべてが独自の個別のテーブルを持ち、必ずしも接続されているとは限らないという点を証明するために、これらをランダムに取ったことに注意してください)。

今、私はある種のロギングシステムを作成したいと考えています。そのため、誰かがエンティティを作成、更新、または削除するたびに、それが記録されます。

今私が見ることができる限り、私はこの2つの方法を行うことができます.

1.

システムにある 4 つの機能ごとにログ テーブルを作成します。ただし、この方法では、システムに追加する新しい機能ごとにログ テーブルを作成する必要があります。ログを作成したい場合は、X 個のテーブルのデータを結合する必要がありますが、これは非常に大きな作業になる可能性があります。

2.

次のようなものを作成できます。

ここに画像の説明を入力

ただし、追加する新機能ごとに列を追加する必要があります。

だから私の質問は、ロギングデータベースアーキテクチャを作成するための最良の方法は何ですか

それとももっと簡単な方法がありますか?

4

2 に答える 2

1

機能ごとに 1 つの target_xx の代わりに、次のようにすることができます。

target_id | target_type
1           video
4           document
5           user
2           user

またはさらに良い。ターゲット タイプを含むテーブルで、target_type にそれぞれの ID のみを挿入します

このようなもの:

ここに画像の説明を入力

于 2016-01-05T10:51:33.013 に答える