かなり良さそうです。
2つのテーブルにapproved_byを表示します。 MembershipStatusテーブルを保持している場合は、そこに属する必要があります。また、「承認された」という名前は、存在する場合と存在しない場合がある「承認済み」のステータスを意味します。別の名前を思いつくかもしれません...
また、おそらくどのユーザーがどのグループの管理者であるかを識別するテーブルも必要です。そうすれば、誰が承認できるか、そして誰が実際に承認したかを保存するために、データベース側のセキュリティをコード化できます。
また、あなたが示しているように、私は監査履歴をテーブルに保存することの大ファンではありません。組み込みの監査データベースを使用するか、それを別のテーブルに引き出して監査履歴を記録します。
最後に、idとuseridは冗長に見えます。ユーザーIDを使用します。 (他のテーブルと同様)