リレーショナル データベースの設計に取り組んでいます。いくつかのテーブルがあり、アプリケーション レベルに複数のユーザーがいます。特定のテーブルの特定のレコードへの変更が、どのユーザーによって、いつ、どのように変更されたかを知る必要があります。ユーザーの情報を保存するためのテーブルがあり、このテーブルもこの動作に含まれます。
どのユーザーがこれらの変更を行ったかをユーザーが確認できるようにするには、SQL データベース設計でこれをどのように行う必要がありますか?
リレーショナル データベースの設計に取り組んでいます。いくつかのテーブルがあり、アプリケーション レベルに複数のユーザーがいます。特定のテーブルの特定のレコードへの変更が、どのユーザーによって、いつ、どのように変更されたかを知る必要があります。ユーザーの情報を保存するためのテーブルがあり、このテーブルもこの動作に含まれます。
どのユーザーがこれらの変更を行ったかをユーザーが確認できるようにするには、SQL データベース設計でこれをどのように行う必要がありますか?
For starters you can look at sql server version tracking mechanisms (row versioning or row changes). After that you can look at sql server audit features. I think sql server audit would be the best for your needs.
On the other hand, if you want to make ad-hok versioning then YOU MUST NOT go to triggers. Imagine, you must create triggers for all tables for inserts, updates and deletes. This IS bad practice.
I think ad-hoc versioning should be avoided (degradation in performance and difficult to support) but in case it cannot be avoided, I would surely use CONTEXT_INFO in order to track current user and then I would try to create something that would read the schema of the table, I would get changes by using sql server change tracking mechanisms and store that in a tablename, changeduser, changedtime, column, prevValue, newValue style. I would not replicate each and every table for the changes.