データベースにコメントテーブルを作成し、サブコメントも同じテーブルに保存しようとしています。同じテーブルの主キーである CommentId 列にリンクされる "ParentId" という列に外部キー制約を設定します。親コメントの場合、ParentId に null を指定します。これは悪い習慣ですか?もしそうなら、この問題にアプローチするためのより良い方法は何ですか。
3 に答える
これで結構です。考慮しなければならないことの1つは、子のコメントが削除された場合の対処方法です。FK制約は削除を防ぎ、削除をカスケードする一般的な解決策はここでは適切ではないようです。また、親参照をNULLにすることもありません。したがって、おそらく削除されたコメントを保持し、内容をクリアするか、そうでなければ削除済みとしてマークする必要があります。
悪い習慣ではありませんが、コメント者が指摘しているように、後で問題が発生する可能性があります。
コメント オン コメントは論理ツリーに相当するため、Celko の作業をチェックする価値があるかもしれません。
http://www.ibase.ru/devinfo/DBMSTrees/sqltrees.html
とても便利な!
http://msdn.microsoft.com/en-us/library/ms124432(v=sql.100).aspx
SQL Server の場合、これは悪い習慣ではありません。上記の Employee テーブル定義のリンクを参照し、ManagerID 列を参照してください。Microsoft は、SQL サーバーで提供されるサンプル DB でこのシナリオを使用しています。
注意が必要な主なことは、親レコードを物理的に削除できないことです。フラグを使用してソフト削除を使用する必要がある場合があります。