1

管理者と教師が必要に応じて試験を削除できるようにしてほしい。試験を削除する手順は次のとおりです。

  • 管理者は検査を削除できます
  • 教師詐欺は、自分が作成した試験のみを削除します

しかし、私の上司は次のように述べています。

削除は検査データにとって非常にデリケートなアクションです。十分ご注意の上ご使用ください。機能は達成できますが、強い条件付き制約があります。非アクティブは、人々が愚かなことをしないように、非常に賢明です。

私の質問は、試験を削除したアプリケーションを作成した経験のある Web 開発者である場合、他にどのような制約に従う必要があるかということです。データベースの「アクティブ」列を「1」(アクティブ)または「0」(非アクティブ)に設定することにより、教師と管理者が試験を非アクティブ化およびアクティブ化できるようにします。しかし、必要に応じて試験を削除することも望んでいます。

ありがとうございました

4

3 に答える 3

4

人々はあなたの質問にあまり満足していないようです。しかし、私はあなたの問題を理解していると思います。私は何も削除しません。レコードを表示または非表示にするだけです。誰かが間違いを犯して何かを削除した場合、それは永続的ではありません。もちろん、検査をリストするときは常に、表示されているものだけをリストする必要があります。それが役に立てば幸い。

于 2012-10-25T00:17:54.393 に答える
1

も削除しないでください(特にあなたの場合)、DELETEを試みた人をログに記録します-コードでそれらを表示不可としてマークするだけです。それ以外の場合は「監査証跡」と呼ばれ、後で StackOverflow に感謝します。

于 2012-10-25T00:21:27.073 に答える
1

ここで多くの人に同意します。内容がない場合を除き、検査を削除しないでください。ただし、exams テーブルに 2 つの新しい列を設定できます。

  1. date_deletedデフォルトは NULL、データ型は DATETIME
  2. deleted_byデフォルト NULL、データ型 INT (削除するユーザー ID への FK)

そのため、許可されたユーザーに最初の値をUTC_TIMESTAMP()自分のユーザー ID に、2 番目の値を設定させることができます。WHERE ... AND date_deleted IS NULLまた、 orのような where 句によって、いわゆる削除された試験をクエリから除外していることを確認してくださいWHERE date_deleted IS NULL

上記の最初の列が主な仕事をします。検査が削除されたことを知らせるだけでなく、削除された日時も保持されます。一方、2 列目は、誰がそのアクションを実行したかを示します。どちらもさまざまな状況で役立つと思います。

于 2012-10-25T00:32:48.027 に答える